avr: more work on uart_hw.

This commit is contained in:
Martin Preuss
2025-03-14 23:29:43 +01:00
parent 14c9ac17a1
commit 72c8923bfe

View File

@@ -201,7 +201,7 @@ comOnUart0RunWriteModes:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; @routine comOnUart0RunIdle ; @routine comOnUart0RunWriteIdle
; ;
; @clobbers ; @clobbers
@@ -209,10 +209,18 @@ comOnUart0RunWriteIdle:
ldd r16, Y+NET_IFACE_OFFS_WRITETIMER ldd r16, Y+NET_IFACE_OFFS_WRITETIMER
cpi r16, TTYONUART1_MSG_INTERVAL ; wait a bit between messages cpi r16, TTYONUART1_MSG_INTERVAL ; wait a bit between messages
brcs comOnUart0RunWriteIdle_end brcs comOnUart0RunWriteIdle_end
sbis COM_ATTN_INPUT, COM_ATTN_PIN ; ATTN low?
rjmp comOnUart0RunWriteIdle_end ; yes, jmp
rcall NET_Interface_GetNextOutgoingMsgNum ; (R17, R18, X) rcall NET_Interface_GetNextOutgoingMsgNum ; (R17, R18, X)
brcc comOnUart0RunWriteIdle_end brcc comOnUart0RunWriteIdle_end
rcall NET_Buffer_Locate ; (R17) rcall NET_Buffer_Locate ; (R17)
brcc comOnUart0RunWriteIdle_end brcc comOnUart0RunWriteIdle_end
sbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN as output
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; set ATTN low
rcall ComOnUart0_SendBuffer ; (R16, R17) rcall ComOnUart0_SendBuffer ; (R16, R17)
comOnUart0RunWriteIdle_end: comOnUart0RunWriteIdle_end:
ret ret
@@ -256,6 +264,10 @@ comOnUart0RunWriteBufferEmpty:
rcall NET_Buffer_ReleaseByNum ; (R16, X) rcall NET_Buffer_ReleaseByNum ; (R16, X)
comOnUart0RunWriteBufferEmpty_setIdle: comOnUart0RunWriteBufferEmpty_setIdle:
rcall UART_HW_Uart0_StopTx ; disable transceiver and interrupts (R16) rcall UART_HW_Uart0_StopTx ; disable transceiver and interrupts (R16)
cbi COM_ATTN_DDR, COM_ATTN_PIN ; set ATTN as input
cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable pullup on ATTN
ldi r16, UART_HW_WRITEMODE_IDLE ldi r16, UART_HW_WRITEMODE_IDLE
std Y+UART_HW_IFACE_OFFS_WRITEMODE, r16 std Y+UART_HW_IFACE_OFFS_WRITEMODE, r16
ldi r16, NET_IFACE_OFFS_PACKETSOUT_LOW ; increment packets counter ldi r16, NET_IFACE_OFFS_PACKETSOUT_LOW ; increment packets counter