com2w: simplified module.
This commit is contained in:
@@ -10,6 +10,8 @@
|
|||||||
#ifndef AVR_MODULES_COM2W_COM2W_H
|
#ifndef AVR_MODULES_COM2W_COM2W_H
|
||||||
#define AVR_MODULES_COM2W_COM2W_H
|
#define AVR_MODULES_COM2W_COM2W_H
|
||||||
|
|
||||||
|
; only currently working com2w module!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.macro M_COM2WCLKSETLOW
|
.macro M_COM2WCLKSETLOW
|
||||||
@@ -210,7 +212,6 @@ com2wReceiveNextPkg_copyLoop:
|
|||||||
#ifdef MODULES_LED_ACTIVITY
|
#ifdef MODULES_LED_ACTIVITY
|
||||||
rcall LedActivity_Trigger ; (r16)
|
rcall LedActivity_Trigger ; (r16)
|
||||||
#endif
|
#endif
|
||||||
sec
|
|
||||||
rjmp com2wReceiveNextPkg_end
|
rjmp com2wReceiveNextPkg_end
|
||||||
com2wReceiveNextPkg_eCrc:
|
com2wReceiveNextPkg_eCrc:
|
||||||
push r16
|
push r16
|
||||||
@@ -226,7 +227,6 @@ com2wReceiveNextPkg_eMissed:
|
|||||||
; fall-through to release buffer
|
; fall-through to release buffer
|
||||||
com2wReceiveNextPkg_relBuffer:
|
com2wReceiveNextPkg_relBuffer:
|
||||||
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
||||||
clc
|
|
||||||
com2wReceiveNextPkg_end:
|
com2wReceiveNextPkg_end:
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -370,7 +370,6 @@ com2wSendByte_sent:
|
|||||||
; Receive a packet into buffer pointed to by X.
|
; Receive a packet into buffer pointed to by X.
|
||||||
; Expects interrupts to be disabled.
|
; Expects interrupts to be disabled.
|
||||||
;
|
;
|
||||||
; @param R18 COM address to listen to
|
|
||||||
; @param R19 max buffer size
|
; @param R19 max buffer size
|
||||||
; @param X buffer to receive to
|
; @param X buffer to receive to
|
||||||
; @return CFLAG set if msg received, cleared on error (see R16)
|
; @return CFLAG set if msg received, cleared on error (see R16)
|
||||||
@@ -378,30 +377,16 @@ com2wSendByte_sent:
|
|||||||
; @clobbers r16, r17, r18, r19, r20, r22, r24, r25, X
|
; @clobbers r16, r17, r18, r19, r20, r22, r24, r25, X
|
||||||
|
|
||||||
com2wRecvMsg:
|
com2wRecvMsg:
|
||||||
mov r21, r18 ; address
|
; check buffer size
|
||||||
|
subi r19, 2
|
||||||
|
brcs com2wRecvMsg_eBadSize
|
||||||
; read destination address
|
; read destination address
|
||||||
rcall com2wRecvByte ; (r17, r18, r20, r22)
|
rcall com2wRecvByte ; (r17, r18, r20, r22)
|
||||||
brcc com2wRecvMsg_eIo
|
brcc com2wRecvMsg_eIo
|
||||||
; check destination address
|
|
||||||
rjmp com2wRecvMsg_forMe ; DEBUG: don't check address
|
|
||||||
cp r16, r21
|
|
||||||
breq com2wRecvMsg_forMe
|
|
||||||
cpi r16, 0xff
|
|
||||||
breq com2wRecvMsg_forMe
|
|
||||||
clr r16
|
|
||||||
rjmp com2wRecvMsg_clcRet
|
|
||||||
com2wRecvMsg_forMe:
|
|
||||||
; store in buffer
|
|
||||||
subi r19, 1
|
|
||||||
brcs com2wRecvMsg_eBadSize
|
|
||||||
st X+, r16
|
st X+, r16
|
||||||
|
|
||||||
; read remaining msg size
|
; read remaining msg size
|
||||||
rcall com2wRecvByte ; (r17, r18, r20, r22)
|
rcall com2wRecvByte ; (r17, r18, r20, r22)
|
||||||
brcc com2wRecvMsg_eIo
|
brcc com2wRecvMsg_eIo
|
||||||
; store in buffer
|
|
||||||
subi r19, 1
|
|
||||||
brcs com2wRecvMsg_eBadSize
|
|
||||||
st X+, r16
|
st X+, r16
|
||||||
inc r16 ; account for CRC byte
|
inc r16 ; account for CRC byte
|
||||||
sub r19, r16
|
sub r19, r16
|
||||||
@@ -468,10 +453,10 @@ com2wRecvByte:
|
|||||||
ldi r17, 8
|
ldi r17, 8
|
||||||
clr r16
|
clr r16
|
||||||
com2wRecvByte_loop:
|
com2wRecvByte_loop:
|
||||||
ldi r20, 50 ; wait up to 500us for clock low
|
ldi r20, 100 ; wait up to 1ms for clock low
|
||||||
rcall com2wWaitForClockLowMulti10Us ; (R20, R22)
|
rcall com2wWaitForClockLowMulti10Us ; (R20, R22)
|
||||||
brcc com2wRecvByte_end
|
brcc com2wRecvByte_end
|
||||||
ldi r20, 100 ; wait up to 1ms for clock high
|
ldi r20, 100 ; wait up to 1ms for clock high
|
||||||
rcall com2wWaitForClockHighMulti10Us ; (R20, R22)
|
rcall com2wWaitForClockHighMulti10Us ; (R20, R22)
|
||||||
brcc com2wRecvByte_end
|
brcc com2wRecvByte_end
|
||||||
; handle received bit
|
; handle received bit
|
||||||
|
|||||||
Reference in New Issue
Block a user