mikrocontroller.net

Forum: Compiler & IDEs Suche CRC 8


Autor: Petra Eigen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

suche einen einfachen CRC8-Code für den MSP 430 135. Ich will aus 2
oder 3 Byte eine Prüfsumme berechnen lassen, die ich dann zusätzlich
als "viertes" Byte schicken kann.
Es wäre auch hilfreich wenn ich wüsste wie dies dann auf der
Empfängerseite aussieht. (Auch ein MSP430 135). Die ganze
Datenkommunikation läuft über die UART-Schnittstelle ab.

mfg Petra

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe 1-Wire Doku.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char crc8 (char crc, char n)
{
  n ^= crc;
  crc = 0;
  if( n & 0x01 ) crc  = 0x5E;
  if( n & 0x02 ) crc ^= 0xBC;
  if( n & 0x04 ) crc ^= 0x61;
  if( n & 0x08 ) crc ^= 0xC2;
  if( n & 0x10 ) crc ^= 0x9D;
  if( n & 0x20 ) crc ^= 0x23;
  if( n & 0x40 ) crc ^= 0x46;
  if( n & 0x80 ) crc ^= 0x8C;
  return crc;
}


Peter

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Es wäre auch hilfreich wenn ich wüsste wie dies dann auf der
> Empfängerseite aussieht.

Das ist ganz simpel:
Du hast 4 Bytes empfangen. Aus den ersten 3 errechnest Du wieder
die CRC und vergleichst mit dem 4 empfangenen Byte.

Autor: Petra Eigen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaut eigentlich ganz simpel aus der Code von peter dannegger. Gibts
dazu auch ne kleine Erklärung?

Also was muss ich mit CRC übergeben? Soll das mein Generatorpolynom
sein?

Und was muss ich bei n übergeben?
Ich bin da nicht ganz so firm, wie manch andere hier.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, die Funktion muß pro Datenbyte aufgerufen werden (n = Datenbyte,
crc = Rückgabewert des vorherigen Aufrufs, bzw. Startwert).

Der letzte Rückgabewert ist dann die CRC.


Z.B. für 3 Bytes:

crc = crc8(crc8(crc8(0, byte1), byte2), byte3);


Peter

Autor: Petra Eigen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

noch zwei Fragen.
1. Welches Generatorpolynom steckt dahinter?
2. Wie korrigiert man auftretende Fehler?

Petra

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.