adapt com2w1 from com2w0 (the latter is proven to work now).
This commit is contained in:
@@ -184,9 +184,9 @@ com2w1DataSetLow:
|
||||
; @clobbers r16, r17, r18, r20, r22
|
||||
|
||||
com2w1ReadNextBit:
|
||||
ldi r20, 50 ; wait for up to 250us for clock rise
|
||||
rcall com2w1WaitForClockHighMulti5Us ; (R20, R22)
|
||||
brcc com2w1ReadNextBit_end
|
||||
; ldi r20, 50 ; wait for up to 250us for clock rise
|
||||
; rcall com2w1WaitForClockHighMulti5Us ; (R20, R22)
|
||||
; brcc com2w1ReadNextBit_end
|
||||
; clock is high now, read bit
|
||||
inr r17, COM_DATA1_INPUT
|
||||
; reset read timer (for leaving skipping mode)
|
||||
@@ -306,7 +306,7 @@ com2w1WaitForClockLowMulti5Us_stateReached:
|
||||
|
||||
com2w1SendMsg:
|
||||
ldi r20, 11 ; wait for about 55us for clock low
|
||||
rcall com2w1WaitForClockLowMulti5Us
|
||||
rcall com2w1WaitForClockLowMulti5Us ; (R20, R22)
|
||||
brcs com2w1SendMsg_busy ; CLK got low while waiting, so line is busy
|
||||
push r15
|
||||
in r15, SREG
|
||||
@@ -443,7 +443,7 @@ com2w1ModeJumpTable:
|
||||
; @clobbers R16, R17, R22, R24, R25, X
|
||||
|
||||
com2w1RunIdle:
|
||||
rjmp com2w1RunIdle_end ; DEBUG
|
||||
;rjmp com2w1RunIdle_end ; DEBUG
|
||||
push r15
|
||||
in r15, SREG
|
||||
cli
|
||||
@@ -468,7 +468,7 @@ com2w1RunIdle_haveMsg:
|
||||
adiw xh:xl, 1
|
||||
rcall com2w1SendMsg ; (R16, R17, R22, R24, R25, X)
|
||||
push r15
|
||||
inr r15, SREG ; save SREG (no CLI, we want to save CFLAG only)
|
||||
in r15, SREG ; save SREG (no CLI, we want to save CFLAG only)
|
||||
ldi r16, COM2W_MODE_IDLE
|
||||
rcall com2wSetMode ; (R17)
|
||||
out SREG, r15 ; restore SREG
|
||||
@@ -613,19 +613,24 @@ COM2W1_HandleClockInterrupt:
|
||||
|
||||
com2w1ActOnClock:
|
||||
andi r16, (1<<COM_CLK1_PIN)
|
||||
brne com2w1ActOnClock_end
|
||||
brne com2w1ActOnClock_clockHigh
|
||||
; clock low
|
||||
ldd r17, Y+COM2W_IFACE_OFFS_MODE
|
||||
cpi r17, COM2W_MODE_READING
|
||||
breq com2w1ActOnClock_readBit
|
||||
cpi r17, COM2W_MODE_IDLE
|
||||
brne com2w1ActOnClock_end
|
||||
rcall com2wStartReading ; (r16, r17, X)
|
||||
com2w1ActOnClock_readBit:
|
||||
rjmp com2w1ActOnClock_end
|
||||
com2w1ActOnClock_clockHigh:
|
||||
ldd r17, Y+COM2W_IFACE_OFFS_MODE
|
||||
cpi r17, COM2W_MODE_READING
|
||||
brne com2w1ActOnClock_end
|
||||
|
||||
push r20
|
||||
push r22
|
||||
rcall com2w1ReadNextBit ; (r16, r17, r18, r20, r22)
|
||||
pop r22
|
||||
pop r20
|
||||
|
||||
com2w1ActOnClock_end:
|
||||
ret
|
||||
; @end
|
||||
|
||||
Reference in New Issue
Block a user