PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DS18S20 ID Fehler



apohero
15.05.2008, 10:26
Hallo,
ich habe ein Problem mehrere Temperatursensoren an meinen Atmega auszulesen. Das Problem beginnt allerdings schon recht früh, dh. das ich an einem Sensor problemlos die Temperatur auslesen kann.Für mehrere Sensoren brauch ich ja die ID um sie zu unterscheiden. Und an dieser Stelle beginnt mein Problem: Er gibt mir keine ID sondern zeigt nur 00 an. Habe es mit einen Sensor probiert. In der einen Zeile zeigt er mir die korrekte Temperatur allerdings funktioniert die ID nicht. Hier das Programm:




$regfile = "m8def.dat"
$crystal = 8000000

'LCD'
Config Lcd = 16 * 2

'LCD-PIN-Belegung'
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2

'LCD-BUS, hier vier Ports'
Config Lcdbus = 4

'Port der gruenen LED'
Config Portc.1 = Output

'Port des ersten Schalters'
Config Pinc.0 = Input

'Alias fuer den ersten Schalter'
Taster Alias Pinc.0

Dim W As Word
Dim Dsid(8) As Byte
Dim B As Byte


Portc.0 = 1

'Alias fuer die gruene LED'
Ledgruen Alias Portc.1

'Gruene LED wird eingeschlatet'
Ledgruen = 1




Config 1wire = Portc.5

Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer
Dim Halb As Byte
Cursor Off
Cls

W = 1wirecount()
Dsid(1) = 1wsearchfirst()

1wverify Dsid(1)
Do

Home
Lcd "Temp:"
Wait 1
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
For I = 1 To 2
Ar(i) = 1wread()
Next

Locate 2 , 1
Temperatur = Ar(1)

If Ar(2) > 0 Then Temperatur = 0 Else Shift Temperatur , Right

Lcd Temperatur ; "." ;

Halb = Ar(1) And 1

If Halb = 1 Then Lcd "5" Else Lcd "0"

Lcd " C" ; W ;

For B = 1 To 8
Home
Lcd Hex(dsid(b));
Lcd " ";

Next B
Waitms 1000
Loop


Hoffentlich kann mir einer helfen. Vielen Dank schonmal.