Timer1: Compare

Gast #437180
Lesenswert?
• ▲
▼
Hallo!

Habe bei meinem ATmega8 den Timer1 laufen und im Compare-Register einen 
bestimmten wert eingetragen. Sobald der Timer den Wert erreicht hat 
schreibt er das Bit im Compare Interrupt Flag (oder so ähnlich...) doch 
dieses kann ich nicht wieder löschen. Da der einzige Befehl, um auf 
dieses Register zugreifen zu können (größer als 0x1F) OUT ist, kann ich 
nicht das einzelne Bit löschen (das geht nur bei Registern mit 
I/O-Adresse bis 0x1F)
Habe es mit OUT probiert und einfach ein leeres Byte in das Compare 
Interrupt Flag geschrieben aber die "1" beim Bit, das angibt, dass der 
Compare-Wert erreicht wurde, lässt sich nicht löschen.
Wie lässt sich das Problem lösen?
Wenn ich das "richtig" per Interrput abfange, kann ich das doch auch 
nicht anders löschen oder etwa doch?

MfG,
Sebastian
Gast #437192
Lesenswert?
• ▲
▼
Wie in allen Datenblättern mehrfach angegeben ist, kann man (INT-) Flags 
durch schreiben einer '1' löschen (wie oben gesagt), oder eine leere 
INT-Routine (mit reti bei Assembler) durchlaufen lassen.

Antwort schreiben

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.

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.