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???
Gast
#817247
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 | |
gruss gerhard
Perfekt, vielen Dank, das war einfach, ist leider nur nirgendwo dokumentiert... aber funktioniert!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.