SPI Kommunikation klappt nicht!

OP #1473410
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? :-)
Gast #1473421
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.
OP #1473433
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!)
Angehängte Dateien:
Gast #1473441
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.
OP #1473446
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! :-(
Gast #1473451
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.
#1475827
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.
OP #1475896
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

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.

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.