From 3ea71704736d19c322b3ffaff820b9be98fec48e Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Tue, 9 Sep 2025 01:01:43 +0200 Subject: [PATCH] tried early reading ports (still doesn't work for 2nd port). --- avr/modules/com2w/com2wi2.asm | 54 +++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/avr/modules/com2w/com2wi2.asm b/avr/modules/com2w/com2wi2.asm index f6208e9..18354c3 100644 --- a/avr/modules/com2w/com2wi2.asm +++ b/avr/modules/com2w/com2wi2.asm @@ -197,21 +197,27 @@ COM2WI_Init: COM2WI_Timer1Isr: push r15 in r15, SREG - push r16 - push r17 - push r18 - push yl - push yh - push zl - push zh - rcall COM2WI_HandleTimerIrq ; (r16, r17, r18, Y, Z) - pop zh - pop zl - pop yh - pop yl - pop r18 - pop r17 - pop r16 + push r1 + push r2 + inr r1, COM_CLK_INPUT + inr r2, COM_DATA_INPUT + push r16 + push r17 + push r18 + push yl + push yh + push zl + push zh + rcall COM2WI_HandleTimerIrq ; (r16, r17, r18, Y, Z) + pop zh + pop zl + pop yh + pop yl + pop r18 + pop r17 + pop r16 + pop r2 + pop r1 out SREG, r15 pop r15 reti @@ -509,7 +515,8 @@ com2wiIrqJumpTable: ; @clobbers r16, r18 com2wiIrqStateIdle: - inr r16, COM_CLK_INPUT + mov r16, r1 +; inr r16, COM_CLK_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK and r16, r18 brne com2wiIrqStateIdle_ret @@ -649,7 +656,8 @@ com2wiIrqStateWBitHoldClockHigh_ret: ; @clobbers r16 com2wiIrqStateRWaitForClockHigh: - inr r16, COM_CLK_INPUT + mov r16, r1 +; inr r16, COM_CLK_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK and r16, r18 brne com2wiIrqStateRWaitForClockHigh_isHi @@ -658,7 +666,8 @@ com2wiIrqStateRWaitForClockHigh: ; time's up, enter skipping mode rjmp com2wiEnterStateSWaitForClockHigh com2wiIrqStateRWaitForClockHigh_isHi: - inr r16, COM_DATA_INPUT + mov r16, r2 +; inr r16, COM_DATA_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_DATA and r16, r18 clc @@ -728,7 +737,8 @@ com2wiIrqStateRWaitForClockHigh_ret: ; @clobbers r16 com2wiIrqStateRWaitForClockLow: - inr r16, COM_CLK_INPUT + mov r16, r1 +; inr r16, COM_CLK_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK and r16, r18 breq com2wiIrqStateRWaitForClockLow_isLo @@ -752,7 +762,8 @@ com2wiIrqStateRWaitForClockLow_ret: ; @clobbers r16 com2wiIrqStateSWaitForClockHigh: - inr r16, COM_CLK_INPUT + mov r16, r1 +; inr r16, COM_CLK_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK and r16, r18 breq com2wiIrqStateSWaitForClockHigh_ret ; jmp if still low @@ -771,7 +782,8 @@ com2wiIrqStateSWaitForClockHigh_ret: ; @clobbers r16, r18 com2wiIrqStateSWaitForClockLow: - inr r16, COM_CLK_INPUT + mov r16, r1 +; inr r16, COM_CLK_INPUT ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK and r16, r18 brne com2wiIrqStateSWaitForClockLow_isHi