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
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.
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.
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
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
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
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.