com2w: added routine COM2W_CheckPort

to be used by common pin change interrupt handler in n32
This commit is contained in:
Martin Preuss
2026-06-29 22:15:58 +02:00
parent cbc3eab164
commit cf2a0daae2

View File

@@ -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