mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CTC vor oder nach Interrupt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thomas (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.