mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16F690 HITEC-PICC MPLAB Problem mit SPI & EUSART


Autor: Thomas1123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:

  SSPSTAT = 0b01000000; // datenblatt s. 178
  SSPCON   = 0b00100000; // datenblatt s. 179
  cs = 1;


Die funktion welche die daten sendet:
void send_poti(char data)
{
  GIE = 0; // interrupts ausschalten (gab probleme mit dem timerinterrupt)
  cs = 0; // Chipselect auf 0 ziehen 
  SSPBUF = 0b00010001; // 8-bit ins sende/empfangsregister laden
  while(BF == 0); // warten bis fertig gesendet
  spi_dummy = SSPBUF; // Sende/enpfangsregister auslesen (muss sein sonst geht
                      // es nicht)
  BF = 0; // könnte entfallen
  SSPBUF = data; // die nächsten 8-bit ins sende/empfangsregister laden
  while(BF == 0); // warten bis fertig gesendet
  spi_dummy = SSPBUF; // Sende/enpfangsregister auslesen (muss sein sonst geht
                      // es nicht)
  BF = 0; // könnte entfallen 
  cs = 1; // Chipselect auf 1 ziehen 
  GIE = 1; // interrupts wieder einschalten
}

ich hoffe das man den code einigermassen interpretiren und auch auf cc5x 
portiren kann

mfg thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.