From 1091ec1deefa49a1868672d8fbd8dbb219ac6787 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 20 Jul 2025 23:15:22 +0200 Subject: [PATCH] read CLK and DATA early. --- avr/modules/com2w/com2w0.asm | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/avr/modules/com2w/com2w0.asm b/avr/modules/com2w/com2w0.asm index b9e5e04..24a3b28 100644 --- a/avr/modules/com2w/com2w0.asm +++ b/avr/modules/com2w/com2w0.asm @@ -181,6 +181,7 @@ com2w0DataSetLow: ; --------------------------------------------------------------------------- ; @routine com2w0ReadNextBit ; +; @param r17 data from COM_DATAn_INPUT ; @clobbers r16, r17, r18, r20, r22 com2w0ReadNextBit: @@ -188,7 +189,6 @@ com2w0ReadNextBit: ; rcall com2w0WaitForClockHighMulti5Us ; (R20, R22) ; brcc com2w0ReadNextBit_end ; clock is high now, read bit - inr r17, COM_DATA0_INPUT ; reset read timer (for leaving skipping mode) clr r16 std Y+NET_IFACE_OFFS_READTIMER, r16 @@ -566,8 +566,11 @@ COM2W0_ClkChangeIsr: push r15 in r15, SREG push r16 - inr r16, COM_CLK0_INPUT ; read clk state early - rcall COM2W0_HandleClockInterrupt + push r17 + inr r16, COM_CLK0_INPUT ; read clk state early + inr r17, COM_DATA0_INPUT ; read data state early + rcall COM2W0_HandleClockInterrupt + pop r17 pop r16 out SREG, r15 pop r15 @@ -580,6 +583,7 @@ COM2W0_ClkChangeIsr: ; @routine COM2W0_HandleClockInterrupt @global ; ; @param r16 data from COM_CLKn_INPUT +; @param r17 data from COM_DATAn_INPUT ; @clobbers none COM2W0_HandleClockInterrupt: @@ -609,20 +613,30 @@ COM2W0_HandleClockInterrupt: ; @routine com2w0ActOnClock ; ; @param r16 data from COM_CLKn_INPUT +; @param r17 data from COM_DATAn_INPUT ; @clobbers r16 (r17, r18, X) com2w0ActOnClock: andi r16, (1<