avr/uart_hw, t03: cross messaging now works!!

This commit is contained in:
Martin Preuss
2025-03-22 23:44:15 +01:00
parent 8586269033
commit 595f983071
5 changed files with 81 additions and 50 deletions

View File

@@ -369,9 +369,18 @@ ttyOnUart1RunReading:
; @clobbers R16
ttyOnUart1RunSkipping:
ldi r17, 0xff
ldd r16, Y+UART_HW_IFACE_OFFS_READBUFNUM
std Y+UART_HW_IFACE_OFFS_READBUFNUM, r17
cp r16, r17
breq ttyOnUart1RunSkipping_checkTimer
rcall NET_Buffer_ReleaseByNum ; (R16, X)
ttyOnUart1RunSkipping_checkTimer:
ldd r16, Y+NET_IFACE_OFFS_READTIMER
cpi r16, TTYONUART1_SKIPTIME
brcs ttyOnUart1RunSkipping_end
; leave skip mode (enter idle)
ldi r16, UART_HW_READMODE_IDLE
std Y+UART_HW_IFACE_OFFS_READMODE, r16
ttyOnUart1RunSkipping_end:
@@ -388,6 +397,8 @@ ttyOnUart1RunSkipping_end:
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
@@ -396,7 +407,6 @@ ttyOnUart1RunMsgReceived:
ldi r16, NET_IFACE_OFFS_ERR_NOBUF_LOW
rcall NET_Interface_IncCounter16 ; (R24, R25)
comOnUart1RunMsgReceived_enterIdle:
rcall UART_HW_Interface_EnsureReadBuffer ; (R16, R17, R24, R25, X)
ldi r17, UART_HW_READMODE_IDLE
std Y+UART_HW_IFACE_OFFS_READMODE, r17 ; set read mode
ret