mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega48 als SPI Slave


Autor: paul (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,

ich versuche zur Zeit eine Kommunikation zwischen zwei µC über SPI 
herzustellen. Dabei ist die Datenübertragung unidirektional vom Master 
zum Slave.
Der Master funktioniert und sendet korrekt (mit Oszi und Logikanalysator 
überprüft).
Der Slave soll drei Datenbytes empfangen, dabei stellt das erste Byte 
die Position auf einem Display dar, das zweite ist das eigentliche 
Zeichen und das dritte Byte signalisiert das Ende der Übertragung. 
Leider funktioniert das empfangen der drei Byte per Interrupt nicht.
Wie lese ich die Daten nach dem Empfang aus dem SPDR-Register?
Ich habe meinen Quelltext angehängt. In "main_slave1" versuche ich das 
SPDR-Register zu lesen, indem ich in ein "Dummy-Byte" in das register 
schreibe (Routine in "SPI.c"). In "main_slave2" versuche ich direkt aus 
dem Register zu lesen.
Den /SS-Pin vom Slave habe ich auf Masse gelegt. In der Hauptschleife 
wird nur das Display neu beschrieben.

Vielen Dank schon mal für eure Hilfe.

Paul

Autor: Rainer Unsinn (r-u)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warun beschreibst Du das SPDR in "SPI Slave Receive"? Normalerweise mußt 
Du als Slave nur warten auf das SPIF und dann das SPDR lesen. Probier 
erstmal ohne Interrupt und nur mit einem Byte / Pause zwischen den 
gesendeten Bytes..

Autor: paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schon mal. Also ins SPDR zu schreiben hatte ich mal irgendwo 
gesehen.
Jetzt funktionierts auch. Hab zwischen den Schreibzyklen eine Pause 
eingebaut. Jetzt werden die Bytes auch korrekt empfangen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
paul schrieb:
> Den /SS-Pin vom Slave habe ich auf Masse gelegt.

Und wie sollen sich dann der Slave synchronisieren.

Man könnte beide an die gleiche VCC legen, damit sie gleichzeitg 
angehen, keiner darf danach resettet werden und der Master muß etwas 
früher sein SPI enablen, dann der Slave seins und erst danach darf der 
Master senden.

Aber eine sichere Verbindung darf man sone krude Hackerei nicht nennen!


Peter

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.