Forum: Mikrocontroller und Digitale Elektronik SPI-Verbindung 2er MIcrocontroller


von A. C. (michael1988)


Angehängte Dateien:

Lesenswert?

Hallo

Ich versuche gerade die Datenübermittlung zwischen zwei Microcontrollern 
per SPI hin zu bekommen. Ich habe dazu MISO,MOSI,SCK und SS wie im 
Datenblatt beschrieben verbunden und die im Anhang aufgeführten 
Programme geschrieben.
Die LEDs die am Slave angeschlossen sind,sollen am Anfang nicht leuchten 
und nach dem Empfang des Bytes vom Master so leuchten,wie es des Master 
vorgibt.

Leider bleiben sie immer im Anfangszustand,also auch wenn sie vor der 
Datenübermittlung brannten,tun sie es danach auch noch. Wenn sie davor 
aus waren,sind sie es danach auch noch...

Schaut euch mal die Quellcodes an,vielleicht weiss ja einer Rat...

Gruß Michi

von Joachim R. (bastelbaer)


Lesenswert?

Nur mal so auf die schnelle in den ersten Zeilen aufgefallen. SCK und SS 
kannst du 1:1 verbinden, MISO und MOSI müsstest du aber drehen, halt 
MISO des einen Proz auf MOSI des anderen und umgekehrt.
Guckst du hier:
http://www.mct.de/faq/spi.html

mfg.
    Joachim

von Jörg X. (Gast)


Lesenswert?

- Nimm mal beim slave das "rcall SPI_SlaveInit" aus der Endlosschleife
- schalte die richtigen Ports auf eingang/ausgang (Tipp: Hardware-SPI 
liegt auf PORT_B_)
- schalte die richtigen PINS! wenn du Hardware SPI benutzen willst, 
musst du auch die Hardware anschließen (beim mega8: PortB3-5)

rtfm! Jörg

von 2922 (Gast)


Lesenswert?

Und der SCK mus hinreichend tief sein. Zuerst mal nachmessen, wass den 
aus der Master SPI rauskommt, und dann weshlab der Slave nichts damit 
macht.

von A. C. (michael1988)


Lesenswert?

@Joachim: Ja hast recht,hatte es auch vorher so.

Danke ich überprüf mal die Vorschläge.

von Magnus Müller (Gast)


Lesenswert?

> kannst du 1:1 verbinden, MISO und MOSI müsstest du aber drehen, halt
> MISO des einen Proz auf MOSI des anderen und umgekehrt.

Quatsch. MISO mit MISO und MOSI mit MOSI verbinden! Die Funktion der 
beiden Leitungen wird über die Register der SPI bestimmt.

MOSI == "Master Out, Slave In"

   Beim Master ist dies der Datenausgang, beim Slave der Dateneingang

MISO == "Master In, Slave Out"

   Beim Master ist dies der Dateneingang, beim Slave der Datenausgang

Gruß,
Magnetus

von A. C. (michael1988)


Lesenswert?

Ja schon...sagt ja der Name schon.
Naja jetzt gehts zwar,ist aber ziemlich störanfällig. Ist das normal/Was 
kann man tun?

Gruß Michi

von A. C. (michael1988)


Lesenswert?

Ok jetzt funktionierts(hatte 2Leitungen vertauscht).

Jetzt würde ich aber gern noch Daten vom Slave zum Master übertragen.
Dazu lade ich im Slave vor der Übertragung das zu Übertragende Byte in 
SPDR.

Der Master liest dann nach der Übertagung SPDR aus,also die DAten,die er 
vom Slave erhalten hat.
Das klappt eigentlich auch schon,nur flackern zum Teil noch LEDs die aus 
sien sollen.

Was kann da falsch sein?

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
Noch kein Account? Hier anmelden.