Gast
#74826
Hallo, ich hab da ein paar Probleme mit WinAVR. Der Compiler läuft zwar ohne Probleme, aber die Programme tun nicht annähernt das was sie sollten. z.B.: #include <io.h> #include <inttypes.h> void delay(uint16_t lauf); void delay(uint16_t lauf) { while (--lauf); } int main( void ) { DDRB = 0xff; // PORTB auf Output PORTB = 0x00; // Alles aus while (1){ PORTB= 0x01; delay(8000); PORTB= 0x02; delay(8000); } } =============================================== Das Programm soll eigentlich LEDs an PortB zum blinken bringen. Leider erzeugt der Compiler ein Programm welchen einfach nur in den ersten beiden Befehlen springt (hab ich mit dem AVR-Studio getestet.) Wenn ich das Programm ohne funktion scheibe, (also den delay in die while-schleife packe) funktionierts. nächstes Beispiel: while (1) { PORTB= 0x01; for (i=0;i>=40000;i++) for (j=0;j>=2;j++); PORTB= 0x02; for (i=0;i>=40000;i++) for (j=0;j>=2;j++); } Hier werden die verschachtelten for-Schleifen einfach ignoriert. Wenn ich statt einer for-Schleife eine while-Schleife nehme, funktioniert es. Ich hab keine Ahnung wodran das liegt. Kann mir jemand helfen?