AVR: OCR0A = TCNT0; => Interrupt?

Gast #1787921
Hallo zusammen,

wollte mal fragen, ob ein Compare-Match "erkannt" wird, wenn man manuell 
das Compare-Register mit dem zugehörigen Zählerstand beschreibt.
Also wird unmittelbar nach
OCR0A = TCNT0;
ein Interrupt ausgeführt (vorausgesetzt natürlich OCR0A ist NICHT 
double-buffered, und der Interrupt ist "freigeschaltet")?

Vielen Dank
Bernd
#1787940
Würdest Du bitte angeben, von welchem µC Du redest?  Dass es ein AVR 
ist, ist anzunehmen.  Beim 88/168/328P findet sich im Datenblatt unter 
TCNT0:
1
Writing to the TCNT0 Register blocks (removes) the Compare
2
Match on the following timer clock. Modifying the counter (TCNT0) while the counter is running,
3
introduces a risk of missing a Compare Match between TCNT0 and the OCR0x Registers.
Es klappt bei diesem Typ also nicht - jedenfalls nicht bei Timer 0.  Für 
die anderen darfst Du selbst nachsehen.  Ist ja nicht groß, der Absatz 
zu TCNT in der Registerbeschreibung.

EDIT:  Es findet sich sogar genau die Antwort auf Deine Frage im 
besagten Datenblatt, nämlich
1
12.5.3 Using the Output Compare Unit
2
 [...] If the value written to TCNT0
3
   equals the OCR0x value, the compare match will be missed, resulting in incorrect waveform
4
  generation.
und aus dem Kontext geht hervor, dass das für alle Modes gilt.
#1787954
Hc Zimmerer schrieb:
> Es findet sich sogar genau die Antwort auf Deine Frage
> [...] If the value written to TCNT0

Das war eben nicht die Frage, sondern es soll umgekehrt OCR0A mit dem 
Zählerstand beschrieben werden.

Im Datenblatt kann ich dazu nichts finden, aber ohne Double Buffering 
(also im CTC-Modus) sollte das funktionieren.

Grüße, Peter
#1787963
Stimmt, Du hattest die andere Richtung gefragt.  Ja, da sollte es gehen. 
Der Interrupt kommt allerdings nicht unmittelbar beim Compare Match, 
sondern beim nächsten Timer-Takt (also wenn der Timer 1 weiter ist).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.