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

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.