1wire Programmierung mit BASCOMJetzt will ich etwas näher auf die speziellen Kommandos des DS1820 eingehen. Das 044H Kommando veranlasst den DS1820 eine Temperaturmessung durch zu führen. Also zuerst messen lassen und dann die Messwerte auslesen. Wenn man mehrere DS1820 verwendet kann man natürlich das Messen an alle auf einmal übertragen. Das sieht dann so aus:
Byte 7 und 8 sind die Zähler 'REMAIN' und 'PER °C' die zur höheren Auflösung der Temperatur benutzt werden können. Das Byte 9 ist die Prüfsumme CRC. Das SCRATCHPAD kann wie folgt ausgelesen werden:
Beispiel einfache Temperaturmessung mit myAVR+LCD+DS1820![]() ' Beispiel für das myAVR Board 1 & 2 mit LCD und 1wire Temperatursensor an Pin 5 von Port C $regfile = "m8def.dat" $crystal = 3686411 ' LCD konfigurieren Port auf Ausgabe setzten und Pin's entsprechend zuordnen Ddrd = &HFF Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von BASCOM durch Software realisiert Config 1wire = Portc.5 Dim Dsid(8) As Byte ' Die Adresse meines DS1820 die ich vorher ermittelt habe Dsid(1)=&H10 :Dsid(2)=&H68 :Dsid(3)=&H17 :Dsid(4)=&H25 :Dsid(5)=&H01 :Dsid(6)=&H08 :Dsid(7)=&H00 :Dsid(8)=&H98 Dim Sc(9) As Byte Dim T As Integer Dim T1 As Integer Dim I As Byte Cls Cursor Off Locate 1 , 1 : Lcd "Mein Termometer" Do ' Alle angeschlossenen DS1820 zum Messen veranlassen 1wreset 1wwrite &HCC 1wwrite &H44 Waitus 200 ' Den gewünschten Sensor auswählen 1wverify Dsid(1) ' Kommando READ SCRATCHPAD 1wwrite &HBE Sc(1) = 1wread(9) If Sc(9) = Crc8(sc(1) , 8) Then T = Makeint(sc(1) , Sc(2)) ' Die Nachkommastelle entfernen T = T / 2 ' Temperatur in ganzen Grad Schritten ausgeben Locate 2 , 1 Lcd T ; " Grad Celsius" Else ' Wenn Fehler Scratchpad zur Kontrolle Hexadezimal ausgeben Locate 2 , 1 ' Es passen nur 8 Byte auf das Display For I = 1 To 8 Lcd Hex(sc(i)) Next End If ' Ausgabe alle 0,5 Sekunden Waitms 500 Loop End Beispiel genauere Temperaturmessung mit myAVR+LCD+DS1820![]()
© 04.12.2007 Hans-Jürgen Jacob (Pirna)
|
|