mikrocontroller.net

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


Autor: A. C. (michael1988)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim R. (bastelbaer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 2922 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. C. (michael1988)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Joachim: Ja hast recht,hatte es auch vorher so.

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. C. (michael1988)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. C. (michael1988)
Datum:

Bewertung
0 lesenswert
nicht 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?

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.