mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI Kommunikation klappt nicht!


Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin dabei einen Baustein über SPI anzusprechen, jedoch funktioniert 
das einfach nicht! :-(
Verwende dazu den CCS Compiler und nen ollen PIC18F452.
Muss mehr oder weniger nur 8 Bit Daten in ein Register schreiben, SS, 
SCK und SDO vom µC sind meiner Meinung nach richtig angeschlossen...
Könntet ihr mir vielleicht n paar Tipps geben? :-)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Muss mehr oder weniger nur 8 Bit Daten in ein Register schreiben, SS,
>SCK und SDO vom µC sind meiner Meinung nach richtig angeschlossen...

Zeig mal Schaltung und Code. Ohne kann man kaum was dazu sagen.

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:
Angehängte Dateien:
  • c.txt (1,13 KB, 103 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
>>Muss mehr oder weniger nur 8 Bit Daten in ein Register schreiben, SS,
>>SCK und SDO vom µC sind meiner Meinung nach richtig angeschlossen...
>
> Zeig mal Schaltung und Code. Ohne kann man kaum was dazu sagen.

Schaltung habe ich jetzt nicht bei der Hand...
Achtung: Beim Code bin ich mir bewusst, dass ich im Header den 18F452 
deklariert habe, da ich es grad auf nem andren Board probiert 
habe...Schaltung ist auch jetzt mitm 452 verbunden...

Schaltung nur als Paint (SORRY!)

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:
Angehängte Dateien:
  • c.txt (1,12 KB, 112 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Sorry, bei der Variableninitialisierung habe ich jetzt nen Fehler 
gesehen, Werte sollen nicht Hexadezimal, sondern Dezimalwerte sein, hab 
das jetzt ausgebessert, aber funktioniert trotzdem nicht!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beitrag "8 Bit Wert in Register schreiben (mit SPI)"

Ist das ein merkwürdiger Zufall, oder bist du schizophren?

Was soll das c.txt? Das ist ein C-Code also poste
den auch als name.c.

>#use spi(FORCE_HW, BITS=8, stream=SPI_Test2)

Das ist wieder mal so ein Problem mit Codegeneratoren.
Keiner weiss was der da jetzt aus dieser Zeile macht
und welche Pins benutzt werden. Das müsste im Handbuch
stehen, also nochmal die Pinbelegung checken.

SS hat auch eine analoge Zweitfunktion.
Da also auf jeden Fall mal nachsehen ob
der Pin auch auf digital I/O umgeschaltet wurde.

Schaltplan sieht ansonsten gut aus.
Mehr kann dir wohl nur jemand sagen der CCS kennt.

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja tut mir leid, aber der einfachheit halber, habe ich mir gedacht den 
Code einfach als Text zu speichern, bin neu hier! sorry!
Und die Pre-Prozessor-Funktion verwendet die Pins wie im Blockdiagramm 
dargstellt, laut Compiler und Hersteller!
Also wie im Foto beschrieben!
Jedoch kannst du im Header auch sehen, dass ich (auskommentiert) einmal 
versucht habe, die SPI über die Software zu emulieren, also Software SPI 
zu verwenden, jedoch hat dies auch nicht geklappt! :-(

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und die Pre-Prozessor-Funktion verwendet die Pins wie im Blockdiagramm
>dargstellt, laut Compiler und Hersteller!

Tja, dann mach mal ein kleines Programm was dauernd
Daten auf SPI ausgibt und schau nach ob wenigstens SCK
taktet. Dann schaust du nach ob SS richtig gesetzt wird
und ob auch Daten auf SDO rauskommen.


Ansonsten mach die SPI und IO Initialisierung zu Fuß und sende die
Daten laut Datenblatt. Dann muss man nicht raten was passiert
und dir kann viel schneller geholfen werden.

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab da jetzt mal mal einen Logic Analyzer drangehängt.
CLK taktet, aber hab etwas komisches erkannt:
SS macht garnichts, außer wenn ich den Ground entferne, dann taktet SS 
gleich wie CLK.
Auf der Datenleitung liegt auch nichts an -.-

Grüße

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SS tut nicht von selbst. Die Zuordnung zum entsprechend benannten Pin 
spielt nur bei SPI-Slave eine Rolle. Wenn der PIC wie hier als Master 
auftritt, dann musst du selbst für das Signal sorgen, mit ganz normaler 
Port-I/O.

Also als Ausgang definieren, vorher aktivieren, nachher deaktivieren. 
Und vor dem Ganzen die Doku lesen, ob man den SS-Pin überhaupt verwenden 
kann wenn SPI=Master - es gibt Controller wo das nicht geht.

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich komisch finde ist, dass ich auf SDA immer 5 Volt am Board 
anliegen habe.

SS hab ich jetzt mal händisch aktiviert, aber Daten kommen eben nicht 
an.
Das mit SS werd ich mal nachlesen, danke :-)

Grüße

Autor: Heinz Wichtelmann (heinz_wichtelmann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> SS tut nicht von selbst. Die Zuordnung zum entsprechend benannten Pin
> spielt nur bei SPI-Slave eine Rolle. Wenn der PIC wie hier als Master
> auftritt, dann musst du selbst für das Signal sorgen, mit ganz normaler
> Port-I/O.
>
> Also als Ausgang definieren, vorher aktivieren, nachher deaktivieren.
> Und vor dem Ganzen die Doku lesen, ob man den SS-Pin überhaupt verwenden
> kann wenn SPI=Master - es gibt Controller wo das nicht geht.

Ich glaub du hast recht, SS Pin wird nur im Slave-Mode verwendet.
D.h. SS kann NUR manuell gesetzt werden oder, also eben zu Fuß über I/O?

Grüße

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.