com2w1: follow changes in com2w0.
This commit is contained in:
@@ -181,6 +181,7 @@ com2w1DataSetLow:
|
|||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
; @routine com2w1ReadNextBit
|
; @routine com2w1ReadNextBit
|
||||||
;
|
;
|
||||||
|
; @param r17 data from COM_DATAn_INPUT
|
||||||
; @clobbers r16, r17, r18, r20, r22
|
; @clobbers r16, r17, r18, r20, r22
|
||||||
|
|
||||||
com2w1ReadNextBit:
|
com2w1ReadNextBit:
|
||||||
@@ -188,7 +189,6 @@ com2w1ReadNextBit:
|
|||||||
; rcall com2w1WaitForClockHighMulti5Us ; (R20, R22)
|
; rcall com2w1WaitForClockHighMulti5Us ; (R20, R22)
|
||||||
; brcc com2w1ReadNextBit_end
|
; brcc com2w1ReadNextBit_end
|
||||||
; clock is high now, read bit
|
; clock is high now, read bit
|
||||||
inr r17, COM_DATA1_INPUT
|
|
||||||
; reset read timer (for leaving skipping mode)
|
; reset read timer (for leaving skipping mode)
|
||||||
clr r16
|
clr r16
|
||||||
std Y+NET_IFACE_OFFS_READTIMER, r16
|
std Y+NET_IFACE_OFFS_READTIMER, r16
|
||||||
@@ -566,8 +566,11 @@ COM2W1_ClkChangeIsr:
|
|||||||
push r15
|
push r15
|
||||||
in r15, SREG
|
in r15, SREG
|
||||||
push r16
|
push r16
|
||||||
inr r16, COM_CLK1_INPUT ; read clk state early
|
push r17
|
||||||
rcall COM2W1_HandleClockInterrupt
|
inr r16, COM_CLK1_INPUT ; read clk state early
|
||||||
|
inr r17, COM_DATA1_INPUT ; read data state early
|
||||||
|
rcall COM2W1_HandleClockInterrupt
|
||||||
|
pop r17
|
||||||
pop r16
|
pop r16
|
||||||
out SREG, r15
|
out SREG, r15
|
||||||
pop r15
|
pop r15
|
||||||
@@ -580,6 +583,7 @@ COM2W1_ClkChangeIsr:
|
|||||||
; @routine COM2W1_HandleClockInterrupt @global
|
; @routine COM2W1_HandleClockInterrupt @global
|
||||||
;
|
;
|
||||||
; @param r16 data from COM_CLKn_INPUT
|
; @param r16 data from COM_CLKn_INPUT
|
||||||
|
; @param r17 data from COM_DATAn_INPUT
|
||||||
; @clobbers none
|
; @clobbers none
|
||||||
|
|
||||||
COM2W1_HandleClockInterrupt:
|
COM2W1_HandleClockInterrupt:
|
||||||
@@ -609,20 +613,30 @@ COM2W1_HandleClockInterrupt:
|
|||||||
; @routine com2w1ActOnClock
|
; @routine com2w1ActOnClock
|
||||||
;
|
;
|
||||||
; @param r16 data from COM_CLKn_INPUT
|
; @param r16 data from COM_CLKn_INPUT
|
||||||
|
; @param r17 data from COM_DATAn_INPUT
|
||||||
; @clobbers r16 (r17, r18, X)
|
; @clobbers r16 (r17, r18, X)
|
||||||
|
|
||||||
com2w1ActOnClock:
|
com2w1ActOnClock:
|
||||||
andi r16, (1<<COM_CLK1_PIN)
|
andi r16, (1<<COM_CLK1_PIN)
|
||||||
brne com2w1ActOnClock_clockHigh
|
brne com2w1ActOnClock_clockHigh
|
||||||
; clock low
|
; clock low
|
||||||
ldd r17, Y+COM2W_IFACE_OFFS_MODE
|
ldd r18, Y+COM2W_IFACE_OFFS_MODE
|
||||||
cpi r17, COM2W_MODE_IDLE
|
cpi r18, COM2W_MODE_IDLE
|
||||||
brne com2w1ActOnClock_end
|
breq com2w1ActOnClock_startReading
|
||||||
|
cpi r18, COM2W_MODE_SKIPPING
|
||||||
|
breq com2w1ActOnClock_skipping
|
||||||
|
rjmp com2w1ActOnClock_end
|
||||||
|
com2w1ActOnClock_skipping:
|
||||||
|
; ldd r18, Y+COM2W_IFACE_OFFS_MODECOUNTER
|
||||||
|
; cpi r18, COM2W_SKIPPING_MAXMODECOUNTER
|
||||||
|
; brcc com2w1ActOnClock_startReading
|
||||||
|
rjmp com2w1ActOnClock_end
|
||||||
|
com2w1ActOnClock_startReading:
|
||||||
rcall com2wStartReading ; (r16, r17, X)
|
rcall com2wStartReading ; (r16, r17, X)
|
||||||
rjmp com2w1ActOnClock_end
|
rjmp com2w1ActOnClock_end
|
||||||
com2w1ActOnClock_clockHigh:
|
com2w1ActOnClock_clockHigh:
|
||||||
ldd r17, Y+COM2W_IFACE_OFFS_MODE
|
ldd r18, Y+COM2W_IFACE_OFFS_MODE
|
||||||
cpi r17, COM2W_MODE_READING
|
cpi r18, COM2W_MODE_READING
|
||||||
brne com2w1ActOnClock_end
|
brne com2w1ActOnClock_end
|
||||||
|
|
||||||
push r20
|
push r20
|
||||||
|
|||||||
Reference in New Issue
Block a user