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
|
; email : martin@libchipcard.de
|
||||||
;
|
;
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
|
|||||||
@@ -25,8 +25,9 @@
|
|||||||
.equ clock=8000000 ; Define the clock frequency
|
.equ clock=8000000 ; Define the clock frequency
|
||||||
|
|
||||||
;.equ SEND_DEVICE_EVERY = 3000
|
;.equ SEND_DEVICE_EVERY = 3000
|
||||||
.equ SEND_DEVICE_EVERY = 520 ; every 52s
|
.equ SEND_DEVICE_EVERY = 3000 ; every 5mins
|
||||||
.equ SEND_STATS_EVERY = 240 ; every 24s
|
.equ SEND_STATS_EVERY = 3100 ; about every 5mins
|
||||||
|
;.equ SEND_STATS_EVERY = 300 ; every 30s
|
||||||
.equ SEND_DEBUG_EVERY = 110
|
.equ SEND_DEBUG_EVERY = 110
|
||||||
|
|
||||||
.nolist
|
.nolist
|
||||||
@@ -73,11 +74,11 @@
|
|||||||
;#define MODULES_MOTION
|
;#define MODULES_MOTION
|
||||||
|
|
||||||
|
|
||||||
.equ NET_BUFFERS_NUM = 6
|
.equ NET_BUFFERS_NUM = 8
|
||||||
.equ NET_BUFFERS_SIZE = 32
|
.equ NET_BUFFERS_SIZE = 32
|
||||||
|
|
||||||
.equ UART_HW_MSGNUMINBUF_SIZE = 6
|
.equ UART_HW_MSGNUMINBUF_SIZE = 8
|
||||||
.equ UART_HW_MSGNUMOUTBUF_SIZE = 6
|
.equ UART_HW_MSGNUMOUTBUF_SIZE = 8
|
||||||
|
|
||||||
|
|
||||||
; ***************************************************************************
|
; ***************************************************************************
|
||||||
@@ -499,21 +500,6 @@ checkRecvdMsg:
|
|||||||
rcall NET_PeekNextIncomingMsgNum ; check read queue (bufNum->r16)
|
rcall NET_PeekNextIncomingMsgNum ; check read queue (bufNum->r16)
|
||||||
brcc checkRecvdMsg_end ; no msg, jmp
|
brcc checkRecvdMsg_end ; no msg, jmp
|
||||||
rcall NET_Buffer_Locate ; (R17)
|
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
|
ld r17, X
|
||||||
andi r17, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT)
|
andi r17, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT)
|
||||||
rcall reverseInterfaceNum
|
rcall reverseInterfaceNum
|
||||||
|
|||||||
@@ -20,11 +20,13 @@
|
|||||||
; @clobbers R16, R17, X
|
; @clobbers R16, R17, X
|
||||||
|
|
||||||
NET_Init:
|
NET_Init:
|
||||||
|
#if 0
|
||||||
ldi xh, HIGH(networkDataBegin)
|
ldi xh, HIGH(networkDataBegin)
|
||||||
ldi xl, LOW(networkDataBegin)
|
ldi xl, LOW(networkDataBegin)
|
||||||
clr r16
|
clr r16
|
||||||
ldi r17, (networkDataEnd-networkDataBegin)
|
ldi r17, (networkDataEnd-networkDataBegin)
|
||||||
rcall Utils_FillSram ; (R17, X)
|
rcall Utils_FillSram ; (R17, X)
|
||||||
|
#endif
|
||||||
|
|
||||||
rcall NET_Buffer_Init ; (R16, R17, X)
|
rcall NET_Buffer_Init ; (R16, R17, X)
|
||||||
|
|
||||||
|
|||||||
@@ -512,19 +512,7 @@ comOnUart0RunSkipping_end:
|
|||||||
; @clobbers R16 (R17, R18, R24, R25)
|
; @clobbers R16 (R17, R18, R24, R25)
|
||||||
|
|
||||||
comOnUart0RunMsgReceived:
|
comOnUart0RunMsgReceived:
|
||||||
ldi r17, 0xff
|
rjmp UART_HW_Interface_HandleMsgReceived
|
||||||
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
|
|
||||||
; @end
|
; @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)
|
; @clobbers R16 (R17, R18, R24, R25)
|
||||||
|
|
||||||
ttyOnUart1RunMsgReceived:
|
ttyOnUart1RunMsgReceived:
|
||||||
ldi r17, 0xff
|
rjmp UART_HW_Interface_HandleMsgReceived
|
||||||
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
|
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user