Hallo alle.
Ich versuche gerade eine LIN Kommunikation herzustellen.
der Master wird von einem Modul emuliert (Baby-LIN).
den Slave implementiere ich mit einem ATA6662 und einem ATMEGA168.
ich erhalte am Master eine CHECKSUM ERROR.
Kann mir jemand sagen wo oder ob ein Fehler in der Berechnung der
Checksumme liegt.
Danke im Voraus:
1 | for (uint8_t i=0; i<6; i++){
|
2 | TMPchecksum= (uint16_t) TMPchecksum + Daten[i]; //Checksumme berechnen (CARRY-BIT fehlt noch)!!!!!!!
|
3 | TMPchecksum = (uint8_t) ((TMPchecksum & 0x00FF) + (TMPchecksum >> 8));
|
4 | }
|
5 | TMPchecksum = (uint16_t)TMPchecksum+PID; //Enhanced Checksumme!
|
6 | //Low-Byte der checksumme + High-Byte der checksumme
|
7 | checksum = (uint8_t) ((TMPchecksum & 0x00FF) + (TMPchecksum >> 8));
|
8 | checksum= ~checksum; //Checksumme invertieren
|
Gruß Sticky