Timer OCF0 Flag zurücksetzen

OP #4646501
Hallo,

ich versuche jetzt mit einer Aufgaben-Lösung klar zu kommen, die mir 
nicht ganz logisch erscheint. Es geht um Signal Erzeugung mit Timer0 in 
CTC Mode mit Atmega AVR.

Die Lösung ist als jpg Bild angehängt. Was mir dabei nicht klar ist, 
warum wird OCF0-Flag durch 1 setzen gelöscht?

wenn als erstes die Warteschleife durchgeht:

while(!(TIFR&(1<<OCF0))); wird sie ja schon abgebrochen wenn OCF0=1.

danach kommt aber die Zeile: TIFR = (1 << OCF0);

wozu, wenn der Flag schon sowieso 1 ist?

sollte es nicht ehe heißen: TIFR &= ~(1 << OCF0);// Flag 0 setzen?

wo liegt das Denkfehler bei mir?

würde mich sehr über ein Tipp freuen.
Angehängte Dateien:
Alex S. schrieb:
> warum wird OCF0-Flag durch 1 setzen gelöscht?

"OCF0A is cleared by hardware when executing the corresponding interrupt
handling vector. Alternatively, OCF0B is cleared by writing a logic one 
to the flag."
1
while((TIFR&(1<<OCF0))==0);

Das Programm bleibt solange an dieser Stelle bis das OCF0-Flag gesetzt 
wurde. Ist dies der Fall, wird ein Pin an PORTC getoggelt, das Flag 
zurückgesetzt und das ganze wiederholt.
Vermutlich wird in einem bestimmten Intervall eine LED 
ein-/ausgeschaltet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.