Hallo, kann mir jemand erklären was es mit dieser Bestätigung genau aufsich hat, was passiert wenn man es nicht macht, wird nach dem beenden mittels reti kein weiterer Interrupt mehr aufgerufen oder landet man in einer Endlosschleife da immer wieder in die Interruptroutine eingesprungen wird nachdem man Sie verlassen/beendet hat? 20.9.2. Interrupt behavior When an interrupt occurs, an interrupt flag bit is set in the corresponding MOb-CANSTMOB register or in the general CANGIT register. If in the CANIE register, ENRX ENTX ENERR bit are set, then the corresponding MOb bit is set in the CANSITn register. To acknowledge a MOb interrupt, the corresponding bits of CANSTMOB register (RXOK, TXOK,...) must be cleared by the software application. This operation needs a read-modify-write software routine. To acknowledge a general interrupt, the corresponding bits of CANGIT register (BXOK, BOFFIT,...) must be cleared by the software application. This operation is made writing a logical one in these interrupt flags (writing a logical zero doesn’t change the interrupt flag value).
Die "Bestätigung" ist nötig, um dem µC mitzuteilen, daß der Interrupt bearbeitet wurde und die Interruptquelle den nächsten Interrupt auslösen darf.
Viele Interruptquellen bestätigen bei AVRs automatisch, sobald der Interrupt-Handler aufgerufen wird. Es gibt aber ein paar Peripheriemodule, bei denen diese Bestätigung mehr auslöst als nur die Freigabe der Interrupt-Logik. Bei denen muss man das im Handler zum richtigen Zeitpunkt selbst erledigen.
A. K. schrieb: > Viele Interruptquellen bestätigen bei AVRs automatisch Aber nur die Timer- und Flankeninterrupts. Alle Interrupts mit Daten (CAN, UART, I2C, SPI, USB) tun dies nicht.
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.