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?
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.
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?
Alternatively, the flag can be cleared by writing a logical one to it. Du musst eine 1 reinschreiben ! Pervers, aber das muss sein.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.