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
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
- 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
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.
@Joachim: Ja hast recht,hatte es auch vorher so. Danke ich überprüf mal die Vorschläge.
> 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.