From 72c8923bfe904f6d9cc01b7b94053da48db4b17d Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Fri, 14 Mar 2025 23:29:43 +0100 Subject: [PATCH] avr: more work on uart_hw. --- avr/modules/uart_hw/comonuart0.asm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/avr/modules/uart_hw/comonuart0.asm b/avr/modules/uart_hw/comonuart0.asm index 36ea476..68b512e 100644 --- a/avr/modules/uart_hw/comonuart0.asm +++ b/avr/modules/uart_hw/comonuart0.asm @@ -201,7 +201,7 @@ comOnUart0RunWriteModes: ; --------------------------------------------------------------------------- -; @routine comOnUart0RunIdle +; @routine comOnUart0RunWriteIdle ; ; @clobbers @@ -209,10 +209,18 @@ comOnUart0RunWriteIdle: ldd r16, Y+NET_IFACE_OFFS_WRITETIMER cpi r16, TTYONUART1_MSG_INTERVAL ; wait a bit between messages brcs comOnUart0RunWriteIdle_end + + sbis COM_ATTN_INPUT, COM_ATTN_PIN ; ATTN low? + rjmp comOnUart0RunWriteIdle_end ; yes, jmp + rcall NET_Interface_GetNextOutgoingMsgNum ; (R17, R18, X) brcc comOnUart0RunWriteIdle_end rcall NET_Buffer_Locate ; (R17) 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) comOnUart0RunWriteIdle_end: ret @@ -256,6 +264,10 @@ comOnUart0RunWriteBufferEmpty: rcall NET_Buffer_ReleaseByNum ; (R16, X) comOnUart0RunWriteBufferEmpty_setIdle: 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 std Y+UART_HW_IFACE_OFFS_WRITEMODE, r16 ldi r16, NET_IFACE_OFFS_PACKETSOUT_LOW ; increment packets counter