mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Interrupt


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit einer 1

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.