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
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.
hab die Adressierung nur auskommentiert um was auszuprobieren. In wirklichkeit ist sie drin. Also das Problem ist das der Controller anscheinend nichts sendet...
Jürgen schrieb: > Also das Problem ist das der Controller > anscheinend nichts sendet... Wodurch verifiziert? Oszilloskop? Hast du den Code irgendwie im Debugger verfolgt?
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.
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.
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
Danke hab ich gerade gesehen und auch schon korrigiert aber es funktioniert trotzdem nicht.. :(
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 :)
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.
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.