avr: more work on ardware uart code.

This commit is contained in:
Martin Preuss
2025-02-09 21:06:31 +01:00
parent 601559ca6e
commit 703f8042f9
8 changed files with 698 additions and 97 deletions

View File

@@ -19,9 +19,7 @@
; incoming message ringbuffer.
;
; @param Y pointer to start of interface data
; @param X pointer to start of buffer
; @param r16 buffer number
; @clobbers R16, R17, R18, R19, R20, R21, X
; @clobbers R16, R20 (R17, R18, R18, R19, R20, R21, X)
UART_HW_Interface_RunRead:
ldd r16, Y+UART_HW_IFACE_OFFS_READMSG_BUFNUM
@@ -71,12 +69,12 @@ UART_HW_Interface_RunRead_HaveMsg:
std Y+UART_HW_IFACE_OFFS_READMSG_BUFNUM, r16
rjmp UART_HW_Interface_RunRead_end
UART_HW_Interface_RunRead_ovrError:
rcall uartHwIncOvrCounter
rcall uartHwReadResetBuffer
rcall uartHwIncOvrCounter ; (R16)
rcall uartHwReadResetBuffer ; (R16, X)
rjmp UART_HW_Interface_RunRead_end
UART_HW_Interface_RunRead_dataError:
rcall uartHwIncContentCounter
rcall uartHwResetBufferStartSkipping
rcall uartHwIncContentCounter ; (R16)
rcall uartHwResetBufferStartSkipping ; (R16, X)
UART_HW_Interface_RunRead_end:
ret
; @end
@@ -129,11 +127,11 @@ uartHwReadResetBuffer_haveBuffer:
; @routine uartHwResetBufferStartSkipping
;
; @param Y pointer to start of interface data
; @clobbers r16, X
; @clobbers r16 (X)
uartHwResetBufferStartSkipping:
; reset READ buffer settings, enter skip mode
rcall uartHwReadResetBuffer
rcall uartHwReadResetBuffer ; (R16, X)
ldd r16, Y+UART_HW_IFACE_OFFS_MODE
ori r16, UART_HW_MODE_SKIPPING
std Y+UART_HW_IFACE_OFFS_MODE, r16