Problem mit SPI

Gast #1921076
Hallo,
ich befasse mich seit kurzem mit der SPI Schnittstelle und dem 
Portexpander Ic MCP23S17. Doch irgendwie bekomm ich dieses Teil nicht 
zum lauffen. Hab da auf ner seite im Internet n C-Beispiel gefunden und 
das mal in mein C-Programm übernommen.

Ziel ist es mit einem Taster Alle Portpins vom Port A des MCP23S17 
einzuschalten.

Hardwareseitig müsste alles passen.

Wär euch sehr dankbar wenn mal jemand über meinen C-Code drüberschauen 
würde.

Prozessor ist ATMEGA 32
AVR Studio und Win AVR
Angehängte Dateien:
Moderator Persönliche Seite
Ohne ins Datenblatt des ICs geguckt zu haben: wenn du die komplette
Adressierung in deinem SPI_Write() auskommentierst, was denkst du,
woher der IC dann noch weiß, was er mit den Daten anfangen soll?

DWIM-Programmierung ist noch nicht erfundne.  (DWIM: "do what I mean")

Falls du die  Adressierung schon mal drin hattest und das irgendwie
anders "nicht ging", dann wäre es hilfreich, wenn du uns mitteilst,
was du denn alles schon kontrolliert hast, und an welcher Stelle es
klemmt.
Gast
hab die Adressierung nur auskommentiert um was auszuprobieren. In 
wirklichkeit ist sie drin. Also das Problem ist das der Controller 
anscheinend nichts sendet...
Gast
sicher bin ich mir nicht ob der controller nichts sendet. Ich werd mich 
morgen nochmal auf die suche begeben. Mit debugger hab ichs noch nicht 
probiert.
Gast
ich komm einfach nicht weiter. Meine Messungen haben ergeben:
aus SCL kommt der Takt. i. O.
aus MOSI der auf den PIN SO vom 23S17 geht hab ich auch Signal
und wenn ich am Pin MISO messe, der an Pin SI vom 23S17 geht auch.
Das komische ist nur wenn ich den 23S17 abstecke dann hab ich trotzdem 
an MISO signal... das dürfte doch gar nicht sein oder?

die CS Leitung funktioniert auch. Reset-Pin vom 23S17 ist auch auf 5V 
beschalten.
Gast
Jürgen schrieb:
> aus MOSI der auf den PIN SO vom 23S17 geht hab ich auch Signal
> und wenn ich am Pin MISO messe, der an Pin SI vom 23S17 geht auch.

Hast du dich hier vertippt?

MOSI = Master Out Slave In  muss an SI (Slave In) vom 23S17
MISO = Master In Slave Out muss SO (Slave Out) vom 23S17

Du hast es also genau verdreht!

- gerd
Gast
hab den fehler gefunden.
Also der SS Pin ist gleichzeitig auch CS pin...

also nicht:

// Set MOSI (PB5), SCK (PB7) and PB4 (SS) as output, others as input

sondern:

den SS Pin auf PB0

jetzt funktionierts :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.