Probleme mit PIC18 SPI

Gast #2859660
Lesenswert?
• ▲
▼
Ich programmiere gerade mit meinem PIC18F45K22 eine SPI Funktion. Das 
Initialisieren und das senden Funktioniert bereits, ich habe aber ein 
kleines Problem: Wie kann ich erkennen, dass der SPI Sendevorgang 
abgeschlossen ist und dann der Eingangsbuffer eingelesen werden kann.
Ich will kein delay einbauen.

Ich hätte mir dann den Code in etwa so vorgestellt:
1
...
2
SPP1BUF=write;
3
while(/*irgendwas???*/);
4
read=SPI1BUF;
5
...
Gast #2859668
Lesenswert?
• ▲
▼
Ich habe jetzt eine Lösung gefunden:
1
CE_LOW();
2
SSP1BUF=write;
3
while(PIR1.SSP1IF==0);
4
CE_HIGH();
5
read=SPI1BUF;
6
PIR1.SSP1IF=0;

Das mit dem Interrupt-Flag hatte ich schon probiert, hat aber nicht 
funktioniert, da ich vergessen habe es immer wieder zurückzusetzen;

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.