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
>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...
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
> 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.
@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
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
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
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.