Forum: Mikrocontroller und Digitale Elektronik iButton 1920


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Pascal S. (Gast)


Lesenswert?

Hallo

ich hab in der Schule ein Projekt laufen wo ich Temperatur von 3 
iButtons Typ 1920 (Temperatur iButtons) über einen Microkontroler auf 
eien Ledanzeige ausgeben muss. Ich bekomme es hin das die Temperaturvon 
1 iButton ausgegeben wird nur habe das Problem das Program so 
umzuschreiben das es mit den dreien funktioniert.
Es wäre schon wenn mir da jemand helfen könnte.


Danke

von Sebastian A. (seba)


Lesenswert?

Hallo,
um dir helfen zu können wäre es gut deinen Code zu sehen.
Gruß Sebastian

von Pascal S. (pascal_s)


Lesenswert?

' ibutton Test Program

$regfile = " m8535.dat"
$crystal = "800000000"
$baud = 9600

Config 1wire = Portb.0

Const Parasitepower = 1
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , 
Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4
Config Lcd = 16 * 2
Cls
Cursor Off

Dim B As Byte
Wire Bus





Do
   Rom_data(1) = 1wsearchfirst()
   If Err = 1 Then Exit Do
   For B = 1 To 6
   Next
   Goto Temperatur1

   Do
   Romdata(1) = 1wsearchnext()
    If Err = 1 Then Exit Do
   For B = 1 To 6
   Next
   Goto Temperatur2
   Loop

Loop
















Temperatur1:
Const Ds1920 = &H10
Const Skip_rom = &HCC                                       'Adressiere 
einen Ibutton mit 64bit
Const Read_rom = &H33                                       'Lese Rom
Const Convertt = &H44                                       'Start 
Temperaturmessung
Const Read_ram = &HBE                                       'Lese 
Scratchpad RAM
Const Write_ram = &H4E                                      'Schreibe 
Scratchpad RAM
Const Copy_ram = &H48                                       'Kopiere 
Scratchpad RAM
Const Recall_ee = &HB8                                      'Kopiere 
EEprom nach RAM

Dim Family_code As Byte
Dim Serial_number(6) As Byte
Dim Crc As Byte
Dim Scratch(9) As Byte
Dim I As Byte
Dim Temp As Word
Dim Temp1 As Integer
Dim Stemp As Single

 1wreset
   If Err = 1 Then Exit Do
   1wwrite Read_rom
   Family_code = 1wread()
   For I = 1 To 6
      Serial_number(i) = 1wread()
   Next
   Crc = 1wread()
   If Family_code <> Ds1920 Then Exit Do


   1wwrite Convertt                                         'starte 
Temperaturmessung

   #if Parasitpower
      Wait 2                                                'warte 
Temperaturmessung ab
   #else
      Do
         Temp = 1wread()
      Loop Until Temp = &HFF                                'warte bis 
Temperaturmessung beendet ist
   #endif

   1wreset                                                  'Reset 
iButton
   If Err = 1 Then Lcd "iButton ERROR"

   1wwrite Skiprom                                          'überspringe 
Adressierung
   1wwrite Read_ram                                         'lese 
Scratch Pfad

   For I = 1 To 9
      Scratch(i) = 1wread()
   Next

   Temp = Scratch(2)
   Shift Temp , Left , 8

   Temp = Temp + Scratch(1)                                 'Word Format
   Temp1 = Temp
   '    1234567890123456                                    'Integer 
Format
  'Lcd "Der Temp.=" ; Temp ; "Counts."
   Temp1 = Temp1 / 2
   'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad"
   Stemp = Scratch(8) - Scratch(7) 
'Interpolation
   Stemp = Stemp / Scratch(8)
   Stemp = Stemp + Temp1
   Stemp = Stemp - 0.25
'       1234567890123456
   Cls
   Lcd "Die exakt gemess"
   Locate 2 , 1
   Lcd "ene Temperatur =";
   Wait 5
   Cls
   Locate 1 , 1
   Lcd Fusing(stemp , "#.##");
   Lcd Chr($df)
   Wait 2
Loop

   Cls

'     1234567890123456
Lcd "Kein Sensor konta"
   Locate 2 , 1
Lcd "ktiert"

End

Temperatur2:

Const Ds1920 = &H10
Const Skip_rom = &HCC                                       'Adressiere 
einen Ibutton mit 64bit
Const Read_rom = &H33                                       'Lese Rom
Const Convertt = &H44                                       'Start 
Temperaturmessung
Const Read_ram = &HBE                                       'Lese 
Scratchpad RAM
Const Write_ram = &H4E                                      'Schreibe 
Scratchpad RAM
Const Copy_ram = &H48                                       'Kopiere 
Scratchpad RAM
Const Recall_ee = &HB8                                      'Kopiere 
EEprom nach RAM

Dim Family_code As Byte
Dim Serial_number(6) As Byte
Dim Crc As Byte
Dim Scratch(9) As Byte
Dim I As Byte
Dim Temp As Word
Dim Temp1 As Integer
Dim Stemp As Single

 1wreset
   If Err = 1 Then Exit Do
   1wwrite Read_rom
   Family_code = 1wread()
   For I = 1 To 6
      Serial_number(i) = 1wread()
   Next
   Crc = 1wread()
   If Family_code <> Ds1920 Then Exit Do


   1wwrite Convertt                                         'starte 
Temperaturmessung

   #if Parasitpower
      Wait 2                                                'warte 
Temperaturmessung ab
   #else
      Do
         Temp = 1wread()
      Loop Until Temp = &HFF                                'warte bis 
Temperaturmessung beendet ist
   #endif

   1wreset                                                  'Reset 
iButton
   If Err = 1 Then Lcd "iButton ERROR"

   1wwrite Skiprom                                          'überspringe 
Adressierung
   1wwrite Read_ram                                         'lese 
Scratch Pfad

   For I = 1 To 9
      Scratch(i) = 1wread()
   Next

   Temp = Scratch(2)
   Shift Temp , Left , 8

   Temp = Temp + Scratch(1)                                 'Word Format
   Temp1 = Temp
   '    1234567890123456                                    'Integer 
Format
  'Lcd "Der Temp.=" ; Temp ; "Counts."
   Temp1 = Temp1 / 2
   'Lcd "Die gemesseTemp. " ; Temp1 ; "Grad"
   Stemp = Scratch(8) - Scratch(7) 
'Interpolation
   Stemp = Stemp / Scratch(8)
   Stemp = Stemp + Temp1
   Stemp = Stemp - 0.25
'       1234567890123456
   Cls
   Lcd "Die exakt gemess"
   Locate 2 , 1
   Lcd "ene Temperatur =";
   Wait 5
   Cls
   Locate 1 , 1
   Lcd Fusing(stemp , "#.##");
   Lcd Chr($df)
   Wait 2
Loop

   Cls

'     1234567890123456
Lcd "Kein Sensor konta"
   Locate 2 , 1
Lcd "ktiert"

End


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.