From cf2a0daae2af71f220a53259d166592ebf8311b3 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Mon, 29 Jun 2026 22:15:58 +0200 Subject: [PATCH] com2w: added routine COM2W_CheckPort to be used by common pin change interrupt handler in n32 --- avr/modules/com2w/com2w.asm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/avr/modules/com2w/com2w.asm b/avr/modules/com2w/com2w.asm index 31bd832c..9f1af11b 100644 --- a/avr/modules/com2w/com2w.asm +++ b/avr/modules/com2w/com2w.asm @@ -844,5 +844,31 @@ com2wPcintIsr_end: +; --------------------------------------------------------------------------- +; @routine COM2W_CheckPort @global +; +; @param r16 port value at IRQ time (e.g. PINA) +; @param Y pointer to interface +; @clobbers: r16, r17, r18, r19, r20, r21, r22, r24, r25, X, Y + +COM2W_CheckPort: + ldi yl, LOW(com2w_iface) + ldi yh, HIGH(com2w_iface) + ldd r17, Y+NET_IFACE_OFFS_LASTPORTVALUE + std Y+NET_IFACE_OFFS_LASTPORTVALUE, r16 + mov r18, r17 + eor r18, r16 ; changed bits=1 + com r18 ; complement: changed bits=0 + or r18, r16 ; only bits are 0 which have just changed to 0 + sbrs r18, COM_CLK_PIN + rjmp COM2W_CheckPort_end + ; CLK just changed to 0, read packet + rcall com2wReceiveNextPkg ; (R16, R17, R18, R19, R20, R21, R22, R24, R25, X) +COM2W_CheckPort_end: + ret +; @end + + + #endif ; AVR_MODULES_COM2W_COM2W_H