Forum: Mikrocontroller und Digitale Elektronik Dallas Sensoren HexCode für AVR


von Frank W. (skyifx)


Lesenswert?

Hallo

Ich habe folgendes Problem...
Zur Zeit nutze ich ein AVR-NET-IO von Pollin (Teilbestückt) mit einer 
Software, in der der HexCode der Adresse des Sonsors in die Config 
eingetragen werden muss. Nun wollte ich ein paar Sachen neu machen und 
neue Sensoren verwenden. Diese Sensoren habe ich mal an einen Raspberry 
angeschlossen und bekomme dort eine Adresse in dieser Form 
"10-0008023f2811" heraus. Nun weiss ich aber leider nicht, wie ich 
diesen Wert in einen HexCode dieser Form 
"{0x10,0x10,0x4a,0x90,0x02,0x08,0x00,0x2c}" konvertieren kann.
Kennt sich damit jemand aus und kann helfen??

Vielen Dank im Voraus
Sky

: Verschoben durch User
von google (Gast)


Lesenswert?

Falsches Forum:
Zitat:
"Forum: Projekte & Code
Hier könnt ihr eure Projekte, Schaltungen oder Codeschnipsel vorstellen 
und diskutieren. *Bitte hier keine Fragen posten!* "

> Diese Sensoren habe ich mal an einen Raspberry
> angeschlossen und bekomme dort eine Adresse in dieser Form
> "10-0008023f2811" heraus.

Wo kommt das raus? Es sollten 8 Bytes (=64 Bit) sein. Da passt diese 
Zahl nicht.

Ansonsten solltest Du ein C- oder wahlweise Python-Lehrbuch in die Hand 
nehmen.

von Bastler (Gast)


Lesenswert?

Der alte Sensor am RasPi würde
"2c-000802904a1010"
ergeben. Stichwort: Little Endian

von Frank W. (skyifx)


Lesenswert?

Danke erst mal für Eure Antworten...

Wenn der Post hier falsch ist, dann bitte ich um Entschuldigung und 
evtl. könnte das ein Mod mal verschieben.

Wenn man am Raspberry das W1 Protokoll aktiviert, hat man dann unter 
"/sys/bus/w1/devices/..." die erkannten Sensoren mit ihrer Adresse. Ich 
war/bin der Meinung, das es die Adresse des Sensors ist, die man 
(konvertiert in HexCode) auch am AVR nutzen kann. Die 4 Sensoren, die 
ich noch hier rum liegen habe, fangen alle mit "10-0008023f****" an. 
Leider habe ich mein AVR nur mit den Bauteilen bestückt, die ich auch 
wirklich benötige, d.h. da fehlt z.B. auch RS232, somit könnt ich noch 
nicht einmal ein Code-Schnipsel nutzen, welches mir die Adressen über 
Terminal-Programm und RS232 ausgibt, es sei denn, es gibt etwas über 
IP-Adresse und Port 23, denn die Ethernet-Schnittstelle hab ich auf dem 
Board.

-> Stichwort: Little Endian
...muss ich mir mal anschauen

von Bastler (Gast)


Lesenswert?

> ... alle fangen mit 10- an ...
Sind das ds18S20? Dann ist hex 10 der Family-Code.
Wenn der Sensor, der am NetIO hing, an den RasPi geklemmt wird, was sagt 
dieser dann?

von Frank W. (skyifx)


Lesenswert?

Die Sensoren, die derzeit am AVR hängen, sind im "produktiven" Einsatz, 
d.h. ich will sie da jetzt ungern raus reisen... aber wenn alle Stricke 
reissen, werd ich sie mal an der Himbeere testen und schauen, wie die 
Adressen dort aussehen.

Ja... die "10-***" steht für den Typ des Sensors (18S20), ein Kumpel von 
mir hat einen am Raspberry hängen, der mit "28-***" anfängt (18B20). -> 
http://owfs.sourceforge.net/family.html

Vielleicht wäre auch ein kleines Python oder C-Script auf der Himbeere 
möglich, welches mir die Werte in der benötigten Form auf der Console 
ausgibt.

von Helfer (Gast)


Lesenswert?

Frank W. schrieb:
> Die Sensoren, die derzeit am AVR hängen, sind im "produktiven" Einsatz,
> d.h. ich will sie da jetzt ungern raus reisen...

Der übliche Weg ist, ein baugleiches System für Tests vorzuhalten. Die 
Investition dürfte sich in Grenzen halten und bei weiteren 
Tests/Softwareaktualisierung gute Dienste leisten  ;-)

von Frank W. (skyifx)


Lesenswert?

Helfer schrieb:
> Der übliche Weg ist, ein baugleiches System für Tests vorzuhalten. Die
> Investition dürfte sich in Grenzen halten und bei weiteren
> Tests/Softwareaktualisierung gute Dienste leisten  ;-)

An einem "Test-System" scheitert es nicht... hab ja noch ein AVR hier, 
welches dann zum Einsatz kommen soll... es geht ja eigentlich NUR um den 
HexCode der Sensoren, welcher in den Programm-Code eingearbeitet werden 
muss.

Aber gut, ich lass mir da was einfallen... ich dachte nur (daher auch 
meine Frage hier), es gibt da eine einfache Lösung.

Trotzdem einen Dank an alle, die sich bemüht haben.

Gruß, Frank

von Frank W. (skyifx)


Lesenswert?

So... anbei noch mal ein paar Ausführungen meinerseits, um vlt. auch 
anderen mit gleichem Problem zu helfen.

Ich habe heute mal die Zeit gefunden, oben erwähnte "produktive" 
Sensoren an den Raspberry zu hängen und bin dabei schon mal einen großen 
Schritt weiter gekommen. Hier die Erklärung...
Im Code vom AVR ist der Sensor folgendermaßen eingepflegt: 
"{0x10,0x10,0x4a,0x90,0x02,0x08,0x00,0x2c}". Der Raspberry zeigt ihn so 
an: "10-000802904a10".
Man kann also sagen... Der erste Block steht für die Familie und der 
bleibt in beiden Ausführungen auch an erster Stelle. Die folgenden 
Blöcke gehen, wie weiter oben schon erwähnt, nach dem "Little Endian" 
Prinzip, also im AVR-Code in umgekehrter Reihenfolge. Was mir also noch 
für das AVR fehlte, ist der 8. Block (CRC)... und der kann auf dieser 
Seite (http://www.tm3d.de/index.php/tools) wunderbar berechnet werden. 
Ich habe das Ganze verifiziert und die ersten 7. Blöcke eingegeben... es 
kommt dann als 8. Block "0x2c" heraus.

Gruß, Frank

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.