Thanks, that actually helped a LOT, even though it threw me at first and I had to read it several times...
IF I've got what your saying right, the code to use a standard 4 line lcd module becomes this?
And follow the schematic, POT and all (several seem to not use the pot and wonder why it will not work, some LCDs will not require it, but when in doubt...)Code:'**************************************************************** '* Name : 1-Wire-ID.Bas * '* Author : Bruce Reynolds, modified by Me! * '* Date : 18/16/2008 * '* Version : 1.1 * '* Notes : 1-Wire Identifier * '* ; Identifies & Prints 1-Wire Device Information * '* : Uses 20 x 4 PARELLEL LCD for Display * '**************************************************************** DEFINE LOADER_USED 1 ' Boot loader is being used DEFINE OSC 4 ' We're using a 4 MHz oscillator DQ VAR PortC.0 ' One-wire data pin "DQ" on PortC.0 ID VAR BYTE[8] ' Array storage variable for 64-bit ROM code Begin: PAUSE 500 ' Wait .5 second lcdout $fe, 1 ' Clear LCD on power-up Start_Convert OWOUT DQ, 1, [$33] ' Issue Read ROM command ID_Loop: OWIN DQ, 0, [STR ID\8]' Read 64-bit device data into the 8-byte array "ID" lcdout $FE, $80 "Family Code = ",HEX2 ID[0],"h" lcdout $FE, $C0"Ser# = ",HEX2 ID[1],HEX2 ID[2],HEX2 ID[3],HEX2 ID[4],HEX2 ID[5],HEX2 ID[6],"h" lcdout $FE, $94 "CRC Value = ",HEX2 ID[7],"h" ID_Device: IF ID[0] = $5 THEN lcdout $FE, $D4, "Device = Switch " ENDIF IF (ID[0] = $28) OR (ID[0] = $22) THEN lcdout $FE, $D4 "Device = Temp Sensor" ENDIF IF ID[0] = $01 THEN lcdout $FE, $D4 "Device = Serial # " ENDIF PAUSE 10000 ' 10-second pause GOTO Start_Convert END
POT??? Didn't actually see a schematic. I'm assuming you mean the pot to vary the contrast of the lcd?
Oh sorry 2 other things
I assume this can be used with most small pic's ?
2nd one
Using a DS2405 switch, am I right in thinking that once I've sent a command to either turn it on or off then it stays latched in that state untill it's addressed again and told to do something else?
Just seen another problem.
I understand the $55 is Match rom BUT it saysCode:OWOUT DQ, 1, [$55,$05,$C5,$C3,$08,$00,$00,$00,$CD]' Match ROM, byte-sized, reset beforeThe problem I have is the hex code for the deviceCode:The red hexadecimal number $55 is the command for Match ROM. The blue hexadecimal numbers $05,$C5,$C3,$08,$00,$00,$00,$CD are the unique 64-bit ROM code numbers inside the specific DS2405 addressable 1-wire switch we're trying to communicate with.
Using his device ID routine (above) it comes back with an example but only shows 6 sets of 2digit Hex numbers but above addressing the 1wire units, it shows the address as 8 sets of 2 digits
UNLESS? in his example aboe the $05 is the family code, and the $CD at the end is the CRC code??
So any device I want to address I'd put the Family code first then the 64bit address then finish it with the CRC code?




Bookmarks