diff --git a/avr/com.asm b/avr/com.asm index 1f0314b..441d0bc 100644 --- a/avr/com.asm +++ b/avr/com.asm @@ -132,14 +132,8 @@ Com_Init: ldi r17, (comDataEnd-comDataBegin) rcall Utils_FillSram - ; read address from EEPROM - ldi xl, LOW(EEPROM_OFFS_COMADDR) - ldi xh, HIGH(EEPROM_OFFS_COMADDR) - rcall Utils_ReadEeprom ; (R16) - cpi r16, 0xff - brne Com_Init_l1 + ; set address to 0 (will be updated later) clr r16 -Com_Init_l1: sts comAddress, r16 ; setup pins and interrupts diff --git a/avr/comproto.asm b/avr/comproto.asm index 6d03a82..db077f5 100644 --- a/avr/comproto.asm +++ b/avr/comproto.asm @@ -42,7 +42,9 @@ .equ CPRO_PACKET_DENYADDR_OFFS_ADDRESS = 8 .equ CPRO_WAITTIME_GETADDR = 130 -.equ CPRO_WAITTIME_CLAIMADDR = 30 +.equ CPRO_WAITTIME_CLAIMADDR = 17 +.equ CPRO_WAITTIME_RECLAIMADDR = 10 + ; current mode of operation .equ CPRO_MODE_NORMAL = 0 ; normal operation @@ -51,6 +53,7 @@ .equ CPRO_MODE_CLAIMING_ADDR2 = 21 ; CLAIM_ADDRESS sent, 2nd try .equ CPRO_MODE_CLAIMING_ADDR3 = 22 ; CLAIM_ADDRESS sent, 3rd try .equ CPRO_MODE_SENDING_HAVE_ADDRESS = 30 ; waiting for our turn to send HAVE_ADDRESS packet +.equ CPRO_MODE_RECLAIMING_ADDR = 40 ; CLAIM_ADDRESS with the previously used address sent after bootup @@ -111,8 +114,12 @@ CPRO_OnEverySecond_l4: rjmp cproHandle1sClaimingAddr12 CPRO_OnEverySecond_l5: cpi r17, CPRO_MODE_CLAIMING_ADDR3 - brne CPRO_OnEverySecond_done + brne CPRO_OnEverySecond_l6 rjmp cproHandle1sClaimingAddr3 +CPRO_OnEverySecond_l6: + cpi r17, CPRO_MODE_RECLAIMING_ADDR + brne CPRO_OnEverySecond_done + rjmp cproHandle1sReclaimingAddr CPRO_OnEverySecond_done: ret @@ -388,6 +395,7 @@ CPRO_EnqueueValue: push xh push xl + mov r16, r6 ldi r17, CPRO_PAYLOAD_FLAGS_SECONDS | (6<