mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI hängt sich auf


Autor: Clemens Köbe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin

Der SPI funktioniert nur 14 Sekunden lang richtig. Warum?????

Ich will einen Mega48 mit einem Mega128 über SPI verbinden. Der Mega128
soll immer als Master arbeiten, da später noch weitere Slaves
angesprochen werden sollen.
Der Mega48 schreibt ein Byte in das SPDR und löst dann beim Mega128 ein
Interrupt aus. Dieser holt sich dann über den SPI das Byte und gibt
dieses über den UART aus. Klappt ja auch alles, aber ca. nur 14
Sekunden nach dem einschalten. Danach wird immer nur das selbe Byte am
UART ausgeben. Egal was ich in das SPDR Register im Mega48
reingeschrieben habe.

Läuft vielleicht der Stack über?

Autor: DirkD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Vielleicht bin ich noch im Mittagsschlaf, aber:

Wo ist die Endlosschleife im Main des Slaves?


Dirk

Autor: Clemens Köbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

habe ich probiert, funktioniert aber immer noch nicht. Die ISR wird
aufgerufen, das habe ich überprüft. Es laufen beide uC weiter.

clemens

Autor: DirkD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann fällt mir noch auf, daß Du eine C-Datei includierst. Ist das
Absicht?

Schick auch mal den Source.

Dirk

Autor: Clemens Köbe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin

Die uart.c ist die einzige Datei die includiert wird. Da ist aber
glaube ich nicht das Problem.
Das Problem liegt glaube ich im dem "Data Shift Register" und dem
"Data Read Register" vom SPI. Das eine kann ich ich irgendwie
beschreiben aber nicht gleich wieder auslesen.
Wenn ich das SPDR nicht über einen Interrupt auslese sondern jede
Sekunde das SPDR über UART ausgebe ist das kein Problem. Sobald das
über die ISR läuft stürzt der nach ein paar Sekunden ab.

clemens

Autor: Clemens Köbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

habe die Lösung gefunden. Der SS Pin beim Master muss auf logisch 1
(als Ausgang) gesetzt werden, da sonst der Master irgendwann in den
Slave Modus wechselt und dann kein Kommunikation möglich ist.

Clemens

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.