Forum: Mikrocontroller und Digitale Elektronik PIC und SPI


von Nils (Gast)


Lesenswert?

Hallo!

Ich versuche gerade Daten über die SPI-Schnittstelle des PIC16F877 zu 
versenden. Wenn ich nur ein Byte sende bzw immer wieder das selbe Byte 
dann funktioniert das auch. Wenn ich aber in das SSPBUF-Register einen 
anderen Wert schreiben will um diesen Wert dann zu senden so wird dieser 
nicht übernommen. Im SSPBUF-Register steht immer noch der alte Wert 
drin. Gibt es da irgendein Status-Bit oder so das man erst löschen muss 
bevor man einen neuen Wert in das SSPBUF schreiben kann?

Generell verstehe ich nicht ganz wie die SPI-Schnittstelle funktioniert. 
Laut Blockdiagramm gibt es ja nur ein Register (SSPBUF) das für Versand 
und Empfang der Daten zuständig ist. Kann mir das jemand kurz erklären 
wie die Schnittstelle funktioniert, also wie man Daten sendet und auch 
Daten empfängt?

Nils

von Reiner (Gast)


Lesenswert?

1. laut Datenblatt muß das SSPBUF-Register immer vor dem nächsten 
Bytesenden einmal gelesen werden, auch wenn's nur ein Dummy ist.
2. Ansonsten gibt es noch das WCOL-Flag Writecollision in SSPCON das 
anzeigt das Du unter Umständen auf das SSBUF geschrieben hast, obwohl es 
noch nicht leer war. In dem Fall must Du das WCOL wieder löschen, da 
sonst alle Schreibversuche ignoriert werden.

Aber ich denke Dein Fall ist der erste


Reiner

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
Noch kein Account? Hier anmelden.