avr: share code.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2024 by Martin Preuss
|
||||
; copyright : (C) 2025 by Martin Preuss
|
||||
; email : martin@libchipcard.de
|
||||
;
|
||||
; ***************************************************************************
|
||||
|
||||
@@ -25,8 +25,9 @@
|
||||
.equ clock=8000000 ; Define the clock frequency
|
||||
|
||||
;.equ SEND_DEVICE_EVERY = 3000
|
||||
.equ SEND_DEVICE_EVERY = 520 ; every 52s
|
||||
.equ SEND_STATS_EVERY = 240 ; every 24s
|
||||
.equ SEND_DEVICE_EVERY = 3000 ; every 5mins
|
||||
.equ SEND_STATS_EVERY = 3100 ; about every 5mins
|
||||
;.equ SEND_STATS_EVERY = 300 ; every 30s
|
||||
.equ SEND_DEBUG_EVERY = 110
|
||||
|
||||
.nolist
|
||||
@@ -73,11 +74,11 @@
|
||||
;#define MODULES_MOTION
|
||||
|
||||
|
||||
.equ NET_BUFFERS_NUM = 6
|
||||
.equ NET_BUFFERS_NUM = 8
|
||||
.equ NET_BUFFERS_SIZE = 32
|
||||
|
||||
.equ UART_HW_MSGNUMINBUF_SIZE = 6
|
||||
.equ UART_HW_MSGNUMOUTBUF_SIZE = 6
|
||||
.equ UART_HW_MSGNUMINBUF_SIZE = 8
|
||||
.equ UART_HW_MSGNUMOUTBUF_SIZE = 8
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
@@ -499,21 +500,6 @@ checkRecvdMsg:
|
||||
rcall NET_PeekNextIncomingMsgNum ; check read queue (bufNum->r16)
|
||||
brcc checkRecvdMsg_end ; no msg, jmp
|
||||
rcall NET_Buffer_Locate ; (R17)
|
||||
push r16
|
||||
push xl
|
||||
push xh
|
||||
adiw xh:xl, 1
|
||||
rcall NETMSG_CheckMessageInBuffer ; (R16, R17, R18, R19, R20, X)
|
||||
pop xh
|
||||
pop xl
|
||||
pop r16
|
||||
brcs checkRecvdMsg_sendMsg
|
||||
; release buffer
|
||||
rcall NET_GetNextIncomingMsgNum ; take off the queue
|
||||
rcall NET_Buffer_ReleaseByNum ; delete
|
||||
clc
|
||||
rjmp checkRecvdMsg_end
|
||||
checkRecvdMsg_sendMsg:
|
||||
ld r17, X
|
||||
andi r17, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT)
|
||||
rcall reverseInterfaceNum
|
||||
|
||||
@@ -20,11 +20,13 @@
|
||||
; @clobbers R16, R17, X
|
||||
|
||||
NET_Init:
|
||||
#if 0
|
||||
ldi xh, HIGH(networkDataBegin)
|
||||
ldi xl, LOW(networkDataBegin)
|
||||
clr r16
|
||||
ldi r17, (networkDataEnd-networkDataBegin)
|
||||
rcall Utils_FillSram ; (R17, X)
|
||||
#endif
|
||||
|
||||
rcall NET_Buffer_Init ; (R16, R17, X)
|
||||
|
||||
|
||||
@@ -512,19 +512,7 @@ comOnUart0RunSkipping_end:
|
||||
; @clobbers R16 (R17, R18, R24, R25)
|
||||
|
||||
comOnUart0RunMsgReceived:
|
||||
ldi r17, 0xff
|
||||
ldd r16, Y+UART_HW_IFACE_OFFS_READBUFNUM
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r17
|
||||
rcall NET_AddIncomingMsgNum ; (R17, R18, X)
|
||||
brcs comOnUart0RunMsgReceived_enterIdle
|
||||
; could not add msg
|
||||
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
||||
ldi r16, NET_IFACE_OFFS_ERR_NOBUF_LOW
|
||||
rcall NET_Interface_IncCounter16 ; (R24, R25)
|
||||
comOnUart0RunMsgReceived_enterIdle:
|
||||
ldi r17, UART_HW_READMODE_IDLE
|
||||
std Y+UART_HW_IFACE_OFFS_READMODE, r17 ; set read mode
|
||||
ret
|
||||
rjmp UART_HW_Interface_HandleMsgReceived
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
@@ -110,3 +110,43 @@ UART_HW_Interface_EnsureReadBuffer_noBuf:
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine UART_HW_Interface_HandleMsgReceived
|
||||
;
|
||||
; @param Y pointer to interface data in SRAM
|
||||
; @clobbers R16 (R17, R18, R24, R25)
|
||||
|
||||
UART_HW_Interface_HandleMsgReceived:
|
||||
; unset buffer
|
||||
ldi r17, 0xff
|
||||
ldd r16, Y+UART_HW_IFACE_OFFS_READBUFNUM
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r17
|
||||
cp r16, r17
|
||||
breq UART_HW_Interface_HandleMsgReceived_enterIdle ; SNH!
|
||||
; check checksum
|
||||
rcall NET_Buffer_Locate ; (R17)
|
||||
push r16
|
||||
adiw xh:xl, 1
|
||||
rcall NETMSG_CheckMessageInBuffer ; (R16, R17, R18, R19, R20, X)
|
||||
pop r16
|
||||
brcs UART_HW_Interface_HandleMsgReceived_addMsg
|
||||
; invalid msg
|
||||
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
||||
ldi r16, NET_IFACE_OFFS_ERR_CONTENT_LOW
|
||||
rjmp UART_HW_Interface_HandleMsgReceived_incCounterGoIdle
|
||||
UART_HW_Interface_HandleMsgReceived_addMsg:
|
||||
rcall NET_AddIncomingMsgNum ; (R17, R18, X)
|
||||
brcs UART_HW_Interface_HandleMsgReceived_enterIdle
|
||||
; could not add msg
|
||||
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
||||
ldi r16, NET_IFACE_OFFS_ERR_MISSED_LOW
|
||||
UART_HW_Interface_HandleMsgReceived_incCounterGoIdle:
|
||||
rcall NET_Interface_IncCounter16 ; (R24, R25)
|
||||
UART_HW_Interface_HandleMsgReceived_enterIdle:
|
||||
ldi r17, UART_HW_READMODE_IDLE
|
||||
std Y+UART_HW_IFACE_OFFS_READMODE, r17 ; set read mode
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -395,21 +395,7 @@ ttyOnUart1RunSkipping_end:
|
||||
; @clobbers R16 (R17, R18, R24, R25)
|
||||
|
||||
ttyOnUart1RunMsgReceived:
|
||||
ldi r17, 0xff
|
||||
ldd r16, Y+UART_HW_IFACE_OFFS_READBUFNUM
|
||||
cp r16, r17
|
||||
breq comOnUart1RunMsgReceived_enterIdle
|
||||
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r17
|
||||
rcall NET_AddIncomingMsgNum ; (R17, R18, X)
|
||||
brcs comOnUart1RunMsgReceived_enterIdle
|
||||
; could not add msg
|
||||
rcall NET_Buffer_ReleaseByNum ; (R16, X)
|
||||
ldi r16, NET_IFACE_OFFS_ERR_NOBUF_LOW
|
||||
rcall NET_Interface_IncCounter16 ; (R24, R25)
|
||||
comOnUart1RunMsgReceived_enterIdle:
|
||||
ldi r17, UART_HW_READMODE_IDLE
|
||||
std Y+UART_HW_IFACE_OFFS_READMODE, r17 ; set read mode
|
||||
ret
|
||||
rjmp UART_HW_Interface_HandleMsgReceived
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user