CAN: Initialisierung und Synchronization Jump Width (SJW)

Gast #957395
Hi und guten morgen!

ich möchte hier gerade zwei Controller über can miteinander verbinden 
was soweit auch ganz gut funktioniert.

Nun weiß ic haber nicht so richtig für was die Synchronization Jump 
Width (SJW) gut ist?

Soweit ich das verstanden habe, gibt dieser Wert an, um wieviele quantas 
die synchronisation springen darf, bezogen auf die baudrate bzw, die 
nominelle Bitzeit.

wenn die beiden controller nun irgendwann asynchron laufen (wg. 
ungenauem Quartz, ect.) dann können sich die Controller um diesen 
SJW-wert wieder einsynchronisieren, richtig?

Warum kann ich den Wert aber dann im Register einstellen? dann ist es 
doch besser ich mach diesen Wert so gross wie möglich, oder?

Mein Problem ist, dass ich nicht weiß was ich da einstellen/definieren 
soll? mach ich lieber einen grossen wert um evt. auftretenden 
verschiebungen auszugleichen oder eher klein weil das auch "irgendeinen" 
Vorteil hat?

Es handelt sich hierbei um einen SJA1000 und einen 82527 welcher ich mit 
250kbaud verbinden möchte
Gast #957409
Die ganzen Timing-Werte sind m.M.n. für einfache Verbindungen nahezu 
irrelevant. Nur bei großen Netzen mit vielen Teilnehmern, Störungen, 
Reflexionen und Verschleifungen wirken sie sich aus.

"wenn die beiden controller nun irgendwann asynchron laufen (wg.
ungenauem Quartz, ect.) dann können sich die Controller um diesen
SJW-wert wieder einsynchronisieren, richtig?"

Da die Übertragung ja generell asynchron läuft, synchronisiert sie sich 
ja bei jedem Frame neu.
Und dass die Quarze so ungenau sind, dass das Timing innerhalb eines 
Frames davonläuft ...

Nimm die Std-Werte (spicke bei anderen Programmierern), das passt fürs 
Erste.
Gast #957412
>Nimm die Std-Werte (spicke bei anderen Programmierern), das passt fürs
>Erste.

Hi und Danke!
mein Problem ist, dass das so ziemlich mein erstes Programm ist, 
deswegen habe ich nichts zum "spicken" :(

Ich habe aber auch schon bemerkt, dass der Wert keinen Einfluß auf meine 
kommunikation hat. Nicht einmal hier auf dem Basteltisch wo ich die 
beiden Platinen mit "Eisenbahndraht" miteinander verbunden habe und 
alles über ein völlig überfordertes Steckernetzteil gespeist wird :o)
Gast #958020
"Da die Übertragung ja generell asynchron läuft, synchronisiert sie sich
ja bei jedem Frame neu.

Sinn und Zweck der SJW ist eine möglichst bitweise Resynchronisation, 
sofern die entsprechenden Flanken im Eingangsdatenstrom existieren. 
Nicht zuletzt deshalb gibt es Stuffbits.

Wähle die SJW einfach als <=TSEG2 und du solltest keine Probleme 
bekommen. Eine größere SJW gibt dem Controller mehr Luft bei 
Baudratenabweichungen zwischen den einzelnen Nodes.

Weiterführende Infos:

http://www.port.de/engl/canprod/sv_req_form.html
http://can-cia.org

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.