Ich habe mitlerweile ein bisschen mit nem MAX7219 (7-Segmenttreiber) rumgespielt. dabei hatte ich die SPI-Schnittstelle per Software gelöst. jetzt hat der PIC aber eine Hardware SPI-Schnittstelle welche ich dafür auch geren benutzen würde doch werde ich aus dem Datenblatt nicht schlau ich bräuchte einmal einen Beispielcode oder ein ordentliches Flowchart um in der anwendung der schnittstelle durchzusteigen hat einer von euch schonmal mit erfolg die SPI-Schnittstelle im einsatz gehabt und wenn ja wie? habe damit vor eeproms porterweiterungen themperaturfühler usw. anzusprechen bin für eure Hilfe dankbar so zum zweiten problem wie verwende ich die Serielle Schnittstelle des PIC? is jetzt nicht ganz so dringend weil das projekt erstmal gestundet ist da ich im moment zu viele projekte paralell laufen habe (Abschlussprojekt Schule & ein weiteres Schulprojekt & das allgemeine leben etc.) habe bei diesem projekt for ein funkthermometer mit kty81 und nem 433mhz funkmodul vom conrad zu bauen also 2 pics der eine sendet und der andere soll empfangen auch hierbei werde ich für eure hilfe dankbar sein
habe jetzt rausgefunden wie das mit der spi-schnittstelle funktionirt und will es euch nicht verheimlichen es handelt sich dabei un die ansteuerung eines digitalpotis (MCP41010 Von Microchip) cs (chipselect ist vorher definirt worden: :#define cs pin_yxz die einstellung für die Spi-schnittstelle:
1 | SSPSTAT = 0b01000000; // datenblatt s. 178 |
2 | SSPCON = 0b00100000; // datenblatt s. 179 |
3 | cs = 1; |
Die funktion welche die daten sendet:
1 | void send_poti(char data) |
2 | {
|
3 | GIE = 0; // interrupts ausschalten (gab probleme mit dem timerinterrupt) |
4 | cs = 0; // Chipselect auf 0 ziehen |
5 | SSPBUF = 0b00010001; // 8-bit ins sende/empfangsregister laden |
6 | while(BF == 0); // warten bis fertig gesendet |
7 | spi_dummy = SSPBUF; // Sende/enpfangsregister auslesen (muss sein sonst geht |
8 | // es nicht)
|
9 | BF = 0; // könnte entfallen |
10 | SSPBUF = data; // die nächsten 8-bit ins sende/empfangsregister laden |
11 | while(BF == 0); // warten bis fertig gesendet |
12 | spi_dummy = SSPBUF; // Sende/enpfangsregister auslesen (muss sein sonst geht |
13 | // es nicht)
|
14 | BF = 0; // könnte entfallen |
15 | cs = 1; // Chipselect auf 1 ziehen |
16 | GIE = 1; // interrupts wieder einschalten |
17 | }
|
ich hoffe das man den code einigermassen interpretiren und auch auf cc5x portiren kann mfg thomas
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.