Forum: Mikrocontroller und Digitale Elektronik CTC vor oder nach Interrupt


von Thomas (Gast)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

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
Noch kein Account? Hier anmelden.