Verständnisproblem Mega8 INT0

Gast #3039723
Lesenswert?
• ▲
▼
Hallo,

im Datenblatt zum Mega8 steht das Bit6 (INTF0) im GIFR Regsister gesetzt 
wird wenn ein INterrupt an INT0 erkannt wurde. D.h. im Register steht 
dann eine "1" ?

Weiter steht im Datenblatt:

"... the flag can be cleared by writing a logical one to it"

Weshalb wird das Flag mit einer "1" zurück gesetzt, wenn doch eine "1" 
bedeutet das ein Interrupt erkannt wurde? Ich hätte gedacht das 
Zurücksetzen erfolgt mit einer "0" ?

Schonmal vielen Dank,

dani
#3039789
Lesenswert?
• ▲
▼
Weil man für diese Register einen Mechanmismus benötigt, mit dem man 
gezielt ein einzelnes Bit in lediglich einem Taktzyklus löschen kann 
ohne die anderen Bits zu beeinflussen.

Das würde zwar bei Register auch so funktionieren, die in Erreichbarkeit 
der CBI/SBI Befehle liegen, aber ausserhalb dieses Bereiches nicht mehr. 
Dort müsste man dann durch einen kompletten Update-Zyklus

    Register lesen
    Bit mittels einer UND-Operation löschen
    Register schreiben

durch. Und in dem Fall würde man dann Interrupts-Bits die zwischen dem 
"Register lesen" und "Register schreiben" von der Hardware gesetzt 
werden, wieder verlieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren