#picaxe 20x2
#no_data
#no_table
symbol OW_NET = b.0
SYMBOL PIO_Latch = b2
SYMBOL Chan_Info = b0
SYMBOL myctr = b14
;BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
;ALR IM TOG IC CHS1 CHS0 CRC1 CRC0
;1-wire mode: %0000
;% bit3 bit2 bit1 bit0
; Bit 3 apply strong pullup after data
; Bit 2 bit mode (receive 1 bit rather than 8 bits (1 byte))
; Bit 1 reset pulse sent after data
; Bit 0 reset pulse sent before data
main:
;DS2406 ROM ID
b6 = 18
b7 = 67
b8 = 164
b9 = 161
b10 = 0
b11 = 0
b12 = 0
b13 = 167
Chan_Info = 0
sertxd ("Initializing DS2406...",13,10)
OWOUT OW_Net, %1000, ($55, b6, b7, b8, b9, b10, b11, b12, b13)
pause 100
sertxd ("Done.",13,10)
inc myctr
sertxd (#myctr, " Configure PIO and report channel info byte.",13,10)
if myctr > 3 then
OWOUT OW_Net,%0001,($55, b6, b7, b8, b9, b10, b11, b12, b13,$F5,%10101100,$FF)
else
OWOUT OW_Net,%0001,($55, b6, b7, b8, b9, b10, b11, b12, b13,$F5,%10100100,$FF)
endif
OWIN OW_Net,%0000,(Chan_Info) ;do i need to send reset after the data??
sertxd ("Channel info byte: ",#Chan_Info,13,10)
;OWOUT OW_Net, %0011, ($55, b6, b7, b8, b9, b10, b11, b12, b13)
;else
; OWOUT OW_Net,%1000,($55, b6, b7, b8, b9, b10, b11, b12, b13,$F5,%00101100,$FF)
;endif
;OWOUT OW_Net, %1001, ($55, b6, b7, b8, b9, b10, b11, b12, b13)
pause 1000
;goto main
;#rem
;DS2438 ROM ID
b6 = 38
b7 = 143
b8 = 215
b9 = 111
b10 = 1
b11 = 0
b12 = 0
b13 = 1
sertxd ("Initializing DS2438...")
OWOUT OW_Net, %1000,($55, b6, b7, b8, b9, b10, b11, b12, b13)
OWOUT OW_Net, %0001,($55, b6, b7, b8, b9, b10, b11, b12, b13, $4E, $00)
; send reset before,
pause 100
sertxd ("Done.",13,10)
sertxd ("Sending Temperature conversion request...")
OWOUT OW_Net, %0001,($55, b6, b7, b8, b9, b10, b11, b12, b13, $44)
; send reset before, $55 = match ROM, S/N for device, then convert T
pause 100
sertxd ("Done.",13,10)
sertxd ("Sending Voltage conversion request...")
OWOUT OW_Net, %0001,($55, b6, b7, b8, b9, b10, b11, b12, b13, $B4)
; send reset before, $55 = match ROM, S/N for device, then convert V
pause 100
sertxd ("Done.",13,10)
sertxd ("Sending recall from memory to scratchpad request...")
OWOUT OW_Net, %0001,($55, b6, b7, b8, b9, b10, b11, b12, b13, $B8, $00)
; send reset before, $55 = match ROM, S/N for device, then recall from memory to scratchpad
pause 100
sertxd ("Done.",13,10)
sertxd ("Reading from scratchpad memory...",13,10)
OWOUT OW_Net, %0001,($55, b6, b7, b8, b9, b10, b11, b12, b13, $BE, $00)
; send reset before, $55 = match ROM, S/N for device, then read from scratchpad
OWIN OW_Net, %0000,(b19,b20,b21,b22,b23)
sertxd ("Values pulled from scratchpad page 0 are:",13,10)
sertxd ("Status: ",#b19,", Temp: ",#b21,".",#b20, "C, ADC: ",#b23 , ".", #b22,"V",13,10)
sertxd ("Finished",13,10)
pause 5000
goto main
;#endrem