From 3270a71cb0a54afa7d45b3bfaead413a324f4c14 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Mon, 1 Sep 2025 23:23:30 +0200 Subject: [PATCH] com2w: simplified module. --- avr/modules/com2w/com2w.asm | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/avr/modules/com2w/com2w.asm b/avr/modules/com2w/com2w.asm index a1d4cbd..8545059 100644 --- a/avr/modules/com2w/com2w.asm +++ b/avr/modules/com2w/com2w.asm @@ -10,6 +10,8 @@ #ifndef AVR_MODULES_COM2W_COM2W_H #define AVR_MODULES_COM2W_COM2W_H +; only currently working com2w module! + .macro M_COM2WCLKSETLOW @@ -210,7 +212,6 @@ com2wReceiveNextPkg_copyLoop: #ifdef MODULES_LED_ACTIVITY rcall LedActivity_Trigger ; (r16) #endif - sec rjmp com2wReceiveNextPkg_end com2wReceiveNextPkg_eCrc: push r16 @@ -226,7 +227,6 @@ com2wReceiveNextPkg_eMissed: ; fall-through to release buffer com2wReceiveNextPkg_relBuffer: rcall NET_Buffer_ReleaseByNum ; (R16, X) - clc com2wReceiveNextPkg_end: ret ; @end @@ -370,7 +370,6 @@ com2wSendByte_sent: ; Receive a packet into buffer pointed to by X. ; Expects interrupts to be disabled. ; -; @param R18 COM address to listen to ; @param R19 max buffer size ; @param X buffer to receive to ; @return CFLAG set if msg received, cleared on error (see R16) @@ -378,30 +377,16 @@ com2wSendByte_sent: ; @clobbers r16, r17, r18, r19, r20, r22, r24, r25, X com2wRecvMsg: - mov r21, r18 ; address + ; check buffer size + subi r19, 2 + brcs com2wRecvMsg_eBadSize ; read destination address rcall com2wRecvByte ; (r17, r18, r20, r22) brcc com2wRecvMsg_eIo - ; check destination address -rjmp com2wRecvMsg_forMe ; DEBUG: don't check address - cp r16, r21 - breq com2wRecvMsg_forMe - cpi r16, 0xff - breq com2wRecvMsg_forMe - clr r16 - rjmp com2wRecvMsg_clcRet -com2wRecvMsg_forMe: - ; store in buffer - subi r19, 1 - brcs com2wRecvMsg_eBadSize st X+, r16 - ; read remaining msg size rcall com2wRecvByte ; (r17, r18, r20, r22) brcc com2wRecvMsg_eIo - ; store in buffer - subi r19, 1 - brcs com2wRecvMsg_eBadSize st X+, r16 inc r16 ; account for CRC byte sub r19, r16 @@ -468,10 +453,10 @@ com2wRecvByte: ldi r17, 8 clr r16 com2wRecvByte_loop: - ldi r20, 50 ; wait up to 500us for clock low + ldi r20, 100 ; wait up to 1ms for clock low rcall com2wWaitForClockLowMulti10Us ; (R20, R22) brcc com2wRecvByte_end - ldi r20, 100 ; wait up to 1ms for clock high + ldi r20, 100 ; wait up to 1ms for clock high rcall com2wWaitForClockHighMulti10Us ; (R20, R22) brcc com2wRecvByte_end ; handle received bit