#define OW_SEARCHROMR 4 ; next resive master answer
#define OW_READROM 5
#define OW_READ_COMMAND 6
+#define OW_FWCONFIGINFO 7
#ifdef _CHANGEABLE_ID_
-#define OW_WRITE_NEWID 7
-#define OW_READ_NEWID 8
-#define OW_SET_NEWID 9
-#define OW_FIRST_COMMAND 10
+#define OW_WRITE_NEWID 8
+#define OW_READ_NEWID 9
+#define OW_SET_NEWID 10
+#define OW_FIRST_COMMAND 11
.comm newid,8
#else
-#define OW_FIRST_COMMAND 7
+#define OW_FIRST_COMMAND 8
#endif
#ifndef _DIS_FLASH_
.endm
#endif
+.macro FW_CONFIG_INFO
+ cljmp 0x85,hrc_fw_configinfo
+.endm
#ifdef _CHANGEABLE_ID_
; lesen der ID aus dem EEPROM beim Start
read_EEPROM_ID:
+ push r_bytep
+ push r_rwbyte//r_temp2 and Z is not in gnu C save area
ldi r_temp2,lo8(E2END)
ldi zh,hi8(E2END)
subi r_temp2,7
cpi r_bytep,8
brne read_EEPROM_ID_loop
read_EEPROM_ID_end:
+ pop r_rwbyte
+ pop r_bytep
ret
#endif
rjmp h_searchromr
rjmp h_readrom
rjmp h_readcommand
+ rjmp h_fwconfiginfo
#ifdef _CHANGEABLE_ID_
rjmp h_writeid
rjmp h_readid
lds r_temp,flashmarker
cpi r_temp,2
brne hrc_jmp_flasher_inc
- ldi r_temp,0xE0
+ ldi r_temp,0xC0
push r_temp
ldi r_temp,0x0E
push r_temp
; sonst tue nichts
rjmp handle_end_sleep
+
+hrc_fw_configinfo:
+ ldi r_mode,OW_FWCONFIGINFO
+ ldi r_sendflag,1
+ CRCInit2
+ rjmp h_fwconfiginfo
+
+
;---------------------------------------------------
; MATCH ROM
;---------------------------------------------------
rjmp handle_end_sleep
+;---------------------------------------------------
+; FW_CONFIG_INFO
+;---------------------------------------------------
+
+h_fwconfiginfo:
+ cpi r_bytep,16
+ breq h_fwconfiginfo_crc
+#ifdef _CRC8_
+ cpi r_bytep,17
+ breq h_fwconfiginfo_all
+#elif defined _CRC16_
+ cpi r_bytep,17
+ breq h_fwconfiginfo_crc2
+ cpi r_bytep,18
+ breq h_fwconfiginfo_all
+#else
+ cpi r_bytep,16
+ breq h_fwconfiginfo_all
+#warning No CRC known code implemented
+#endif
+ configZ config_info,r_bytep
+ ld r_rwbyte,Z
+ rjmp handle_end_inc
+h_fwconfiginfo_crc:
+ lds r_rwbyte,crc
+ rjmp handle_end_inc
+h_fwconfiginfo_crc2:
+ lds r_rwbyte,crc+1
+ rjmp handle_end_inc
+h_fwconfiginfo_all:
+ rjmp handle_end_sleep
+
+
;---------------------------------------------------
; CHANGE ROM FUNCTIONS
;---------------------------------------------------
#ifndef _DIS_FLASH_
; check for bootloader jumper
;vor allen anderen Registerconfigs
-
+ push r_temp
ldi r_temp,(1<<PUD) ;enable pullup
out _SFR_IO_ADDR(MCUCR) ,r_temp
sbi _SFR_IO_ADDR(PORTA),PINA5 ;internal pullup on PINA5
sbic _SFR_IO_ADDR(PINA),PINA5
rjmp owinit_botest_end ;PINA5 nicht 0.... nicht verbunden
cbi _SFR_IO_ADDR(DDRA),PINA4
- ldi r_temp,0xE0
+ ldi r_temp,0xC0
push r_temp
ldi r_temp,0x0E
push r_temp
sts bcount,r_temp
sts alarmflag,r_temp
RESETZEROMARKER
+ pop r_temp
ret
+
+
+.global EXTERN_SLEEP
+EXTERN_SLEEP:
+ cli
+ push r_temp
+ ldi r_temp,0
+ sts mode,r_temp ;SLEEP
+ sts gcontrol,r_temp
+ sts sendflag,r_temp
+ sts bcount,r_temp
+ RESETZEROMARKER
+ pop r_temp
+ sei
+ ret
\ No newline at end of file