tried early reading ports (still doesn't work for 2nd port).

This commit is contained in:
Martin Preuss
2025-09-09 01:01:43 +02:00
parent 0dc9f0330c
commit 3ea7170473

View File

@@ -197,21 +197,27 @@ COM2WI_Init:
COM2WI_Timer1Isr: COM2WI_Timer1Isr:
push r15 push r15
in r15, SREG in r15, SREG
push r16 push r1
push r17 push r2
push r18 inr r1, COM_CLK_INPUT
push yl inr r2, COM_DATA_INPUT
push yh push r16
push zl push r17
push zh push r18
rcall COM2WI_HandleTimerIrq ; (r16, r17, r18, Y, Z) push yl
pop zh push yh
pop zl push zl
pop yh push zh
pop yl rcall COM2WI_HandleTimerIrq ; (r16, r17, r18, Y, Z)
pop r18 pop zh
pop r17 pop zl
pop r16 pop yh
pop yl
pop r18
pop r17
pop r16
pop r2
pop r1
out SREG, r15 out SREG, r15
pop r15 pop r15
reti reti
@@ -509,7 +515,8 @@ com2wiIrqJumpTable:
; @clobbers r16, r18 ; @clobbers r16, r18
com2wiIrqStateIdle: com2wiIrqStateIdle:
inr r16, COM_CLK_INPUT mov r16, r1
; inr r16, COM_CLK_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK
and r16, r18 and r16, r18
brne com2wiIrqStateIdle_ret brne com2wiIrqStateIdle_ret
@@ -649,7 +656,8 @@ com2wiIrqStateWBitHoldClockHigh_ret:
; @clobbers r16 ; @clobbers r16
com2wiIrqStateRWaitForClockHigh: com2wiIrqStateRWaitForClockHigh:
inr r16, COM_CLK_INPUT mov r16, r1
; inr r16, COM_CLK_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK
and r16, r18 and r16, r18
brne com2wiIrqStateRWaitForClockHigh_isHi brne com2wiIrqStateRWaitForClockHigh_isHi
@@ -658,7 +666,8 @@ com2wiIrqStateRWaitForClockHigh:
; time's up, enter skipping mode ; time's up, enter skipping mode
rjmp com2wiEnterStateSWaitForClockHigh rjmp com2wiEnterStateSWaitForClockHigh
com2wiIrqStateRWaitForClockHigh_isHi: com2wiIrqStateRWaitForClockHigh_isHi:
inr r16, COM_DATA_INPUT mov r16, r2
; inr r16, COM_DATA_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_DATA ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_DATA
and r16, r18 and r16, r18
clc clc
@@ -728,7 +737,8 @@ com2wiIrqStateRWaitForClockHigh_ret:
; @clobbers r16 ; @clobbers r16
com2wiIrqStateRWaitForClockLow: com2wiIrqStateRWaitForClockLow:
inr r16, COM_CLK_INPUT mov r16, r1
; inr r16, COM_CLK_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK
and r16, r18 and r16, r18
breq com2wiIrqStateRWaitForClockLow_isLo breq com2wiIrqStateRWaitForClockLow_isLo
@@ -752,7 +762,8 @@ com2wiIrqStateRWaitForClockLow_ret:
; @clobbers r16 ; @clobbers r16
com2wiIrqStateSWaitForClockHigh: com2wiIrqStateSWaitForClockHigh:
inr r16, COM_CLK_INPUT mov r16, r1
; inr r16, COM_CLK_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK
and r16, r18 and r16, r18
breq com2wiIrqStateSWaitForClockHigh_ret ; jmp if still low breq com2wiIrqStateSWaitForClockHigh_ret ; jmp if still low
@@ -771,7 +782,8 @@ com2wiIrqStateSWaitForClockHigh_ret:
; @clobbers r16, r18 ; @clobbers r16, r18
com2wiIrqStateSWaitForClockLow: com2wiIrqStateSWaitForClockLow:
inr r16, COM_CLK_INPUT mov r16, r1
; inr r16, COM_CLK_INPUT
ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK ldd r18, Y+COM2WI_IFACE_OFFS_PINMASK_CLK
and r16, r18 and r16, r18
brne com2wiIrqStateSWaitForClockLow_isHi brne com2wiIrqStateSWaitForClockLow_isHi