From aceffdfad21e3b2dd43b611c12cf4d0aeb1f7213 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Tue, 20 May 2025 00:30:39 +0200 Subject: [PATCH] uart_hw: removed unneeded code. --- avr/devices/all/main.asm | 2 +- avr/devices/c01/main/main.asm | 14 +- avr/modules/uart_hw/net_uart.asm | 337 ++++++++++++---------- avr/modules/uart_hw/uart.asm | 465 ++++++++++++------------------- 4 files changed, 377 insertions(+), 441 deletions(-) diff --git a/avr/devices/all/main.asm b/avr/devices/all/main.asm index adad9ec..31ed484 100644 --- a/avr/devices/all/main.asm +++ b/avr/devices/all/main.asm @@ -95,7 +95,7 @@ onSystemTimerTick: #endif #ifdef MODULES_UART_HW - rcall NET_Uart_Periodically + rcall NET_Uart_Every100ms #endif #ifdef MODULES_TTYONUART1 diff --git a/avr/devices/c01/main/main.asm b/avr/devices/c01/main/main.asm index 9b66edf..0ee6818 100644 --- a/avr/devices/c01/main/main.asm +++ b/avr/devices/c01/main/main.asm @@ -52,7 +52,8 @@ #define MODULES_NETWORK ;#define MODULES_COMONUART0 #define MODULES_UART_HW - +#define MODULES_SPI_HW +#define MODULES_ILI9341 ;#define MODULES_UART_BITBANG ;#define MODULES_TWI_MASTER ;#define MODULES_LCD @@ -109,8 +110,7 @@ ; --------------------------------------------------------------------------- ; Reset and interrupt vectors rjmp BOOTLOADER_ADDR ; 1: Reset vector RESET -; rjmp ComOnUart0_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 - reti + rjmp NetUart_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 reti ; 3: INT1 External Interrupt Request 1 reti ; 4: TIMER1_CAPT Timer/Counter1 Capture Event reti ; 5: TIMER1_COMPA Timer/Counter1 Compare Match A @@ -118,9 +118,9 @@ reti ; 7: TIMER1_OVF Timer/Counter1 Overflow reti ; 8: TIMER0_OVF Timer/Counter0 Overflow reti ; 9: SPI_STC Serial Transfer Complete - rjmp Uart_RxCharIsr ; 10: USART_RXC USART Rx Complete - rjmp Uart_UdreIsr ; 11: USART_UDRE USART Data Register Empty - rjmp Uart_TxCharIsr ; 12: USART_TXC USART Tx Complete + reti ; 10: USART_RXC USART Rx Complete + reti ; 11: USART_UDRE USART Data Register Empty + reti ; 12: USART_TXC USART Tx Complete reti ; 13: ANA_COMP Analog Comparator reti ; 14: INT2 External Interrupt Request 2 rjmp baseTimerIrqOC0A ; 15: TIMER0_COMP Timer/Counter0 Compare Match @@ -202,7 +202,7 @@ onEveryLoop: .include "devices/all/hw_m8515.asm" .include "devices/all/includes.asm" -.include "common/debug.asm" +;.include "common/debug.asm" diff --git a/avr/modules/uart_hw/net_uart.asm b/avr/modules/uart_hw/net_uart.asm index 022906b..6f9b872 100644 --- a/avr/modules/uart_hw/net_uart.asm +++ b/avr/modules/uart_hw/net_uart.asm @@ -11,7 +11,6 @@ ; *************************************************************************** ; defines -.equ NET_UART_MSG_INTERVAL = 1 @@ -46,195 +45,229 @@ NET_Uart_Init: -; --------------------------------------------------------------------------- -; @routine NET_Uart_Run @global -; -; @clobbers all - -NET_Uart_Run: - push r15 - in r15, SREG - cli - ldi yl, LOW(netUartIface) - ldi yh, HIGH(netUartIface) - rcall netUartRunReadModes - ldd r16, Y+UART_HW_IFACE_OFFS_READMODE ; test for active read mode - cpi r16, UART_HW_READMODE_IDLE - brne NET_Uart_Run_end - rcall netUartRunWriteModes ; only call write routine if read idle -NET_Uart_Run_end: - pop r15 - out SREG, r15 - ret -; @end - - - ; --------------------------------------------------------------------------- ; @routine NET_Uart_Periodically ; ; @clobbers all, !Y -NET_Uart_Periodically: +NET_Uart_Every100ms: ldi yl, LOW(netUartIface) ldi yh, HIGH(netUartIface) + push r15 + in r15, SREG + cli + rcall NET_Interface_Periodically ; (R16) + rcall netUartSendNextPkg + out SREG, r15 + pop r15 + ret rjmp NET_Interface_Periodically ; @end +; --------------------------------------------------------------------------- +; @routine netUartSendNextPkg +; +; Check whether there is an outgoing message in interface data +; and send it if possible. +; +; @return CFLAG set if okay, clear on error +; @param Y pointer to start of interface data +; @clobbers R16, R17, R18, R21, R21, R24, R25, X + +netUartSendNextPkg: + rcall NET_Interface_PeekNextOutgoingMsgNum ; (R17, R18, X) + brcc netUartSendNextPkg_end + rcall NET_Buffer_Locate ; get pointer to buffer (R17) + brcc netUartSendNextPkg_end + adiw xh:xl, 1 ; skip buffer header + rcall netUartSendPacketWithAttn ; (R16, R17, R21, R22, X) + brcc netUartSendNextPkg_error + rcall NET_Interface_GetNextOutgoingMsgNum ; remove from stack (R17, R18, X) + rcall NET_Buffer_ReleaseByNum ; release buffer (R16, X) + ldi r16, NET_IFACE_OFFS_PACKETSOUT_LOW + rcall NET_Interface_IncCounter16 ; (R24, R25) + sec + rjmp netUartSendNextPkg_end +netUartSendNextPkg_error: + rcall NET_Interface_IncCounter16 ; (R24, R25) + clc +netUartSendNextPkg_end: + ret +; @end + + ; --------------------------------------------------------------------------- -; @routine netUartRunWriteModes +; @routine netUartSendPacket ; -; @clobbers all, !Y +; @param X buffer to send +; @return CFLAG set if okay, cleared on error +; @return R16 error code (if CFLAG cleared) +; @clobbers R16, R17, R22, X -netUartRunWriteModes: - ldd r16, Y+UART_HW_IFACE_OFFS_WRITEMODE ; handle write functions - cpi r16, UART_HW_WRITEMODE_IDLE - breq netUartRunWriteIdle - cpi r16, UART_HW_WRITEMODE_WRITING - breq netUartRunWriting - cpi r16, UART_HW_WRITEMODE_WAITBUFFEREMPTY - breq netUartRunWaitBufferEmpty - cpi r16, UART_HW_WRITEMODE_WRITEBUFFEREMPTY - breq netUartRunWriteBufferEmpty - ret -; @end - - - -netUartRunWaitBufferEmpty: - rcall UART_GetFlags ; (none) - ldi r17, (1< 7 per loop, max about 1000 + clc ; 1 + ret ; 4 +uartWaitForData_gotit: + sec ; 1 + ret ; 4 +; @end + + + + + ; --------------------------------------------------------------------------- ; @routine UART_StartRx @global ; ; @clobbers R16 UART_StartRx: - ; clear read error flags - lds r16, uartFlags - cbr r16, (1<