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
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
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
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
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. |
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
Dein sync break ist etwas kurz. Das muss mindestens 11 bit lang sein, so dass eine normale UART framing error melden würde.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.