Hallo AVRWALLI,
danke für den Tipp, man sollte das Datasheet halt genau lesen, jetzt klappts!
Hab nurnoch ein kleines Problem:
Ich bekomm ne Temperatur von 52°C raus, es ist zwar grad richtig heiß, aber 52 hats wohl doch nicht ganz, die Hälfte würde stimmen. Ist das irgandwie in nem anderen Datenformat codiert oder so?, ich versteh da das Datasheet auf S.3 net so ganz.
Datasheet:
http://pdfserv.maxim-ic.com/en/ds/DS1820-DS1820S.pdf
Achja, hier mein Code, ich werd, wenn er komplett fertig ist nen neuen Beitrag aufmachen, wo dann der Code von der kompletten Wetterstation mit RTC, zwei Temp Sensoren und nem Drucksensor als Barometer drin ist.
Hier also meine Code:
GrußCode:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config 1wire = Portb.0 Config Lcd = 40 * 4 Config Lcdpin = Pin , Rs = Portb.6 , Db4 = Portb.7 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , E2 = Portb.2 Dim ___lcdno As Bit Dim T1 As Byte Dim T2 As Byte Dim I As Byte Dim Id1(8) As Byte Dim Id2(8) As Byte Dim Ar1(2) As Byte Dim Ar2(2) As Byte ___lcdno = 0 Initlcd Cursor Off Cls ___lcdno = 1 Initlcd Cursor Off Cls Id1(1) = 1wsearchfirst() Id2(1) = 1wsearchnext() Do 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id1(1) , 8 'Id von Sensor 1 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id1(1) , 8 'id von sensor 1 1wwrite &HBE 'scratchpad lesen Ar1(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar1(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen Waitms 500 1wreset 'reset 1wwrite &H55 'Match Rom command 1wwrite Id2(1) , 8 'Id von Sensor 2 1wwrite &H44 'Convert T Waitms 300 'warten bis convert T fertig ist 1wreset 'reset 1wwrite &H55 'match rom command 1wwrite Id2(1) , 8 'id von sensor 2 1wwrite &HBE 'scratchpad lesen Ar2(1) = 1wread(1) 'erstes byte auslesen, da steht Temp drin Ar2(2) = 1wread(1) 'zweites Byte auslesen, wenn 00000000 dann pos vorzeichen, wenn 11111111 dann neg vorzeichen T1 = Ar1(1) T2 = Ar2(1) ___lcdno = 0 Upperline If Ar1(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temperatur 1:" ; " " ; T1 Else Lcd "Temperatur 1:" ; "-" ; T1 End If Lowerline If Ar2(2) = 0 Then 'wenn byte 2 aus dem sensor = 0 dann temp pos, sonst neg Lcd "Temperatur 2:" ; " " ; T2 Else Lcd "Temperatur 2:" ; "-" ; T2 End If ___lcdno = 1 Upperline Lcd "ID 1:" ; Id1(1) ; Id1(2) ; Id1(3) ; Id1(4) ; Id1(5) ; Id1(6) ; Id1(7) ; Id1(8) Lowerline Lcd "ID 2:" ; Id2(1) ; Id2(2) ; Id2(3) ; Id2(4) ; Id2(5) ; Id2(6) ; Id2(7) ; Id2(8) Waitms 500 Loop
Florian







Zitieren

Lesezeichen