Gast
#167691
Mein Problem ist folgendes: Ich steuere ein 8bit parallel adc AD7305 mit einem ATmega32L. Ich erzeuge mit einer LookUp-Table (sin_table[255]={...}) ein 4-phasen wechselspannungs-Signal. Mit den internen ADC des mega lese ich eine Spannung 0...5V ein, wobei 0V einer externen Spannung von -10V entsprechen(links) und 5V einer externen Spannung von +10V entsprechen(rechts) funktioniert auch ganz gut,wenn ich eine richtung Programmiere. Das Programm sieht in etwa so aus(grob) main() { unsigned char sin_table[255]={...}; unsigned char ... unsigned int ... ad7305init(); intern_adc_init(CH0); for{;;} { adc_value = hole_adcWandlungswert(); ... if(X <= Y) { ... ... schrittweite = ...; // schrittweite in der die Tabelle // durchlaufen wird adresse += schrittweite; dacOut(CH_d, sin_table[adresse]); // Kanal A Wert zuweisen dacOut(CH_c, sin_table[64 + adresse]); // Kanal B ... dacOut(CH_b, sin_table[128 + adresse]); dacOut(CH_a, sin_table[192 + adresse]); } } } .... So wie der Code oben sinngemäß widergegeben ist funktioniert alles wunderbar. ABER, und jetzt kommts, wenn ich eine zweite 'if' -Anweisung hinzufüge in etwa so if(x <= y) {...} + if(x > y) {...} dann funktioniert alles nicht mehr richtig. Hat den anschein als würde etwas "übersprechen" in der Adressierung. Habe jedoch auch nach längerer suche keine Verdrahtungsfehler gefunden. Habe die Vermutung, dass der Mege(compiler) bestimmte Feldvariablen überschreibt, so dass das Programm an manchen stellen was vergisst. Kann irgendwer helfen???? bin schon recht verzweilfelt, da die sache eigentlich eine ganz einfahce ist. ich will nur ein Feld durchlaufen nur mit umgekehrter Reihenfolge der adressierung Verdrahtet über A0 und A1.