www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik iButton 1920


Autor: Pascal S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian Arnd (seba)
Datum:

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

Autor: Pascal Steinmetz (pascal_s)
Datum:

Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.