Forum: Mikrocontroller und Digitale Elektronik Timer1: Compare


von Sebastian (Gast)


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

von johnny.m (Gast)


Lesenswert?

Interrupt-Flags werden gelöscht, indem man eine 1 hineinschreibt, und 
keine 0.

von Sonic (Gast)


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.

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.