ibutton DS1990A über 1wire auslesen

maltec

Neues Mitglied
01. Juli 2008
6
0
0
Sprachen
Hallo zusammen,

bin neu hier im Forum und will mich erstmal vorstellen.
Ich bin 32Jahre alt und arbeite in der IT. Gelegentlich lässt es der Job zu, dass ich mit dem Atmega32 kleinere Probleme lösen darf. Jetz stehe ich vor der Aufgabe, die 48-Bit ID aus dem DS1990A auszulesen.

Da ich den Code derzeitg nicht hier habe, poste ich ihn später.

Hier meine Testumgebung:
RN-Control Board mit Atmega32 bestückt.

An Portd.5 den 1wire konfiguriert.
Mit einem 4,7KOhm Widerstand als Pullup zum Datenkanal des DS1990A.
Ich bekomme leider keine Daten aus dem kleinen Ding ausgelesen.
Ich sende als erstes ein 1wreset und im Anschluss ein 1wwrite &H33.
Um die Rückantwort nun anzuzeigen, verwende ich ein LCD-Display 24x2 .
Das einlesen erledige ich mit
Ar = 1wread(8), Ar ist als Byte deklariert.
Ausgabe erfolgt mit
LCD Ar
Hat jemand schon Erfahrungen mit dem 1wire?
Wie würdet ihr vorgehen?

Gruß und Dank

maltec
 
Ar = 1wread(8), Ar ist als Byte deklariert.

Also wenn du das so machst, dann musst du es aber wenigstens als Array von Bytes definiert haben - denn mit 1wread liest du immer ein Byte aus dem CHip.

Trotzdem hat das bei mir dann so nicht funktioniert - ich musste es austauschen gegen folgendes, dann gings:

Code:
for i = 1 to 8 
  ar(i) = 1wread()
next

Warum das anders ncith funktioniert hat keine Ahnung...
 
Hallo zusammen,
hallo maltec, willkommen in unserem Forum.

in Bascom müsste sich das Array auch folgendermassen füllen lassen:
Code:
ar(1) = 1wread(8)
Die Seriennummer befindet sich dann in ar(2) bis ar(7).

Wenn keine weiteren 1wire ICs an dem Bus angeschlossen sind, müsste sich die Seriennummer mit der Abfolge
  • 1wire reset
  • &h33 senden
  • 1wire lesen 8Byte
auslesen lassen. Eventuell könntest du noch den Pullup-Widerstandswert etwas verringern (2,2kOhm), die im DA1990A parasitäre Betriebsspannung ist so stabiler, bzw. bleibt bei ungünstigem Bus-Timing stabiler.

Grüsse,
Dirk
 
Hallo Dirk, hallo pcprofi,

danke für die Unterstützung!

Habe heute Funktion in die Schaltung bekommen.

Folgenden Code habe ich verwendet:

Do
1wreset
1wwrite &H33
For I = 1 To 8
Ar(i) = 1wread()
Next
Waitms 500
Locate 1 , 1
If Ar(1) <> 255 Then 'Prüfung ob ibutton present ist
Lcd "DS-Key:" ; Hex(ar(8)) ; Hex(ar(7)) ; Hex(ar(6)) ; Hex(ar(5)) ; Hex(ar(4)) ; Hex(ar(3)) ; Hex(ar(2)) ; Hex(ar(1)) 'Ausgabe auf Display
Print "DS-Key:" ; Hex(ar(8)) ; Hex(ar(7)) ; Hex(ar(6)) ; Hex(ar(5)) ; Hex(ar(4)) ; Hex(ar(3)) ; Hex(ar(2)) ; Hex(ar(1))'Ausgabe auf Com
End If
Loop Until Taste = 4 ' Mit Taste 4 Loop verlassen

Die 64-Bit Codierung(8-Bit CRC +48-Bit Serial Number + 8-Bit FamiliyCode) des ibutton wird nun richtig ausgegeben.

Gruß

maltec
 
Hallo zusammen,
hallo maltec, willkommen in unserem Forum.

in Bascom müsste sich das Array auch folgendermassen füllen lassen:
Code:
ar(1) = 1wread(8)
Die Seriennummer befindet sich dann in ar(2) bis ar(7).

Wenn keine weiteren 1wire ICs an dem Bus angeschlossen sind, müsste sich die Seriennummer mit der Abfolge
  • 1wire reset
  • &h33 senden
  • 1wire lesen 8Byte
auslesen lassen. Eventuell könntest du noch den Pullup-Widerstandswert etwas verringern (2,2kOhm), die im DA1990A parasitäre Betriebsspannung ist so stabiler, bzw. bleibt bei ungünstigem Bus-Timing stabiler.

Grüsse,
Dirk

Hallo Dirk, genau das habe ich auch zuerst probiert mit deinem Code - allerdings mit nem DS1920... Es funktionierte nciht. Es ging nu rmit der Zählschleife...

Gruß Rainer
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)