Dein Code sieht eigentlich ganz gut aus. Hast du denn jetzt schon mal das Datenblatt angeschaut? Da gibt es 2 Schaubilder mit den Abläufen (Bild 14 und Bild 15). Und dann würde ich den Code noch kommentieren, dann weisst du, was da passiert. Ich hab das mal angefangen.Zitat:
Zitat von TobiasBlome
Du hast jetzt deinen internen Takt auf 4MHz umgestellt? Bist du dir 100%tig sicher, dass er jetzt auch stimmt (damit meine ich, hast du das überprüft, z.B. eine LED im Sekundentakt blinken lassen)
Das könnte auch das Timing Problem erklären.
Um die DS1820 besser zu verstehen, kannst du dir die ID´s mal auf die Serielle Schnittstelle ausgeben lassen. Denn in den Variablen hast du sie ja schon drin. Hab das mal im Code eingefügt. Ich hab den Code mal compiliert, das ging ohne Fehler. Hab ihn aber noch nicht getestet.
Grüße Eisbaeeer
Code:$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config 1wire = Portb.0
Dim T As Integer
Dim T1 As Integer
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As String * 10
Dim T5 As String * 10
Dim T6 As Single
Dim T7 As Single
Dim Id1(8) As Byte
Dim Id2(8) As Byte
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp As Byte , Tmp2 As Byte
Dim Crc As Byte
Dim W as Byte
Declare Sub Crcit
Declare Sub Crcit2
W = 1wirecount()
Id1(1) = 1wsearchfirst() 'ID des 1. auslesen
Id2(1) = 1wsearchnext() 'ID des nächstenauslesen
Do
Print "Gefundene Bausteine "
Print "Anzahl " ; W ; 'Anzahl der Bausteine ausgeben
Print ""
Print "ID des ersten Bausteins"
For i = 1 to 8 'erstes bis 8tes Bit
Print "";Hex(Id1(i)); 'Ausgabe des RomCode auf UART
Next
1wreset
1wwrite &H55 'Match Rom
1wwrite Id1(1) , 8 '64Bit senden (DS1820 adresse)
1wwrite &H44 'Convert temp
Waitms 800 'wenn parasite powered, ansonsten kann man auch den idle-state abfragen. Dieser geht auf low, wenn die Wandlung fertig ist (aber nur bei externer Stromversorgung, nicht im parasite modus).
'usw... kommentieren
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &HBE
Ar1(1) = 1wread(9)
1wreset
Crcit
If Crc = 0 Then
Tmp = Ar1(1) And 1
If Tmp = 1 Then Decr Ar1(1)
T = Makeint(ar1(1) , Ar1(2))
T = T * 50
T = T - 25
T1 = Ar1(8) - Ar1(7)
T1 = T1 * 100
T1 = T1 / Ar1(8)
T = T + T1
T = T / 10
T6 = T / 10
T4 = Fusing(t6 , "#.#")
End If
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &H44
Waitms 800
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &HBE
Ar2(1) = 1wread(9)
1wreset
Crcit2
If Crc = 0 Then
Tmp2 = Ar2(1) And 1
If Tmp2 = 1 Then Decr Ar2(1)
T2 = Makeint(ar2(1) , Ar2(2))
T2 = T2 * 50
T2 = T2 - 25
T3 = Ar2(8) - Ar2(7)
T3 = T3 * 100
T3 = T3 / Ar2(8)
T2 = T2 + T3
T2 = T2 / 10
T7 = T2 / 10
T5 = Fusing(t7 , "#.#")
End If
Print "Temperatur T4: " ; T4 ; "°C"
Print "Temperatur T5: " ; T5 ; "°C"
Waitms 500
Loop
Sub Crcit
Crc = 0
For I = 1 To 9
Tmp = Crc Xor Ar1(i)
Crc = Lookup(tmp , Crc8)
Next
End Sub
Sub Crcit2
Crc = 0
For I = 1 To 9
Tmp2 = Crc Xor Ar2(i)
Crc = Lookup(tmp2 , Crc8)
Next
End Sub
'//////////////////////////////////////////////////////////////////////////////
Crc8:
Data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
Data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
Data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
Data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160
Data 225 , 191 , 93 , 3 , 128 , 222 , 60 , 98 , 190 , 224
Data 2 , 92 , 223 , 129 , 99 , 61 , 124 , 34 , 192 , 158
Data 29 , 67 , 161 , 255 , 70 , 24 , 250 , 164 , 39 , 121
Data 155 , 197 , 132 , 218 , 56 , 102 , 229 , 187 , 89 , 7
Data 219 , 133 , 103 , 57 , 186 , 228 , 6 , 88 , 25 , 71
Data 165 , 251 , 120 , 38 , 196 , 154 , 101 , 59 , 217 , 135
Data 4 , 90 , 184 , 230 , 167 , 249 , 27 , 69 , 198 , 152
Data 122 , 36 , 248 , 166 , 68 , 26 , 153 , 199 , 37 , 123
Data 58 , 100 , 134 , 216 , 91 , 5 , 231 , 185 , 140 , 210
Data 48 , 110 , 237 , 179 , 81 , 15 , 78 , 16 , 242 , 172
Data 47 , 113 , 147 , 205 , 17 , 79 , 173 , 243 , 112 , 46
Data 204 , 146 , 211 , 141 , 111 , 49 , 178 , 236 , 14 , 80
Data 175 , 241 , 19 , 77 , 206 , 144 , 114 , 44 , 109 , 51
Data 209 , 143 , 12 , 82 , 176 , 238 , 50 , 108 , 142 , 208
Data 83 , 13 , 239 , 177 , 240 , 174 , 76 , 18 , 145 , 207
Data 45 , 115 , 202 , 148 , 118 , 40 , 171 , 245 , 23 , 73
Data 8 , 86 , 180 , 234 , 105 , 55 , 213 , 139 , 87 , 9
Data 235 , 181 , 54 , 104 , 138 , 212 , 149 , 203 , 41 , 119
Data 244 , 170 , 72 , 22 , 233 , 183 , 85 , 11 , 136 , 214
Data 52 , 106 , 43 , 117 , 151 , 201 , 74 , 20 , 246 , 168
Data 116 , 42 , 200 , 150 , 21 , 75 , 169 , 21 , 75 , 169