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


von Thomas F. (tfreal10)


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?

von Johannes M. (johnny-m)


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.

von Thomas F. (tfreal10)


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?

von holger (Gast)


Lesenswert?

Alternatively, the flag can be cleared by writing a logical one to it.

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

von Thomas F. (tfreal10)


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

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.