Via SSP von PIC16F876 an Schieberegister senden. Problem.
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  Schnittstellen (Assembler)  |  Via SSP von PIC16F876 an Schieberegister senden. Problem. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Via SSP von PIC16F876 an Schieberegister senden. Problem.  (Gelesen 1814 mal)
 
Stephan
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen WWW
« am: Januar 13, 2009, 11:55:35 »

Hallo an die Gemeide der Controllerfreunde.

Als Forumsneuling habe ich natürlich schon nach einer Lösung gesucht, aber leider nicht finden können. Darum nun meine erste Frage, mein erster Beitrag.

Folgende Gegebenheiten:
PIC 16F876 soll BCD Daten an ein Schieberegister 74HCT595 via SSP senden. Das Schieberegister soll dann diese Daten über ein BCD zu 7Segment Treiber anzeigen. Der Hintergrund ist ein Projekt zur Displaysteuerung und so soll der Einstieg sein.

Folgendes Problem:
Aus einer Tabelle wird der BCD Code geholt und in das SSPBUF geschrieben. Diese werden dann seriell ausgegeben. Nur, das immer dann wenn das LSB HIGH ist der DATA OUT Port immer auf HIGH stehen bleibt. Ist das LSB LOW, dann passiert das nicht. Um es noch verständlicher zu machen:
Sollte in den Pausen, zwischen den Datenpaketen, der Pegel nicht LOW sein?
 
In der Programmroutine wird immer wieder die Datenausgabe durchlaufen und sobald in der Routine das SSPBUF beschrieben wurde gebe ich danach einen Impuls aus, der dem Schieberegister sagt, die Daten aus dem Shiftregister ins Storage zu übertragen.
-- BSF PORTC, 4
-- BCF PORTC, 4

Hier vermute ich auch das Problem, das das Schieberegister immer nur "ähnliche" Daten anzeigt, als die, die ich ins SSPBUF schreibe.

Dann habe ich es mit einfachen Datensätzen probiert:
a)00000001
b)00000010
c)00000100 usw.

Bei a) ist das LSB ja HIGH. Und der Port (gemessen mit Oszi am Pin des PIC) gibt einen langen HIGH Pegel aus.

Bei b,c...  usw) ist das dann nicht der Fall. Eine lange LOW Phase und eben das Eine Bit als kurzer High Impuls.
den Oszi auf Clock getriggert ist auch sichtbar, wie die Bits 1-7 sich dann zeitlich verschieben. Nur bei Bit 0 (LSB) ist der Pegel HIGH und etwa 25% LOW.

Ich hoffe es genau genug erklärt zu haben, damit man sich was darunter vorstellen kann.

Ich kann leider noch nicht mit allzuviel Erfahrung aufwarten, und SSP ist ein neues Gebiet für mich.
Herzlichen Dank, wenn mir jemand weiterhelfen kann.

Stephan
Gespeichert
techno
Newbie
*
Offline Offline

Beiträge: 27


Profil anzeigen
« Antworten #1 am: Januar 16, 2009, 01:07:32 »

Hallo Stephan,

Wenn im SSPCON,5 (Synchronous Serial Port Enable bit)eigeschaltet ist, dann ist
PORTC,4  SPI Data In.
Hast du es schon mit einem anderen Portpin probiert?
Wenn Daten über SDO herausgeschoben werden, werden gleichzeitig Daten über SDI eingelesen. 

mfG
Mario
Gespeichert
Stephan
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen WWW
« Antworten #2 am: Januar 17, 2009, 16:30:12 »

Moin..  Smiley

Danke für Deine Antwort.
Der PIN RC4 (SDI) ist in diesem Falle als Ausgang geschaltet und somit eigentlich vom Schieberegister des PIC isoliert. Zumindest steht es so in dem Datasheet des PIC.
Aber um es zu beantworten, ich hatte es auch mit einem anderen, beliebigen Port versucht. Der Effekt war der selbe.

Vermutlich habe ich irgendwie nur den falschen "Dialekt" des PIC eingestellt, den das 74HCT595 gerne sehen möchte. Ich meine damit, wann der Clock-Impuls im Verhältnis zum Data-Impuls kommt.
Da fehlt´s mir schlicht an Erfahrung.  Schweigend

Aber ich bin ganz Hellhörig auf Tips.
Wahrscheinlich ist das Problem so simpel, das alle viel komplizierter denken. Das kennt man ja.  Augen rollen

Viele Grüße
Stephan
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.036 Sekunden mit 19 Zugriffen.
 
Top! Top!