mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupthandling (SPI) beim AT91SAM7


Autor: Bent Mucha (rentabent)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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???

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
dwstatus = AT91C_BASE_SPI->SPI_SR;

gruss
gerhard

Autor: Bent Mucha (rentabent)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Perfekt, vielen Dank, das war einfach, ist leider nur nirgendwo 
dokumentiert... aber funktioniert!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.