Egy kicsit elakadtam a dallas 1820-asával. A mintához képest kissé át kellett alakítanom, mert kvarcról megy a próbapanelem, így a 1 wire =Porta.0 helyett a Port d.6-ot használtam, valamint a ledet a port b.0-ra raktam.
A progi ezek után:
' DS1820 Control by AVR
Const Read_rom = &H33 ' DS1820 Commands
Const Skip_rom = &HCC
Const Convertt = &H44
Const Read_ram = &HBE
Const Write_ram = &H4E
Const Copy_ram = &H48
Const Recall_ee = &HB8
Const Read_power = &HB4
Const Slow = 255
Const Fast = 50
Dim I As Byte ' Index
Dim Rate As Byte ' Blink rate
Dim Crc As Byte ' DS1820 CRC
' Serial Number of DS1820 Device
Dim Serial_number(6) As Byte
Dim Family_code As Byte ' DS1820 Family Code = &H10
Config 1wire = Portd.6
Config Portb = Output ' Config PortD.6 as 1wire pin
1wreset ' 1wire Reset
If Err = 1 Then ' On Error blink fast
Rate = Fast
Print "Reset hiba"
Goto Blink
End If
1wwrite Read_rom ' Read ROM command
Family_code = 1wread() ' Read 8 Bytes ROM contents
For I = 1 To 6
Serial_number(i) = 1wread()
Next
Crc = 1wread()
1wreset ' 1wire Reset
If Err = 1 Then ' On Error blink fast
Rate = Fast
Print "Kodkiolvasasi hiba"
Goto Blink
End If
' Display Family Code
Print "family Code : " ; Hex(family_code)
' Display 6-Byte Serial Number
Print "serial Number : ";
For I = 1 To 6
Print Hex(serial_number(i)) ; " ";
Next
Print "crc : " ; Hex(crc) ' Display CRC
Rate = Slow : Goto Blink ' On End blink slow
End
Blink:
Print "Rate: " ; Rate ' Portb.0 blinks on error
Do
Portb.0 = 1
Waitms Rate
Portb.0 = 0
Waitms Rate
Loop
Azaz ez a családazonosítót, az egyedi kódokat, meg a CRC-t kellene hogy kiírja. Ehhez képest mindent rendben talál (lassú villogással jelzi), majd mindenre 0-t ír ki (family code, serial number, crc).
Gyanítom a 1wire vonalat nem olvassa rendesen. Lehet hogy a d.6 PIN nem tetszik neki? Pedig a Chip configban is beállítottam a 1wire ablakban.
Ha viszont leveszem az érzékelőt, akkor hibát jelez, azaz gyorsan villog. SZóval nem értem mi a bibi! Mert ez szerint mégis érzi az érzékelőt.
Guapo