Hallo, ich habe eine globale Variable zaehler: int zaehler = 0; Dann wird diese in einer Interruproutine erhöht: SIGNAL(SIG_OVERFLOW0){ zaehler++; } Aber in main() ist sie immer = 0: int main(void){ DDRB = 0xFF; char wort = 0x20; int richtung = 0x01; TCCR0 = (1<<CS01)|(1<<CS00); TIMSK = (1<<TOIE0); sei(); while(1){ if (zaehler == 226){ PORTB = 0x11; Die Variable wird definitiv erhöht, aber wenn ich in main() darauf zugreifen will ist sie 0. Danke
Hab da schon mal was gelesen, aber vor einem halben Jahr hats auch so geklappt. Deswegen hab ich das ausgeschlossen. Ist WinAVR strenger geworden?
AndreB wrote: > Hab da schon mal was gelesen, aber > vor einem halben Jahr hats auch so geklappt. Super. Und anstatt dem Thema gruendlich nachzugehen...
Wenn es vor einem Jahr schonmal geklappt hat, dann hast du damals nur Glück gehabt oder die Optimierung des Compilers ausgeschaltet. Lies den ISO-C-Standard bzgl. Schlüsselwort "volatile"...
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.