Hallo, habe mal ne grundsätzliche Frage zu Timern, im speziellen gehts mit im moment um den Timer0 des Tiny15 1.) Wenn der Timerinterrupt ausgelöst wird, startet der Timer dann automatisch neu oder muß ich ihn wenn er endlos laufen soll immer wieder von hand (also in den ISR) starten? 2.) Kann mir jemand ne Formel sagen mit der ich die Zeit berechne? im prinzip ist mir das schon klar, habe bisher folgendes verwendet: "1/1000000 Hz 1024 Vorteiler TCNT0H:TCNT0L = xx ms" hab ich irgendwo im netz gefunden, aber im Datenblatt steht irgendwas von Up-Counter, also wäre mein wert von TCNT ja 255-Wert wenn der Interrupt beim überlauf von 255 auf 0 ausgelöst wird oder hab ich da nen Denkfehler? Gruß Malte.
nein, du hast da keinen denkfehler - und der timer startet jedes mal von neuem. die zeit wird folgender maßen berechnet: 1/TimerFrequenz * (maxTimervalue-reloadwert). maxtimervalue is bei 8 bit 255 und bei 16 bit 65535. den reloadwert kannst du, musst du aber nicht beim interrupt in die bzw. das zählregister des timers laden.
Hi, was passiert denn wenn ich z.B. den Counter auf 200 stelle, dann rennt der Timer ja beim ersten durchlauf von 200 bis 255, dann überlauf => Interrupt wird ausgelöst, ist der Counter danach dann 0 oder wieder 200? Wenn er null wäre, würde der nächste Interrupt ja nicht nach 55 sondern erst nach 255 Zyklen eintreten oder? Wenn ich das also richtig verstanden habe muss ich in der Interrupt routine nur immer wieder meinen Counter neu setzen (in meinem Beispiel also auf 200) korrekt? Gruß Malte.
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.