X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=common%2FOWDS2438_DS2438.S;fp=common%2FOWDS2438_DS2438.S;h=2d2c89154f98708575b5cac68843a38cb00d7660;hp=3c00e1bd481bc6ad529b3b49a564d61bf1a3fb14;hb=2490e261a78b2a98ee2a9b8fc19cb3f20225926b;hpb=45806622c08cded7d77c9c9735c433de5f7fa027 diff --git a/common/OWDS2438_DS2438.S b/common/OWDS2438_DS2438.S index 3c00e1b..2d2c891 100644 --- a/common/OWDS2438_DS2438.S +++ b/common/OWDS2438_DS2438.S @@ -33,7 +33,7 @@ #define _CHANGEABLE_ID_ #define _ZERO_POLLING_ -//#define _HANDLE_CC_COMMAND_ +#define _HANDLE_CC_COMMAND_ //#define _DB_ #include "../common/OWConfig.s" @@ -52,9 +52,11 @@ .extern DS2438_2_TEMP,2 .extern DS2438_2_VAD,2 .comm block,1 ; Block der augegeben, geschrieben wird (Parameter von READ/WRITE Scratchpad) - +.comm cpsp2,1 ; Copy Scratchpad marker .macro CHIP_INIT ;r_temp is pushed other Registers should be saved + ldi r_temp,0 + sts cpsp2,r_temp .endm .macro COMMAND_TABLE @@ -66,6 +68,7 @@ rjmp h_readscratchpad2 rjmp h_writescratchpad_adr2 rjmp h_writescratchpad2 + rjmp h_copyscratchpad_adr2 .endm #include "../common/OWRomFunctionsDual.s" @@ -82,6 +85,7 @@ #define OW_READ_SCRATCHPAD2 OW_FIRST_COMMAND+5 #define OW_WRITE_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+6 #define OW_WRITE_SCRATCHPAD2 OW_FIRST_COMMAND+7 +#define OW_COPY_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+8 ;--------------------------------------------------- @@ -91,7 +95,8 @@ #ifdef _HANDLE_CC_COMMAND_ h_readcommand12: clr r_bytep - cset 0x44,hrc_set_convertT12 + cljmp 0x44,hrc_set_convertT12 + cljmp 0xB4,hrc_set_convertV12 ldi r_mode,OW_SLEEP rjmp handle_end #endif @@ -114,14 +119,23 @@ h_readcommand1: hrc_set_convertT1: + rcall chrc_set_convertT1 + rjmp handle_end_sleep + +chrc_set_convertT1: ldi r_temp,1 sts gcontrol,r_temp lds r_temp,DS2438_1_TEMP sts pack1+1,r_temp lds r_temp,DS2438_1_TEMP+1 sts pack1+2,r_temp - rjmp handle_end_sleep + ret + hrc_set_convertV1: + rcall chrc_set_convertV1 + rjmp handle_end_sleep + +chrc_set_convertV1: lds r_temp,pack1 sbrs r_temp,3 rjmp hrc_set_convertVV1 @@ -131,14 +145,14 @@ hrc_set_convertV1: sts pack1+4,r_temp rjmp hrc_set_convertend1 hrc_set_convertVV1: - ldi r_temp,3 + ldi r_temp,2 sts gcontrol,r_temp lds r_temp,DS2438_1_VAD sts pack1+3,r_temp lds r_temp,DS2438_1_VAD+1 sts pack1+4,r_temp hrc_set_convertend1: - rjmp handle_end_sleep + ret @@ -210,16 +224,13 @@ h_writescratchpad_all1: #ifdef _HANDLE_CC_COMMAND_ hrc_set_convertT12: - ldi r_temp,3 - sts gcontrol,r_temp - lds r_temp,DS2438_2_TEMP - sts pack2+1,r_temp - lds r_temp,DS2438_2_TEMP+1 - sts pack2+2,r_temp - lds r_temp,DS2438_1_TEMP - sts pack1+1,r_temp - lds r_temp,DS2438_1_TEMP+1 - sts pack1+2,r_temp + rcall chrc_set_convertT1 + rcall chrc_set_convertT2 + rjmp handle_end_sleep + +hrc_set_convertV12: + rcall chrc_set_convertV1 + rcall chrc_set_convertV2 rjmp handle_end_sleep #endif @@ -243,6 +254,7 @@ h_readcommand2: cset 0x4E,OW_WRITE_SCRATCHPAD_ADR2 cjmp 0x44,hrc_set_convertT2 cjmp 0xB4,hrc_set_convertV2 + cset 0x48,OW_COPY_SCRATCHPAD_ADR2 FW_CONFIG_INFO2 //cljmp 0x85,hrc_fw_configinfo2 #ifdef _CHANGEABLE_ID_ @@ -250,16 +262,25 @@ h_readcommand2: #endif rjmp handle_end_sleep - hrc_set_convertT2: - ldi r_temp,2 + rcall chrc_set_convertT2 + rjmp handle_end_sleep + +hrc_set_convertV2: + rcall chrc_set_convertV2 + rjmp handle_end_sleep + + +chrc_set_convertT2: + ldi r_temp,3 sts gcontrol,r_temp lds r_temp,DS2438_2_TEMP sts pack2+1,r_temp lds r_temp,DS2438_2_TEMP+1 sts pack2+2,r_temp - rjmp handle_end_sleep -hrc_set_convertV2: + ret + +chrc_set_convertV2: lds r_temp,pack2 sbrs r_temp,3 rjmp hrc_set_convertVV2 @@ -269,14 +290,14 @@ hrc_set_convertV2: sts pack2+4,r_temp rjmp hrc_set_convertend2 hrc_set_convertVV2: - ldi r_temp,3 + ldi r_temp,4 sts gcontrol,r_temp lds r_temp,DS2438_2_VAD sts pack2+3,r_temp lds r_temp,DS2438_2_VAD+1 sts pack2+4,r_temp hrc_set_convertend2: - rjmp handle_end_sleep + ret @@ -341,7 +362,10 @@ h_writescratchpad_all2: - +h_copyscratchpad_adr2: + ori r_rwbyte,0x80 ;hoechstes bit ist 1 zum Testen + sts cpsp2,r_rwbyte + rjmp handle_end_sleep