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
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..
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.