X-Git-Url: https://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=common%2FOWDS18B20_DS2438.S;h=a95559e82ffe7429885dff0e861b86a837536344;hp=4ad7394dd3352ce520eee79f8d89e0fd3d3555eb;hb=refs%2Fheads%2Fmaster;hpb=a6a04f58e4afd20f206fdf4a8a7b3ce4062f1b67 diff --git a/common/OWDS18B20_DS2438.S b/common/OWDS18B20_DS2438.S index 4ad7394..a95559e 100644 --- a/common/OWDS18B20_DS2438.S +++ b/common/OWDS18B20_DS2438.S @@ -1,5 +1,5 @@ -// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de +// Copyright (c) 2017, Tobias Mueller tm(at)tm3d.de // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -33,6 +33,9 @@ #define _CHANGEABLE_ID_ #define _ZERO_POLLING_ +#define _HANDLE_CC_COMMAND_ +#define _NO_BOOTLOADER_PIN_ +//#define __4MHZ__ //#define _DB_ #include "../common/OWConfig.s" @@ -40,19 +43,21 @@ .extern pack1,8 -//.extern am2302_temp,2 - #if defined(__AVR_ATtiny25__) .extern pack2,16 #else .extern pack2,64 #endif -.extern am2302_temp,2 -.extern am2302_hum,2 + + + .comm block,1 ; Block der augegeben, geschrieben wird (Parameter von READ/WRITE Scratchpad) +.comm cpsp,1 ; Copy Scratchpad marker .macro CHIP_INIT ;r_temp is pushed other Registers should be saved + ldi r_temp,0 + sts cpsp,r_temp Init_EEPROM_read: push r_bytep push r_rwbyte @@ -78,6 +83,7 @@ Init_EEPROM_read: rjmp h_readscratchpad2 rjmp h_writescratchpad_adr2 rjmp h_writescratchpad2 + rjmp h_copyscratchpad_adr2 .endm #include "../common/OWRomFunctionsDual.s" @@ -93,21 +99,32 @@ Init_EEPROM_read: #define OW_READ_SCRATCHPAD2 OW_FIRST_COMMAND+4 #define OW_WRITE_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+5 #define OW_WRITE_SCRATCHPAD2 OW_FIRST_COMMAND+6 +#define OW_COPY_SCRATCHPAD_ADR2 OW_FIRST_COMMAND+7 ;--------------------------------------------------- ; READ COMMAND and start operation ;--------------------------------------------------- +#ifdef _HANDLE_CC_COMMAND_ +h_readcommand12: + clr r_bytep + cjmp 0x44,hrc_set_convertT12 + rjmp h_readcccommand ;fuehre DS2438 commands aus... + //ldi r_mode,OW_SLEEP + //rjmp handle_end +#endif + h_readcommand1: clr r_bytep #ifndef _DIS_FLASH_ FLASH_COMMANDS ; muss zu erst sein.... #endif + cjmp 0x44,hrc_set_convertT1 +h_readcccommand: cjmp 0xBE,hrc_set_readscratchpad1 cjmp 0x4E,hrc_set_writescratchpad1 - cjmp 0x44,hrc_set_convertT1 cjmp 0x48,hrc_copy_scratchpad1 cjmp 0xB8,hrc_recall_eeprom1 FW_CONFIG_INFO1 @@ -132,12 +149,21 @@ hrc_recall_eeprom1: rcall hrc_recall_eeprom_func1 rjmp handle_end - +#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 + rjmp hrc_set_convertT12b +#endif hrc_set_convertT1: ldi r_temp,1 sts gcontrol,r_temp - +hrc_set_convertT12b: ldi r_mode,OW_CONVERT_RUN1 ldi r_sendflag,3 ;set bit 0 and 1 for no zero polling h_convert_run1: @@ -146,6 +172,7 @@ h_convert_run1: rjmp handle_end_no_bcount + hrc_copy_scratchpad1: ldi r_bytep,2 configZ pack1,r_bytep @@ -251,6 +278,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_ @@ -262,26 +290,28 @@ h_readcommand2: hrc_set_convertT2: ldi r_temp,2 sts gcontrol,r_temp - lds r_temp,am2302_temp + lds r_temp,DS2438_2_TEMP sts pack2+1,r_temp - lds r_temp,am2302_temp+1 + lds r_temp,DS2438_2_TEMP+1 sts pack2+2,r_temp rjmp handle_end_sleep hrc_set_convertV2: + ldi r_temp,4 + sts gcontrol,r_temp lds r_temp,pack2 sbrs r_temp,3 rjmp hrc_set_convertVV2 - ldi r_temp,0xF4 + lds r_temp,DS2438_2_VDD sts pack2+3,r_temp - ldi r_temp,0x01 + lds r_temp,DS2438_2_VDD+1 sts pack2+4,r_temp rjmp hrc_set_convertend2 hrc_set_convertVV2: - ldi r_temp,3 + ldi r_temp,8 sts gcontrol,r_temp - lds r_temp,am2302_hum + lds r_temp,DS2438_2_VAD sts pack2+3,r_temp - lds r_temp,am2302_hum+1 + lds r_temp,DS2438_2_VAD+1 sts pack2+4,r_temp hrc_set_convertend2: rjmp handle_end_sleep @@ -348,7 +378,10 @@ h_writescratchpad_all2: rjmp handle_end_sleep - +h_copyscratchpad_adr2: + ori r_rwbyte,0x80 ;hoechstes bit ist 1 zum Testen + sts cpsp,r_rwbyte + rjmp handle_end_sleep