mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik checksumme


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir eine mal den folgenden algorythmus beschreiben, ich kapiers so
einfach nicht:

is the checksum field that represents the checksum of the record. The
checksum is calculated by summing the values of all hexadecimal digit
pairs in the record modulo 256 and taking the two's complement.

(Das ist der Algorythmus zum berechnen einer intel hex file check
summe.)
MfG

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dateiinhalt:
11 22 33 54 55 usw...

(11+22+33+54+55 ....) modulo 256, damit nichts grösser als ein byte
rauskommt

das ergenis dann invertieren und +1

res = ~res + 1

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomms nicht hin.

46 4C 55 49 44 20 50 52 4F 46 49 4C 45 00 46 4C = 1079d % 256d = 55d

55d = 110111b , invert -> 001000b = 8d

als ergebniss müsste eigentlich 33 rauskommen (so stehts in der
original datei)

MfG

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich komm auf 201d,
du hast nur von den 6bit das komplement genommen, musst aber mit allen
8 bit arbeiten, und dann noch plus 1. stimmen tuts trotzdem nicht

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab ein paar ziffern vergessen.
jetzt stimmts, danke.

10 24 62 00 46 4C 55 49 44 20 50 52 4F 46 49 4C 45 00 46 4C = 4CDh =
1229d % 256d = 205d = 11001101b invert-> 00110010b = 50d + 1d = 51d =
32h + 1h = 33 h

Autor: schamp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Modulo 256 versteh ich hier (damit nicht größer als 1 Byte), aber wieso
muss dann noch das 2er Komplement gebildet werden ??

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Checksum = (NULL minus ((Summe aller Werte) % 256)) % 256;

Oder: (Checksum + (Summe aller Werte)) % 256 == 0;

Wobei man sich das ganze Modulogegurke spart wenn wenn man alles in
einem unsigned 8-bit aufsummiert, bzw. am ende  mit 0xFF maskiert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.