mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt für PD2 löst aus nachdem GICR wieder an


Autor: Thomas Frosch (tfreal10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi habe ein Programm dass folgendermaßen arbeitet

PD2 löst einen Interrupt aus
dieser Interrupt beendet das auslösen an PD2 durch
       ldi temp, 0b00000000
       out GICR, temp
und startet einen Timer der alle paar µs wieder einen Interrupt auslöst 
und fragt jedesmal den Status an PD2 ab der sich ständig ändert
wenn der Overflow vom Timer 14 mal ausgelöst wurde, wird der Timer 
gestopt und INT0 wieder angeschalten
        ldi temp, 0b01000000
        out GICR, temp
nun soll gewartet werden bis PD2 wieder per positiven Flanke den 
Interrupt auslöst allerdings wird nicht gewartet. Der Interrupt wird 
sofort ausgelöst obwohl nach dem "einschalten" von INT0 keine Änderung 
am PD2 vorgenommen wurde! Woran liegt dass und wie kann ich dass 
beheben?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupt Flags werden immer gesetzt, wenn das betreffende Ereignis 
eintritt, auch dann, wenn der Interrupt nicht freiegegeben ist! 
Ansonsten wäre kein Polling möglich. Du musst vor der erneuten 
Interrupt-Freigabe das Flag löschen.

Autor: Thomas Frosch (tfreal10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh super

und wie kann ich das Flag löschen?

hab das versucht aber hilft nicht

ldi temp, 0b00000000 ;Interrupt Flags löschen
out GIFR, temp

und was ist polling?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternatively, the flag can be cleared by writing a logical one to it.

Du musst eine 1 reinschreiben ! Pervers, aber das muss sein.

Autor: Thomas Frosch (tfreal10)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sehr schön funktioniert danke für die super unterstützung

aber echt da soll jemand drauf kommen!?!? eine 1 schreiben tz tz tz

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.