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.