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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.