Hallo Gemeinde!
Seit einer Stunde wieder an meinem ATmega8 Motortreiber sitzend stelle ich gerade erstaunt fest, dass das "Optimization level" des AVR Studios die Funktionsweise meines Codes beeinflusst.
Ich will ein PWM Signal auf 2 Ports ausgeben durch:
Code:
if(motortick < mot1)
MOTOR1_PORT |= (1<<MOTOR1_PIN);
else
MOTOR1_PORT &= ~(1<<MOTOR1_PIN);
if(motortick < mot2)
MOTOR2_PORT |= (1<<MOTOR2_PIN);
else
MOTOR2_PORT &= ~(1<<MOTOR2_PIN);
wobei motortick von einem Timer hochgezählt wird und mot1,2 die Intensität des Signals verändert.
Kompiliere ich mit Optimierungsstufe s, 1, 2 oder 3, sind die Ausgänge immer auf high, mit 0 hingegen funktioniert es richtig prima (allerdings ist die HEX 4 mal so groß).
Eigentlich dürfte doch eine Optimierung die Funktion des Skripts nicht verändern, oder?
Gibt es vielleicht etwas zu berücksichtigen wenn man mit 's' programmiert?
Gruß,
Markus
Lesezeichen