Kann mir jemand sagen, ob bei einem Atmel bei einem Campare Match Interupt mit Clear Timer on Compare Match das TCNT Register(der Timer) VOR oder NACH dem Aufrufen der ISR(Interruptserviceroutine) auf 0 zurückgesetzt wird? Habe nämlich irgendwie den Eindruck, das dies dannach passiert, weil ich abhängig vom Code in der ISR ziemliche Timingdrifte habe. Müßte ich dann ggf. am Anfang der ISR den TCNT manuell auf 0 zurücksetzen? Oder gibt es ein Einstellungsregister mit dem ich explizit irgendwelche Prioritäten festlegen kann?
Thomas schrieb: > Kann mir jemand sagen, ob bei einem Atmel bei einem Campare Match > Interupt mit Clear Timer on Compare Match das TCNT Register(der Timer) > VOR oder NACH dem Aufrufen der ISR(Interruptserviceroutine) auf 0 > zurückgesetzt wird? der Controller weiß überhaupt nicht, wann die ICR fertig ist. Beim compare wird das ISR-Flag gesetzt und das Register zurückgesetzt.
Thomas schrieb: > Habe nämlich irgendwie den Eindruck, das dies dannach passiert Beim CTC wird zuerst OCFx Flag gesetzt, danach wird ISR angesprungen. OCFx Flag wird aber nicht sofort nach dem Match zwischen TCNT und OCRx gesetzt, sondern erst beim nächsten Timer Clock Takt. Zwischen 2 CTC Ereignisen bleibt die Zeit immer gleich, der Aufruf der ISR selbst kann aber zwischen 1 und 3 CPU Takte verspätet erfolgen. > weil ich abhängig vom Code in der ISR ziemliche Timingdrifte habe. Das ist der Unterschied zwischen CPU Takt und Timer Takt. Da dein Timer (wahrscheinlich) mit Vorteiler läuft, ist ein Timer Takt = fCPU / Vorteiler. Auf jeden Fall erfolgt CTC und das eigentliche setzen des OCFx Flags auf ns genau, keine Sorge.
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.