mikrocontroller.net

Forum: Compiler & IDEs Problem mit SPI


Autor: Jürgen (Gast)
Datum:
Angehängte Dateien:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab die Adressierung nur auskommentiert um was auszuprobieren. In 
wirklichkeit ist sie drin. Also das Problem ist das der Controller 
anscheinend nichts sendet...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen schrieb:
> Also das Problem ist das der Controller
> anscheinend nichts sendet...

Wodurch verifiziert?  Oszilloskop?

Hast du den Code irgendwie im Debugger verfolgt?

Autor: Jürgen (Gast)
Datum:

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

Autor: Jürgen (Gast)
Datum:

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

Autor: gerd (Gast)
Datum:

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

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke hab ich gerade gesehen und auch schon korrigiert aber es 
funktioniert trotzdem nicht.. :(

Autor: Jürgen (Gast)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich eher das Gegenteil: PB4 muss man zum Ausgang machen, wenn
man die SPI im Master-Modus betreibt, denn wenn es ein Eingang ist,
dann wirkt er als /SS, um die SPI extern in den Slave-Modus setzen
zu können.

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.