Unterbrüche in SPI Kommunikation

Gast #3728927
Lesenswert?

Geschätzte Forumgemeinde

Ich beschäftige mich mit einem Problem wo ich nicht mehr weiter weiss 
und einer von euch evtl. mir einen Hinweis liefern kann.
Folgendes: Ich kommuniziere über die SPI Schnittstelle eines PIC24 mit 
einem zweiten Baustein. Der Baustein initialisiert die Kommunikation 
über das CS Signal, woraufhin auf dem PIC ein Interrupt ausgelöst wird 
und dieser über die zweite SPI Schnittstelle die Werte eines AD Wandlers 
abfragt. Die empfangenen Werte werden auf dem PIC richtig 
zusammengestellt und dann über die erste SPI Schnittstelle wieder an den 
Baustein zurück geschickt. Dies funktioniert ca. 20mal so wie es soll. 
Und dann bricht der PIC die Kommunikation auf der SPI Schnittstelle 
plötzlich einfach ab. Respektive, der PIC löst keinen Interrupt mehr 
aus. Nach dem dritten CS Puls funktioniert die Kommunikation dann aber 
plötzlich wieder. Fürs einfachere Verständnis meiner Beschreibung habe 
ich einen Bildausschnitt des KO angehängt:
- Dunkelblau: Tx Leitung der SPI Schnittstelle vom PIC zum zweiten 
Baustein.
- Hellblau: Ich habe den Ausgang der LED zum debuggen missbraucht. Ist 
das Signal im High-State läuft die Interrupt Subroutine der SPI 
Schnittstelle auf dem PIC.
- Rot: CS Signal vom zweiten Baustein an den PIC, welches den Start der 
Kommunikation initialisiert.

Das CS Signal hat eine Taktrate von 20kHz. In der Zischenzeit sendet der 
PIC 6 Datenpakete a 16bit zurück an den zweiten Baustein.
Ich kann mir die Unterbrüche nicht erklären. Ist es möglich dass die SPI 
Schnittstelle "überfordert" sein kann und sich dann kurzzeitig aufhängt?

Über einen Hinweis wäre ich dankbar!
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #3728934
Lesenswert?

Don Camillo schrieb:
> Ich kann mir die Unterbrüche nicht erklären. Ist es möglich dass die SPI
> Schnittstelle "überfordert" sein kann und sich dann kurzzeitig aufhängt?
Ich würde sagen: die Software ist das Problem. Welche Interrupts sind 
sonst noch aktiv? Oder läuft da der Watchdog auf? Oder warum wird die 
LED so seltsam angesteuert?
Gast #3728945
Lesenswert?

Insgesamt sind 4 Interrupts aktiv. Die zwei Interrupts der 
Schnittstellen SPI1 und SPI2, die auftreten wenn die kompletten 16bit 
empfangen wurden. Ein Interrupt wird beim Auftreten des CS Signals 
ausgelöst und dann gibt es noch einen der die Spannung am PIC überwacht 
und auslöst, falls diese unter ein gewisses Level fällt.
Gast #3729124
Lesenswert?

Also, wenn ich mir den hellblauen Kanal ansehe, dann sieht es für mich 
aus, als ob Dir dieses Signal auf irgendeinen Zwischenpegel floatet, 
eigentlich ein untrügliches Zeichen dafür, dass aus dem Ausgang 
plötzlich ein Eingang wird.

Da würde ich einmal vermuten, dass der PIC in den Reset geht.
Gast #3729660
Lesenswert?

Oder Brown out wenn die Spannung unter ein eingestelltes Limit geht. 
Wenn noch nicht eingestellt dann schalte den Power On Reset an (bzw. 
aus). Dann sollte die Zeit Low-Zeit nach dem indefinierten Zustand 
deutlich länger (bzw. kürzer) (300ms) werden. Zusätzlich kannst du den 
Reset Grund auslesen (PIC18F und aufwärts).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren