Forum: Mikrocontroller und Digitale Elektronik DS18S20 CRC Berechnung


von Andre (Gast)


Lesenswert?

Hallo,
ich suche ein AVR Assembler Beispiel für die Berechung der Prüfziffer
des Sensors.
Sämtliche gefundenen Programme arbeiten nur mit der Datentabelle.

Aus dem Beispiel von Dallas (AN27) werde ich nicht schlau:
http://pdfserv.maxim-ic.com/en/an/app27.pdf

Hat jemand von Euch einen Tip ?
Benutze den 4433.

Vielen Dank im Vorraus.
Andre

von Philipp Sªsse (Gast)


Lesenswert?

Und warum nimmst Du nicht die Tabelle?

Besser als Maxim oder die wikis dieser Welt wird Dir das hier auch
nicht erklären können, fürchte ich.

von Andre (Gast)


Lesenswert?

weil der 4433 nur 256 Byte EEProm hat und ich dort schon andere Werte
speichere (z.B. die RomCodes)

Andre

von Philipp Sªsse (Gast)


Lesenswert?

Du hast von 4 kB kein viertel-Kilo für die Tabelle übrig?

Na gut.

Hast Du das Assembler-Programm von Seite 5 Deiner verlinkten Anleitung
mal in AVR-Assembler übersetzt und simuliert? Du kannst es dann ja
vergleichen mit dem Berechnungsfortschritt auf Seite 6.

Das Prinzip von CRC ist Dir aber schon vertraut? Die Einführung über
die Wikipedia fand ich ganz hilfreich.

von Andre (Gast)


Lesenswert?

4kB?? Wie lese ich denn Daten aus dem Programmspeicher?

Das Beispiel kommt mit 15 Befehlen aus (wenn mach die Sicherung der
Register weg lässt) das ist schon ein Unterschied zu einer Tabelle.

Allerdings muss ich, um es AVR kompatibel zu machen, erst verstehen.
Wäre ja möglich, dass dies schon einmel jemand vor mir durch hat.

Das Prinzip von CRC ist mir durchaus bekannt. Es gibt allerdings
unendlich viele Berechnungsmethoden.

Andre

von mkmk (Gast)


Angehängte Dateien:

Lesenswert?

Anbei meine Lösüng, mit der ich iButtons auslese. Also jene Dinger, die
nur eine SerieNummer und sonst nichts beinhalten. Dort siehst Du, wie
man die CRC erzeugt (ohne Tabelle).

von Philipp Sªsse (Gast)


Lesenswert?

Aus dem Programmspeicher kannst Du mit dem Befehl LPM lesen. Da gibt es
notfalls auch genug Beispiele dafür.

Die Live-Berechnung ist natürlich viel kompakter, aber erheblich
langsamer. Da muß man abwägen, ob es eher auf Platz oder auf Tempo
ankommt.

Bei der Lösung von mkmk bitte Achtung: iButtons verwenden -- wenn ich
mich nicht irre -- eine 16-Bit CRC, während Du eine 8-Bit CRC brauchst.

von mkmk (Gast)


Lesenswert?

@Philipp
Ist schon richtig so. iButton verwenden - wie Du richt sagst -
8bit-CRC. Und das von mir geliefert Beispiel ist 8bit-CRC.

von peter dannegger (Gast)


Angehängte Dateien:

Lesenswert?

Anbei eine schnelle CRC in Assembler.


Peter

von Andre (Gast)


Lesenswert?

@Philipp
Lpm - Stimmt - sorry, habe ich noch nie benutzt

@mkmk, Peter
werde mir die Programme gleich mal ansehen.

Danke an Alle !

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
Noch kein Account? Hier anmelden.