Moin, ich hab da ein Problem, komme da nicht weiter... Ich möchte einen Umsetzer von SPI auf UASRT bauen, also Daten kommen auf dem SPI rein und werden dann an den USART weitergereicht. Mein Problem: Ich hab keine Ahnung, wie ich die Interrupts vom SPI behandeln soll, normalerweise muß man ja einen IRQ nach erhalt "abnicken", also maskieren. Nur wie geht das hier? Sobald ich einen Interrupt (RDRF, RXBUFF, etc) über das SPI_IER aktiviere erhalte ich sofort laufend Interrupts, die ich zwar auch abfangen kann aber nicht wieder maskieren kann... Dadurch verhungert mein USART, hier dringt kaum ein Interrupt durch, er ist quasi tot. Ich kann die Interrupts nur ganz deaktivieren, das ist aber nicht wirklich Sinn der Sache... BTW: Wenn ich nur den NSS_IRQ nutze, dann ist das System nach reset auch erstmal still bis ich vom SPI-Master angesprochen werde. Dann kriege ich laufend IRQs, normal, aber wenn ich fertig bin laufen diese weiter, selbst wenn Master und Slave physikalisch getrennt werden... Ich denke also ich muß den IRQ als "in Bearbeitung" abnicken (so hab ich das mal gelernt), kann ich aber nicht, gibt kein Register hierfür (Interruptmask Register ist ja read-only, kurioserweise ist dies immer 0, egal was ich aktiviert habe..) Any ideas?, bzw. was mache ich falsch???
hallo, hast du das spi interface auch richtig init.? kannst du deine code mal posten? mit der folgenden Zeile wird der Interrupt durch Auslesen des Status-Register bestätigt:
1 | dwstatus = AT91C_BASE_SPI->SPI_SR; |
gruss gerhard
Perfekt, vielen Dank, das war einfach, ist leider nur nirgendwo dokumentiert... aber funktioniert!
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.