PIC 16F690 HITEC-PICC MPLAB Problem mit SPI & EUSART

Gast #682764
Lesenswert?
• ▲
▼
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
Persönliche Seite #740848
Lesenswert?
• ▲
▼
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

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.