Forum: Mikrocontroller und Digitale Elektronik LIN-BUS Fragen


von Alexander (Gast)


Lesenswert?

Hallo,

es gibt hier nicht viele LIN Threads, und die, die es gibt beantworten 
meine Fragen nicht.
Was ist Carry-Bit? Ich habe auch mit google nichts passendes gefunden.

Danke
Viele Grüße
Alexander

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

das Carry-Bit ist im Allgemeinen das Übertragsbit das bei Berechnungen 
auf Bitebene einen Überlauf signalisiert.
Beispiel: du hast einen Wert der in einem Byte gespeichert wird. Das 
Byte kann vorzeichenlose Werte von 0 bis 255 aufnehmen. Wenn sagen wir 
254 im Byte gespeichert ist und du 3 addierst ist der Wert im Byte 
anschließend 1, gleichzeitig wird das Carry-Flag/Bit gesetzt.

Und was willst du im speziellen im Zusammenhang mit dem LIN-Bus wissen?

Sascha

von Mark B. (markbrandis)


Lesenswert?

Alexander schrieb:
> es gibt hier nicht viele LIN Threads, und die, die es gibt beantworten
> meine Fragen nicht.
> Was ist Carry-Bit? Ich habe auch mit google nichts passendes gefunden.

Ein Carry Bit bzw. Carry Flag wird generell für den Übertrag bei einer 
Rechenoperation verwendet (z.B. Addition).

Was das mit LIN zu tun haben soll, musst Du uns sagen. Wo soll denn ein 
solches Carry Bit beim LIN Protokoll vorkommen?

Ah, vielleicht hier:

> 2.3.1.5  Checksum
> The last field of a frame is the checksum. The checksum contains the
> inverted eight bit sum with carry over all data bytes or all data bytes
> and the protected identifier.

Quelle:
http://www.cs-group.de/fileadmin/media/Documents/LIN_Specification_Package_2.2A.pdf

: Bearbeitet durch User
von Alexander (Gast)


Lesenswert?

Ah ok, danke!
Wird zur Checksummenberechnung dann genutzt :)
Ist z.B. Hier zu finden: 
http://www.uni-kassel.de/fb16/ipm/nmt/MP%20Labor%20PDF/Versuch_LIN%2014.04.04.pdf

Versuche das gerade auf zu bauen.
Auf dem Oszilloscope kann ich die Daten vom LIN Tranciever wehen, aber 
am LIN Logger erscheint nichts :(

Probiere da noch weiter, bevor ich irgendwelche Fragen stelle, ohne es 
selbst aus zu probieren.

Danke
Gruß
Alexander

von Soul E. (Gast)


Lesenswert?

Sascha W. schrieb:

> das Carry-Bit ist im Allgemeinen das Übertragsbit das bei Berechnungen
> auf Bitebene einen Überlauf signalisiert.

Im Speziellen meinst Du wahrscheinlich die Verwurstung des Übertrags bei 
der Prüfsummenberechnung. Die LIN 2.0 - Spec meint hierzu "Eight bit sum 
with carry equivalent to sum all values and subtract 255 every time the 
sum is greater or equal to 256 (which is not the same as modulo-255 or 
modulo-256)." Hier ein Beispiel:
1
7.3 EXAMPLE OF CHECKSUM CALCULATION
2
Below is the checksum calculation of four bytes shown. If the bytes are
3
four data bytes or the protected identifier and three data bytes is not 
4
important; the calculation is the same.
5
Data = 0x4A, 0x55, 0x93, 0xE5
6
7
            hex    CY D7 D6 D5 D4 D3 D2 D1 D0
8
0x4A        0x4A      0 1 0 0 1 0 1 0
9
+0x55 =     0x9F    0 1 0 0 1 1 1 1 1
10
(Add Carry) 0x9F      1 0 0 1 1 1 1 1
11
+0x93 =     0x132   1 0 0 1 1 0 0 1 0
12
Add Carry   0x33      0 0 1 1 0 0 1 1
13
+0xE5 =     0x118   1 0 0 0 1 1 0 0 0
14
Add Carry   0x19      0 0 0 1 1 0 0 1
15
Invert      0xE6      1 1 1 0 0 1 1 0
16
0x19+0xE6 = 0xFF      1 1 1 1 1 1 1 1
17
18
The resulting sum is 0x19. Inversion yields the final result: checksum = 0xE6. 
19
The receiving node can easily check the consistency of the received frame 
20
by using the same addition mechanism. When the received checksum (0xE6) 
21
is added to the intermediate result (0x19) the sum shall be 0xFF.

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

Ist an dieser Nachricht (Anhang) was falsch?
Der LIN-BUS Logger zeigt kein Empfang an.
Die wird alle 100ms gesendet.

Ich generiere den Break, schicke 0x55 als Sync, dann die ID 0x0F (um 
besser id vom Sync zu unterscheiden), dann 4 Bytes 4A, 55, 93, E5. Als 
Checksumme E6. Wobei die Checksumme mit der ID 0x0F nicht passt. Richtig 
Wäre ID 0xA3, aber da hat das auch nicht funktioniert.

Danke

von Soul E. (Gast)


Angehängte Dateien:

Lesenswert?

Dein sync break ist etwas kurz. Das muss mindestens 11 bit lang sein, so 
dass eine normale UART framing error melden würde.

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

War auf 14 Bits eingestellt.
Habe jetzt auf 15 umgestellt. Mit ohne Erfolg :(
Hier ein Plot vom Scope direkt.
Daten sind die selben.
ID 0xA3 (inkl. Paritätsbits) 0x4A, 0x55, 0x93, 0xE5, 0xE6 (Checksumme)

Etwas komisch. Alle Start und Stop bits sind auch da.

von Alexander (Gast)


Lesenswert?

Sorry, geht alles :))
Ging von Anfang an.
Da konnte jemand den LIN-Logger nicht nutzen :(

Danke

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.