Hi Leute, ich habe ein Problem mit dem DS18B20 Temperatursensor an meinem STM32f4Discovery. Ich habe mir die Funktionen geschrieben, die ihr in der one-wire.c nach dem Beispiel von BvB geschrieben. Beitrag "1-Wire-Bus-Projekt: DS1820 DS18S20 DS2450 DS2408 unter C und 8051" Die Reset-Funktion funktioniert. Allerdings alles andere nicht. Insbesondere versuche ich momentan die Read-Rom Funktion zum laufen zu bringen. Dabei habe ich das Problem, dass er anscheinend bei jedem Bit eine 1 einliest. Ich lese nämlich immer den Rom-Code 0x200001DC aus. Ich hoffe jemand von euch kann den Fehler finden, oder mir zumindest sagen woran das liegen kann. Danke schonmal für eure Hilfe.
Gast
#3054022
Deine Read-Rom-Fkt. sieht auf den ersten Blick funktionsfähig aus. Aber wenn er bei jeden Bit eine 1 eingelesen hätte dann müsste doch irgendwas mit 0xFFFF... rauskommen?? Du speicherst doch die einzelnen Bytes in ein Array?? Wie kommst du von den Array auf den ausgelesen ROM-Code?? ( ROM-Code müsste 8-Byte lang ) und das erste Byte müsste der Family-Code sein ( bei DS18B20+ z.b. 40 dezimal )! Zum ROM-Code einlesen nur einen Sensor an den Bus hängen! lg
Mit dem nur 1 einlesen müsstest du recht haben, da hab ich nicht richtig nachgedacht... Ist das gespeicherte Array nicht der Rom-Code? Ich sende doch die Anfrage für den Rom-Code und bekomme ihn dann zurück. Im Debug-Modus sieht mein Array folgendermaßen aus: rom_c 0x200001dc rom_c[0] 255 rom_c[1] 255 . . rom_c[7] 255 Das erhalte ich sowohl wenn ich nur einen Sensor angeschlossen habe und auch, wenn ich gar nichts angeschlossen habe. Ich hab das Gefühl, dass das was ganz banales ist, was ich nur nicht raffe^^
Gast
#3054121
Achso mit dem 0x200001dc meintest du die Adresse des ersten Elements des Arrays! Jetzt komme ich mit! :) Bekommst du den Presence-Puls beim Reseten?? Ich könnte mir vorstellen das du irgend ein Timing-Problem hast. Mein Code um ein Bit zu schreiben sieht so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Schaltest du beim Lesen den GPIO-Modus um??
1 | |
lg
Es funktioniert :) :) Mit deinem Code klappt es ohne Probleme, dann passt wohl bei mir das Timing nicht richtig. Vielen vielen Dank :) dann mach ich mich jetzt mal ans temperatur-auslesen... und ich hoffe, das das klappt ;)
Gast
#3054424
Bitte, noch viel Spaß mit deinen Projekt! :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.