Syncronisation SS bei SPI Slave

OP #3495906
Lesenswert?

hei,

PIC18F26K22

Habe eine Interrupt gesteuerte SPI Slave Routine.
Das Paket enthält 30 Byte. 1.Byte Anzahl dann 28 Daten Byte und zum 
Schluß 1 Prüfbyte.
Nach jedem empfangenem Byte speichere ich das Byte in einem Ringbuffer 
und erhöhe dann die Adresse des Ringbuffers. Nach komplettem Empfang des 
Paket wird es noch überprüft auf Fehler, danach Adresse wieder auf 0 und 
alles von vorne.

Wenn sich die Übertragung verschluckt hat, wie bekomme ich eine 
Synchronisation der Adresse und dem SS Signal?

Müsste ich hier auch noch für das SS Signal einen Interrupt anlegen, der 
mir bei aktiven SS die Adresse auf 0 setzt?

schönen Tag
Gast #3496234
Lesenswert?

Zu beachten ist dabei das Timing, denn wenn man alle Bytes einzeln lesen 
muss, dann darf der SS-Interrupt nicht zu lange sein, damit man nicht 
das erste Byte verpasst. Also kurz fassen.

2. Möglichkeit:
Im Main-loop prüfen, ob SS aktiv ist, wenn nein, dann Startbyte = 0. 
Setzt allerdings voraus, dass die Schleife mindestens einmal zwischen 2 
Übertragungen durchlaufen wird.
Bei beiden Lösungen muss SS während der gesamten Kommunikation aktiv 
sein (ohne Unterbrechung), aber anders wäre es auch nicht sinnvoll.
OP #3496466
Lesenswert?

hei,
Habe es jetzt am laufen.

Taktfrequenz 2500Hz;  Alle 100ms senden/empfangen; je Paket 240 Bit

Derzeitig ein kleiner Langzeittest.  Über 20.000 Pakete mit 0 
Übertragungsfehler.

In der main  while Schleife frage ich das SS Signal ab. Hier wird das 
Paket überprüft und verarbeitet.

In der SPI ISR habe ich nur das notwendige.

Vielen Dank für die Mithilfe.
schönen Tag

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren