Optimierungslevel & Funktionalität ?!
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. 8-[
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