mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu CRC und 1-Wire Family Code


Autor: Chris H. (xkris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin grad dabei einen 1-Wire Slave per Software in einen PIC 
Controller zu implementieren. Zur Identifikation gehört ja zu jedem 
device ein 64bit Code, bestehend aus 8bit CRC, 48bit serial number und 
8bit family code. Ich dachte , ich kann mir einen beliebigen Code 
einfallen lassen und senden, aber jetzt bezweifel ich, dass das 
funktioniert. Da ich keine Ahnung von CRC hab, hab ich mir mal das 
Beispiel bei Wikipedia angeschaut. Demnach müßte ich 7 Nullen (wegen 
8bit CRC) an die eigentlichen Nutzdaten dranhängen und diese Bitfolge 
(als Polynom interpretiert) dann mit der CRC Bitfolge (ebenfalls als 
Polynom interpretiert) dividieren und das was als Rest bleibt häng ich 
an die Nutzdaten dran. Ist das richtig so?
Die erste Frage wäre, was sind die Nutzdaten? Nur die 48bit serial 
number oder auch der 8bit family code, also 56bit Nutzdaten?
Und dann übertrage ich die Nutzdaten + den Rest der sich aus der 
Polynomdivision ergibt und anschliessend noch die CRC Bitfolge? Also 
würde ich mehr als 64Bits übertragen, richtig?
Könnte mir hier jemand behilflich sein?

Gruß
Kristian

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Es werden insgesamt 8 Byte übertragen, 7 Nutzdaten, plus das CRC-Byte 
über die 7 ersten Bytes.

Wenns mal 8 Byte Nutzdaten werden, kommt halt ein 9. CRC-Byte dazu.
zB. beim DS18S20 beim Temperatur auslesen.

Wenn Du nur sleber den 1W-Slave verwendest, kannst Du dir eine SerialNr 
aussuchen und die ganzen 8 Byte vorher ausrechnen incl. dem CRC, und im 
Programm fest hinterlegen, das ändert sich nie bei der Übertragung der 
SerienNr.
Beim übertragen von veränderlichen Daten muss man den CRC immer neu 
berechnen.

Autor: Chris H. (xkris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und vielen Dank,

wenn ich dich richtig vertanden habe handelt es sich bei der CRC 
Bitfolge (die Teil der Registration number ist) um den "CRC-Wert" und 
nicht um das CRC-Polynom. Jetzt könnte ich mir wahrscheinlich das 
dazugehörige CRC Polynom ausrechnen aber woher kennt der Empfänger (also 
der Master in diesem Fall) das CRC Polynom? Dieses wird ja nicht mit 
übertragen.

Autor: JoachimB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das CRC-Polynom ist bei Dallas konstant und wird nicht übertragen.
Es wird der letzte Stand des "Schieberegisters" übertragen.
Wenn man beim Prüfen alle Bytes, also auch die CRC-Summe, durch den 
CRC-Test schickt, kommt als Ergebnis 0 heraus.

Gruß
Joachim

Autor: JoachimB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
hier kann man das genau nachlesen
http://www.maxim-ic.com/appnotes.cfm/an_pk/27

Autor: Chris H. (xkris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das bedeutet, ich muss eine Bitfolge x finden, die die Bedingung

(64Bit registration number)  %   x  =   0

erfüllt, und dann hab ich das CRC polynom, das dem Master bereits 
bekannt ist, weil es allen (ausser mir) bekannt ist. Und mit diesem CRC 
Polynom (wenn ich es herausgefunden habe) kann ich mir dann jede Menge 
eigene Registration-Codes basteln, richtig?

Nachtrag: Danke für den Link und für die Erklärung

Autor: JoachimB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kristian,

so wie ich das sehe, hast Du recht.
Du kannst aber auch, mit dem oben stehenden Link zur Applikation Note, 
das CRC Polynom auf "unsportliche" Weise durch nachlesen erlangen.

Gruß
Joachim

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.