Hallo!! Ich hätte da mal eine Anfängerfrage bzgl. Timer: Nachdem ich den Timer initialisiert habe und die Interrupts frei gebe mit sei(), wird beim nächsten Zählschritt sofort in die ISR gehüpft. Nachdem die ISR abgearbeitet wurde, läuft der Timerinterrupt korrekt - d.h. bei einem nächsten Zählvorgang (Vergleichswert z.b. 0xF7) wird der Interrupt bei 0xF7 ausgeführt. Was mache ich falsch, dass die ISR sofort nach der Initialisierung und der Interruptfreigabe aufgerufen wird? Danke Birgit
Birgit wrote: > Hallo!! > > Ich hätte da mal eine Anfängerfrage bzgl. Timer: > Nachdem ich den Timer initialisiert habe und die Interrupts frei gebe > mit sei(), wird beim nächsten Zählschritt sofort in die ISR gehüpft. Dann hast Du vermutlich erst den Timer gestartet (Vorteiler-Wert gesetzt) und dann erst den OCR-Wert gesetzt, worauf der Timer beim Start den OCR-Wert 0 vorgefunden hat und darauf (ganz korrekt) seinen Interrupt angemeldet hat... > Nachdem die ISR abgearbeitet wurde, läuft der Timerinterrupt korrekt - > d.h. bei einem nächsten Zählvorgang (Vergleichswert z.b. 0xF7) wird der > Interrupt bei 0xF7 ausgeführt. > Was mache ich falsch, dass die ISR sofort nach der Initialisierung und > der Interruptfreigabe aufgerufen wird? Erst Vergleichswert setzen, dann (mittels Vorteiler) Timer einschalten. Kann nicht ausgeschlossen werden, dass noch ein "alter" Interrupt in TIFR steht, dann vor dem Setzen von TIMSK eine Eins (keine Null) in das entsprechende Bit von TIFR schreiben, um es zu löschen. > > Danke > Birgit Nix zu danken ...
noch eine frage: kann ich den counter auch wieder stoppen, wenn ich den Vorteiler auf 0 setze??
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.