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:
wobei motortick von einem Timer hochgezählt wird und mot1,2 die Intensität des Signals verändert.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);
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