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
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
siehe Codesammlung: Beitrag "DS1820, DS18B20 in C" 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.
>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.
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
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
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.