Ja, du mußt vor dem re-enablen den entsprechenden aaa-IF löschen.
Der Event am Pin und der Interrupt sind zwei paar Schuhe.
Guten Tag,
ich nutze in einem Mega8 INT0 und INT1. Nun möchte ich den INT1 zu bestimmten Zeiten sperren. Dazu gibt es ja den Befehl Disable. Funktioniert auch, d.h. der Interrupt wird nicht ausgeführt. Soweit ok. Nun muß ich ja INT1 mal wieder freigeben. Jetzt wird aber sofort ein INT1 ausgeführt, unabhängig ob der Eingang geschaltet ist. Offensichtlich merkt sich der Kontroller den aufgelaufenen INT1 während der Disable Zeit. Das möchte ich aber nicht! Alle INT1's sollen während der Disable Zeit ignoriert werden.
Wie kann ich das realisieren??
Vielen Dank
Reinhard
Ja, du mußt vor dem re-enablen den entsprechenden aaa-IF löschen.
Der Event am Pin und der Interrupt sind zwei paar Schuhe.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ja, sowas in der Richtung habe ich schon vermutet.
Aber.. wie mache ich das??
Reinhard
Das Register GIFR ist zuständig
Das Bit INT0 ist 64 = &H40
Das Bit INT1 ist 128 = &H80
Also:
GIFR = GIFR AND &HBF löschen INT0
GIFR = GIFR AND &H7F löschen INT1
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ssuper!!
Vielen Dank für die extrem schnelle Hilfe.
Reinhard
Ergänzung:
Zum Löschen muss lt. Datenblatt eine 1 ins GIFR geschrieben werden.
Also:
GIFR = GIFR OR &H80 => löschen INT1
Reinhard
Beim Zeus, du hast recht, lt. Datasheet ist das so, hoffentlich hört Reinhard noch zu.
(aber ehrlich gesagt, sehr logisch klingt die Erläuterung nicht. Offenbar bewirkt das Setzen durche eine Flanke und das Setzen durchs Programm genau das Gegenteil. eigentlich strange)
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
<...hoffentlich hört Reinhard noch zu
Ja, ich habs ja selbst geschrieben! Jetzt funktioniert es auch so wie es soll.
Das Ganze nennt sich dann Dialektik![]()
Gruß
Reinhard
Ui, bei mir setzt offenbar schon die Demenz ein.Zitat von Reinhard
![]()
Na, hauptsache es klappt
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi PicNick,
ich hab da auch noch ne Frage zum löschen des Int1.
Wenn du das folgendermaßen machst
dann löscht du doch die restlichen Bits des GIFR auch. Wie löscht man denn wirklich nur BIT 7 und 8?Code:GIFR 10011001 & 10000000 ========== 10000000
Gruß
Baui
Lesezeichen