DS18B20 zu komplizierte Ansteuerung?

OP #967007
Lesenswert?

Hi Leute habe gerade mal in dem ausführlichen Datenblatt (siehe anhang) 
den C code mir angeschaut und die Anzahl der benötigten Funktionen. Das 
ist ja unglaublich wie umfangreicht das ist.
Ich hatte mir das mit dem 1 wire sensor einfach so vorgestellt:


Tempsensor versorgen, adresse abfragen, temp einlesen fertig.


hat jmd von euch so ein kurzes programm in C? meisten hier im Forum sind 
nu in asm.

mfg
Gast #967053
Lesenswert?

Ich hatte so ein teil mit Bascom angesteuert, das war natuerlich 
einfach. so kompliziert ist der prinzipielle Ablauf aber nicht:

einzelner DS18S20 am Bus:

- Reset
- search first device (um zu wissen das auch 'jemand' da ist)
- skip rom[1]
- jetzt messen
- jetzt 200ms(?) warten
- jetzt scratchpad uebertragen in array aus 9 bytes
- fertsch

im ersten byte ist der absolutwert der Temperatur, um 2. das vorzeichen

[1]: bei mehreren geraeten wird es hier etwas komplexer mit den 
Adressen, bei einem Geraet ist die Adresse Wurst.

HTH, bye uwe, der aber kein C beherrscht, auch kein assembler
Gast #967141
Lesenswert?

>Beim 1-Wire Protokoll ist stark auf das Timing zu achten. Es ist gerade
>am Anfang nicht leicht zu durchblicken, wenn man das Prinzip erstmal
>kapiert hat, ist es ein recht leistungsstarkes Verfahren.

Wenn man Programme gerne per Interrupt steuert
ist es ein absolut bescheuertes und unbrauchbares
Protokoll.
#967213
Lesenswert?

dummy wrote:

> Wenn man Programme gerne per Interrupt steuert
> ist es ein absolut bescheuertes und unbrauchbares
> Protokoll.

Das ist eher eine Frage, wie klug oder dumm man sich anstellt.

Wer mich kennt weiß, daß ich sehr gerne Interrupts verwende. Ich kann 
aber nicht behaupten, daß es mit 1-Wire irgendwelche Probleme gäbe, 
obwohl ich die fast auf jeder Platine einsetze.

Das einzige Problem ist, daß ein 1-Wire Transfer relativ lange dauert 
und damit die Mainloop manchmal zu langsam werden könnte. Dann kann man 
aber das 1-Wire im Hintergrund mit einem Timerinterrupt machen.


Peter
#967373
Lesenswert?

Hallo Peter,

Von dir hatte ich vor kurzem irgendwo im Netz ein Programmbeispiel
aufgestöbert. Das hat mir viel geholfen einen 1 wire DS1820
Temperatursensor auf einer AVR-Ctrl Experimentierplanine zum Laufen
zu bekommen. Habe diese mit einem ATMega644p mit 20 MHz bestückt.

Da ich nur einen Sensor habe, brauche ich das SEARCH ROM [F0h] nicht,
sondern habe das READ ROM [33h] verwendet.

Außerdem habe ich in der function w1_bit_io() den zweiten delay
auf insgesamt 20 us erhöht. Das war vorher etwas wackelig. Mal gings
mal nicht.

Das Programm ist als Demo gedacht und noch nicht optimiert.

Gruß
Bernhard

https://www.mikrocontroller.com/index.php?main_page=product_info&cPath=65&products_id=181

http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren