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