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? :-)
>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.
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!)
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!
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.
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! :-(
>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.
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
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.
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
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
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.