Hallo liebes Forum! Könnte mir mal jemand bei ner Übersetzung helfen bzw. den Text erklären? Originaltext Atmel Datenblatt ATMega8: ? Bit 7 ? INTF1: External Interrupt Flag 1 When an event on the INT1 pin triggers an interrupt request, INTF1 becomes set (one). If the I-bit in SREG and the INT1 bit in GICR are set (one), the MCU will jump to the corresponding Interrupt Vector. The flag is cleared when the interrupt routine is executed. Alternatively, the flag can be cleared by writing a logical one to it. This flag is always cleared when INT1 is configured as a level interrupt. meine Übersetzung: Wenn ein Ereignis am INT1 Pin eine Interruptanforderung auslöst, wird INTF1 gesetzt = 1. Ist das I bit im Statusregister und das INT1 bit in GICR gesetzt =1, springt die CPU in den zugehörigen Interruptvector. das Flag (also INTF1) wird gelöscht wenn die Interruptroutine ausgeführt ist.(Also nach deren Abschluss =reti) Jetzt kommts: Alternativ kann das Flag gelöscht werden durch das beschreiben mit einer logischen 1. (Hä? Was denn nun? ist gelösht nun 1 oder 0?) Das Flag ist immer gelöscht, wenn INT1 als Level-Interrupt konfiguriert ist. soweit-sogut: verstanden hab ich es nicht Ich hab hier im Forum irgendwo gelesen, das man dieses Flag vor Beendigung des Interrupt zurücksetzen soll, damit Ereignisse die bei der Ausführung der Routine auftreten und dann weitere Interrups auslösen würden nicht zum Zuge kommen. Diese anstehenden Ereignisse sollen dadurch gelöscht werden. Könnte mir einer der Profis hier das mal näher erklären? Vielen Dank Gruss Holger
ist doch fast alles richtig. Das Flag wird allerdings direkt gelöscht, wenn der Int angenommen wird, also der Sprung zum entsprechenden Vektor ausgeführt wird. Bei reti wird das globale I-Flag wieder gesetzt, da normalerweise während einer ISR keine anderen Ints ausgeführt werden (beim Eintritt in eine ISR wird das I-Flag erstmal automatisch gelöscht). Sollte während der Int-Laufzeit das entsprechende Int-Ereignis schon wieder aufgetreten sein, wird dieses im entsprechenden INTFx gespeichert, somit erfolgt direkt nach reti + 1 weiterer Befehl wieder ein entsprechender Int. Will man das vermeiden, kann man direkt vor reti das Flag löschen.
Hallo crazy horse, Danke für deine Hilfe. Eine Frage bleibt nu noch offen: Wie ist das Bit INTFx denn nun gelöscht? Das ist ja also sowas wie ein Stapel: tritt wärend ISR ein weiteres Ereignis ein wird die Anforderung in INTFx obenaufgepackt und dann ausgeführt wenn es wieder erlaubt ist. Hab ich verstanden. Nur wie muss ich das Bit denn nun beschreiben wenn ich das nicht will? Mit 1 oder mit 0? Danke Für Deine/Eure Gedult mit mir! gruss Holger
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.