Forum: Mikrocontroller und Digitale Elektronik Verständnisproblem Mega8 INT0


von dani (Gast)


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

von Karl H. (kbuchegg)


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.

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.