Hallo! Kann sich mal bitte jemand dieses mini Progrämmchen ansehen und mir sagen, warum das nicht geht? Möchte nur eine LED anschalten wenn der 8-Bit Counter überläuft! #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL (SIG_OVERFLOW0) { unsigned int i; PORTA = 1; for (i=0;i<50000;i++); } int main (void) { unsigned int i; DDRA = 0xff; sei(); TCCR0 = (1<<CS00)|(1<<CS02); while (1) { PORTA = 2; for (i=0;i<50000;i++); PORTA = 4; for (i=0;i<50000;i++); } } Vielen Dank! Matthias
Matthias, Du mußt das Timer0 Overflow Interrupt aktivieren, TIMSK |= (1<<TOIE0); Du hasst nur den Teiler für den Timer eingestellt falls ich es Richtig sehe.... Dann soll es klappen. Robert
Aber immer noch nicht so, wie er das will, denn sämtliche for-Schleifen werden, bei eingeschalteter Optimierung, vom Compiler wegoptimiert. Siehe dazu avr-libc-FAQ (IIRC sogar Punkt 1)...
Nicht ganz Punkt 1 (das ist "volatile"), aber wie immer hier der Hinweis auf <avr/delay.h>.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.