- 3D-Druck Einstieg und Tipps         
Seite 5 von 9 ErsteErste ... 34567 ... LetzteLetzte
Ergebnis 41 bis 50 von 88

Thema: mehrere DS18S20 an einem 1 wire Bus

  1. #41
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Anzeige

    E-Bike
    Zitat Zitat von TobiasBlome
    so, also ich hbe jetzt mal das zusammen kopierte programm von der 1. Seite benutzt. Leider bekomme ich keine Werte...
    Ich bekomme erst einen Wert sobald ich eine Temperaturänderung habe. Also einmal gegenpusten und schon wird die Temperatur angezeigt. Warum ist das so?
    ich habe nur einen anderen µC statt mega 32 einen mega 8 und statt 16MHz 4 MHz oder bringe ich ihn damit durcheinander?

    Tobias
    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.
    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

  2. #42
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Programm funzt - ABER jetzt kommt die Temp von einem Sensor wenn ich den 2. Sensor anpuste / erwärme werden beide Temp angezeigt - vielleicht wirklich ein Timing Problem

    RS232:

    Gefundene Bausteine
    Anzahl 2
    ID des ersten Bausteins
    101C60C10008000CTemperatur T4: 24.2°C
    Temperatur T5: °C
    Gefundene Bausteine
    Anzahl 2
    ID des ersten Bausteins
    101C60C10008000CTemperatur T4: 24.2°C
    Temperatur T5: °C
    Gefundene Bausteine
    Anzahl 2
    '----SCHIPP----
    Anzahl 2
    ID des ersten Bausteins
    101C60C10008000CTemperatur T4: 25.3°C
    Temperatur T5: 25.6°C
    Gefundene Bausteine
    Anzahl 2
    ID des ersten Bausteins
    101C60C10008000CTemp
    '........

  3. #43
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Hallo

    Freut mich, wenn es funktioniert.
    Glaub mir, es ist auf jeden Fall ein Timing Problem.
    Crystal überprüfen, tatsächliche Taktfrequenz überprüfen.

    Dieses Script funktioniert auch im Parasite Modus. 2 Drähte reichen aus.

    Ich hoffe ich konnte helfen. Den Rest packst du jetzt auch alleine.

    Grüße Eisbaeeer

  4. #44
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Danke für die Unterstützung. Ich werde gleich morgen mal eine LED mit anschließen um den Takt zu kontrollieren

    Tobias

  5. #45
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Hilfe, das ist doch kein Auto zum ankurbeln....

    die Led blinkt gleichmäßig mit (ca.) 1Hz

    ABER es wird nur eineTemp angezeigt! nach einer Temp.änderung werden beide angezeigt!
    Wenn man nun einen Reset macht werden nach kurzem Stillstand trotzdem beide Temp.werte angezeigt.

    Jetzt kommt´s:
    wenn ich den Strom abdrehe ist alles dunkel - wenn ich wieder einschalte, wird keine Temp. ! Und dann das übliche Temp.änderung und alles wieder ok....

    Tobias

    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
    
    '=========
    'TIMER 16bit
    Config Timer1 = Timer , Prescale = 64
    On Timer1 Timer_irq
    Const Timervorgabe = 3036                                   'also 1 mal pro Sekunde!!!
    Enable Timer1
    Enable Interrupts
    
    Config Pinb.1 = Output
    Led Alias Portb.1
    
    
    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
    '//////////////////////////////////////////////////////////////////////////////
    
    
    Timer_irq:
      Timer1 = Timervorgabe
      Toggle Led
    
       Return
    
    
    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

  6. #46
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    also der µC läuft nun eine halbe Stunde und zeigt keine Werte an - eine Temp.änderung und es geht...

    gibt es einen Reset für die DS1820 oder ähnliches?

    Tobias

  7. #47
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Zitat Zitat von TobiasBlome
    also der µC läuft nun eine halbe Stunde und zeigt keine Werte an - eine Temp.änderung und es geht...

    gibt es einen Reset für die DS1820 oder ähnliches?

    Tobias

    Der Reset muss sogar immer am Anfang kommen und wird mit einem Puls durchgeführt. Dieser muss! mindestens 480 µs lang sein.
    Dann wartet der DS1820 für 15-60 µs und sendet ein "presence puls", der ist 60-240µs lang. Siehe Abbildung 10 Datenblatt.

    Laut Datenblatt sollte folgender Ablauf funktionieren:
    1. Master Tx initiate Reset Pulse
    2. DS18S20 meldet sich mit einem "presence Pulse"
    3. Master "Rom" command --> Befehl z.B. hCC
    4. Master "H44" (Convert temp)
    5. Parasite: Bus auf 1 setzen,750ms warten | ext. VDD, DS1820S setzt Bus wieder auf 0
    6. Master Tx initiate Reset Pulse
    7. DS18S20 meldet sich mit einem "presence Pulse"
    8. Master "Rom" command --> Befehl z.B. hCC (skip rom)
    9. Master Tx --> Befehl hBE (read scratchpad)
    10. DS1820 schickt Temperatur

    Fertig.

    Sobald ich Zeit hab, werde ich mein fertiges Programm dann veröffentlichen. Ich hab folgendes vor:

    Mehrere DS1820 (max 16 Stück an einem Bus!) per skip rom und anschließendem convert temp dazu veranlassen, alle gemeinsam die Temperatur zu errechnen. Dann alle nacheinander auslesen. Mahl sehen, ob das so laut Datenblatt auch funktioniert.

    Grüße Eisbaeeer

  8. #48
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    alsooooo,

    ich habe jetzt die crc Prüfung rausgenommen und nun laufen die zwei DS1820 \/

    Tobias

    Also wen´s interessiert:
    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
    Dim Tmp As Byte
    Dim 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
    
    '=========
    'TIMER 16bit
    Config Timer1 = Timer , Prescale = 64
    On Timer1 Timer_irq
    Const Timervorgabe = 3036                                   'also 1 mal pro Sekunde!!!
    Enable Timer1
    Enable Interrupts
    
    Config Pinb.1 = Output
    Led Alias Portb.1
    
    
    Do
    1wreset                                                     'Bus resetten
    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).
    
    
    
    1wreset                                                     'Bus resetten
    1wwrite &H55                                                'Match Rom
    1wwrite Id1(1) , 8                                          '64Bit senden (DS1820 adresse)
    1wwrite &HBE
    Ar1(1) = 1wread(9)
    1wreset                                                     'Bus resetten
          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 , "#.#")
    
    
    
    1wreset                                                     'Bus resetten
    1wwrite &H55                                                'Match Rom
    1wwrite Id2(1) , 8                                          '64Bit senden (DS1820 adresse)
    1wwrite &H44                                                'Convert temp
    
    Waitms 800
    1wreset                                                     'Bus resetten
    1wwrite &H55                                                'Match Rom
    1wwrite Id2(1) , 8                                          '64Bit senden (DS1820 adresse)
    1wwrite &HBE
    Ar2(1) = 1wread(9)
    1wreset                                                     'Bus resetten
    
          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 , "#.#")
    
    
    
    
    
    Print "Temp. T4: " ; T4 ; Chr(248) ; "C" ; " / Temp. T5: " ; T5 ; Chr(248) ; "C"
    
    
    Waitms 500
    
    Loop
    
    Timer_irq:
      Timer1 = Timervorgabe
      Toggle Led
    
       Return

  9. #49
    Benutzer Stammmitglied
    Registriert seit
    27.05.2007
    Beiträge
    67
    Zitat Zitat von TobiasBlome
    alsooooo,

    ich habe jetzt die crc Prüfung rausgenommen und nun laufen die zwei DS1820 \/

    Tobias
    Hey Super

    Also ich hab mal noch die Subroutinen eingefügt und das ganze ein bischen schneller gemacht (durch skip_rom). Da geht das ganze merklich schneller. Vor allem, wenn es mal die 2 Senoren übersteigt:


    Code:
    'Ausschnitt aus dem Listing
    
    '#######################
    'Programm starten
    Do
    Gosub Convert_temp
    Gosub Read_temp1                                  'Springe zum Subprogramm
    Gosub Read_temp2                                   'Springe zum Subprogramm
    
    Print  T4 "°C "
    Print  T5 "°C "
    Loop
    
    
    '#####################################
    'Sub Convert_Temp
    Sub Convert_temp
     1wreset
     1wwrite &HCC                                               'Skip Rom
     1wwrite &H44                                               'Convert Temp
      Porta.6 = 1                                               'DQ High für Parasite Mode
      Waitms 750                                               'alle DS konvertieren
     1wreset
    End Sub
    
    
    'Sub Read_temp1
    Sub Read_temp1
    1wreset
    1wwrite &H55                                                'Match Rom
    1wwrite Id1(1) , 8                                          'DS1820 ID senden
    1wwrite &HBE                                                'Read Scratchpad
    Ar1(1) = 1wread(9)                                          'Temp Wert auslesen
    1wreset
          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 Sub
    
    'Sub Read_temp2
    Sub Read_temp2
    1wreset
    1wwrite &H55                                                'Match Rom
    1wwrite Id2(1) , 8                                          'DS1820 ID senden
    1wwrite &HBE                                                'Read Scratchpad
    Ar2(1) = 1wread(9)                                          'Temp Wert auslesen
    1wreset
         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 Sub

    Der letzte Schliff wäre jetzt noch, aus dem Read_temp1 und Read_temp2 eine Subroutine zu machen.
    Wie sieht´s aus?
    Soll mers anpacken?

    Grüße Eisbaeeer

  10. #50
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Läuft

    die Sub´s müssen noch deklariert werden und bei der Printanweisung fehlt das ;

    Aber wozu ist:
    Porta.6 = 1 'DQ High für Parasite Mode
    ???????
    Da muss man doch nur den + Pin auf Masse legen - > sonst spart man doch keine 3.Ader ein

    Tobias

Seite 5 von 9 ErsteErste ... 34567 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen