Forum: Mikrocontroller und Digitale Elektronik INT0 auslösen


von Name N. (mar75)


Lesenswert?

Hallo Leute,

weiss jemand, was passiert, wenn INT0 durch externe Bedingung aktiviert 
wird. Und bevor die Anweisungen innerhalb INT0 abgearbeitet sind, die 
Bedingung für INT0 wieder aktiv.

Danke

von Matthias L. (Gast)


Lesenswert?

>Und bevor die Anweisungen innerhalb INT0 abgearbeitet sind, die
>Bedingung für INT0 wieder aktiv.

Zwei Möglichkeiten:
1)
Wenn du verschachtelte Interrupts nicht zulässt (Normalfall), dann wird 
die INT0-ISR zuende abgearbeitet, ins Hauptprogramm zurückgesprungen, 
dort ein Befehl (asm) abgearbeitet und erneut in die INT0-ISR 
gesprungen...

2)
Mit verschachtelten Interrupts (nested int.) sollte ein erneuter Aufruf 
der INT0-ISR erfolgen, was gewohnlich fürher oder später zu einem 
Stapelüberlauf führt...

von Ralf (Gast)


Lesenswert?

Hi,

> weiss jemand, was passiert, wenn INT0 durch externe Bedingung aktiviert
> wird. Und bevor die Anweisungen innerhalb INT0 abgearbeitet sind, die
> Bedingung für INT0 wieder aktiv.

Erwartest du auf so einen Post wirklich eine Antwort? Woher sollen wir 
wissen, welcher Prozessor/Controller? Woher sollen wir wissen, was du 
eigentlich wissen willst? Aus deinem Text ist für mich (und 
wahrscheinlich alle anderen auch) überhaupt nicht klar, was du meinst.

Deshalb Standard-Antwort: Lies das Datenblatt, und poste deine Frage 
deutlich.

Ralf

von Name N. (mar75)


Lesenswert?

Danke für die Antwort

von Name Name (mar75) (Gast)


Lesenswert?

> weiss jemand, was passiert, wenn INT0 durch externe Bedingung aktiviert
> wird.

Beim AVR ist das etwa so (Ext. Int 0 auf steigende Flanke eingestellt):

- Pegelwechsel von 0 auf 1 an INT0 triggert Int-Logik, diese setzt das
  entsprechende Bit in GIFR

- Interrupt-Logik prüft, ob das entsprechende Bit in GIMSK gesetzt ist,
  also ob dieser Interrupt überhaupt "scharf" ist

- Interrupt-Logik prüft, ob das I-Bit im SREG gesetzt ist, also ob
  Interrupts überhaupt zugelassen sind.

- wird der Interrupt als "erlaubt" akzeptiert, dann:

- bereits laufender Befehl wird zu Ende ausgeführt

- aktueller PC-Stand wird auf Stack gelegt

- Interrupt-Flag im SREG wird gelöscht

- dem Interrupt entsprechender Eintrag in Interrupt-Sprungtabelle wird
  angesprungen, dort hat der Programmierer einen Sprung zur selbst
  geschriebenen Interrupt-Service-Routine (ISR) eingetragen

- das entsprechende Bit in TIFR wird zurückgesetzt, da der vom Interrupt
  ausgelöste "Arbeitsauftrag" ja jetzt abgearbeitet wird.

- die ISR wird aufgerufen und abgearbeitet, sie endet mit dem Befehl
  RETI

- bei RETI wird der PC (ProgrammCounter) vom Stack geholt, worauf das
  Programm an der Stelle weiter machen kann, an der es unterbrochen
  wurde

- bei RETI wird weiterhin das I-Flag im SREG wieder gesetzt, was das
  Abarbeiten weiterer Interrupts ermöglicht, nachdem ein Befehl des
  Hauptprogramms ausgeführt wurde

Da in der ISR meist das SREG verändert wird, dies aber Auswirkungen auf 
das Hauptprogramm haben kann, ist der Programmierer gut beraten, wenn er 
den Inhalt des SREG während der ISR in einer Kopie sichert. Es ist noch 
eine Menge mehr zu beachten, aber danach ist ja hier nicht gefragt 
worden.


> Und bevor die Anweisungen innerhalb INT0 abgearbeitet sind, die
> Bedingung für INT0 wieder aktiv.

Dein Komma ist so gesetzt, dass der Satz keinen Sinn ergibt. Ich weiß 
nicht recht, was Du meinst. Ich vermute mal, Du meinst Folgendes:

Falls während der Abarbeitung der ISR ein weiteres Ereignis stattfindet, 
das einen Interrupt auslösen will, dann wird dies erst dann ausgewertet, 
wenn das I-Flag im SREG wieder gesetzt ist. Treten bis dahin mehrere 
gleiche Ereignisse auf, dann gehen Interrupts verloren, da die Logik nur 
einen (gleichartigen) Interrupt speichern kann. Dies ist dann aber schon 
ein gutes Beispiel für schlechtes Programmieren bzw. schlechte 
Problemanalyse.

von juppi (Gast)


Lesenswert?

@Name Name (mar75)
eine Reaktion von dir wäre nicht schlecht.

Name Name (mar75) (Gast)

Ich glaube dies ist alles richtig.

Es sollten sich andere ein Beispiel daran nehmen,
da ein Fragesteller aus Unkenntnis nicht immer eine exate Frage stellen 
kann.

MfG

von Name Name (mar75) (Gast)


Lesenswert?

Er hat sich doch bedankt, sogar sehr schnell, bereits 13 Minuten vor der 
Antwort.... ;-)

Ach Juppi, wenn Du wüsstest, wer der Gast war/ist, würdest Du anders 
darüber denken/schreiben. Denn mit Dem (also mir) hast Du Dich auch 
schon angelegt.

Nicht Jeder, der sich unverständlich ausdrückt, hat (wie Du) ein 
gravierendes Erlebnis gehabt und musste ein zweeites mal Lesen und 
Schreiben lernen. Oft ist es einfach mal Faulheit.

Namen sind zwar oft Schall und Rauch, aber wer sich mit "Name" und 
"Name" einloggt, strotzt nicht gerade vor Kreativität und hat es 
eigentlich nicht besser verdient. Deshalb hatte ich mich für diese 
Antwort auch mal so genannt, in der Hoffnung, durch die Blume zu 
provozieren (bei einem "Klaus Meier", der vermutlich ganz anders heißt, 
hätte ich das nicht gemacht). Die Moderatoren, die mich anhand der IP 
identifizieren können, mögen mir diese Provokation verzeihen..

MfG, Name Name mar75, der Falsche

von juppi (Gast)


Lesenswert?

Hallo
>Name Name (mar75)
>Datum: 19.05.2008 11:41

>Danke für die Antwort

habe es für eine Antwort darüber gehalten.


Name Name mar75, der Falsche
dachte ein anderer Trittbrettfahrer
 Die IP  ist doch kein Problem.

Im Streitgespräch lernt mann Meinungen kennen.

Mein ganzes Leben lang habe ich Meinungen als Wahrheit
nur anerkannt wenn Sie beweisfähig waren.
Wenn 10 Personen die gleiche Meinung haben, wird aus einer Lüge keine
Wahrheit.(oder umgedreht)

Man sagt von mir "ich bin nicht Streitsüchtig sondern Streitfähig"

Ein Spruch von mir „Möglich Unmögliches möglich zu machen".
auch dieser Spruch hat scon für Wirbel gesorgt.

aber schluß
hier geht es um INT0!?

MfG

von juppi (Gast)


Lesenswert?

Uhu Uhuhu (uhu)

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.