diff --git a/avr/devices/all/includes.asm b/avr/devices/all/includes.asm index b0cfb68..c76ac9a 100644 --- a/avr/devices/all/includes.asm +++ b/avr/devices/all/includes.asm @@ -53,6 +53,15 @@ .include "modules/uart_bitbang2/lowlevel.asm" #endif +#ifdef MODULES_UART_HW +.include "modules/uart_hw/defs.asm" +.include "modules/uart_hw/lowlevel.asm" +.include "modules/uart_hw/uart.asm" +.include "modules/uart_hw/attn.asm" +.include "modules/uart_hw/net_uart.asm" +#endif + + #ifdef MODULES_COMONUART0 .include "modules/uart_hw/defs.asm" .include "modules/uart_hw/lowlevel.asm" diff --git a/avr/devices/all/main.asm b/avr/devices/all/main.asm index c86ffe4..adad9ec 100644 --- a/avr/devices/all/main.asm +++ b/avr/devices/all/main.asm @@ -94,6 +94,10 @@ onSystemTimerTick: rcall UART_BitBang_Every100ms #endif +#ifdef MODULES_UART_HW + rcall NET_Uart_Periodically +#endif + #ifdef MODULES_TTYONUART1 rcall TtyOnUart1_Periodically #endif diff --git a/avr/devices/all/modules.asm b/avr/devices/all/modules.asm index 571a5f5..0e5249b 100644 --- a/avr/devices/all/modules.asm +++ b/avr/devices/all/modules.asm @@ -61,6 +61,10 @@ initModules: rcall UART_BitBang_Init #endif +#ifdef MODULES_UART_HW + rcall NET_Uart_Init +#endif + #ifdef MODULES_TTYONUART1 rcall TtyOnUart1_Init #endif @@ -165,6 +169,10 @@ runModules_Com: runModules_ComEnd: #endif +#ifdef MODULES_UART_HW + rcall NET_Uart_Run +#endif + #ifdef MODULES_TTYONUART1 rcall TtyOnUart1_Run #endif diff --git a/avr/devices/c01/defs.asm b/avr/devices/c01/defs.asm index 6df1f40..46aee57 100644 --- a/avr/devices/c01/defs.asm +++ b/avr/devices/c01/defs.asm @@ -84,7 +84,7 @@ ; --------------------------------------------------------------------------- ; ComOnUart module -.equ USART0_DATAREG = UDR +.equ USART0_DATAREG = UDR .equ UCSR0A = UCSRA .equ UCSR0B = UCSRB .equ UCSR0C = UCSRC diff --git a/avr/devices/c01/main/main.asm b/avr/devices/c01/main/main.asm index 7f11e37..9b66edf 100644 --- a/avr/devices/c01/main/main.asm +++ b/avr/devices/c01/main/main.asm @@ -31,7 +31,7 @@ ; --------------------------------------------------------------------------- ; generic -.equ NET_BUFFERS_NUM = 6 +.equ NET_BUFFERS_NUM = 8 .equ NET_BUFFERS_SIZE = 32 @@ -50,7 +50,9 @@ #define MODULES_XRAM #define MODULES_LED_SIMPLE #define MODULES_NETWORK -#define MODULES_COMONUART0 +;#define MODULES_COMONUART0 +#define MODULES_UART_HW + ;#define MODULES_UART_BITBANG ;#define MODULES_TWI_MASTER ;#define MODULES_LCD @@ -107,7 +109,8 @@ ; --------------------------------------------------------------------------- ; Reset and interrupt vectors rjmp BOOTLOADER_ADDR ; 1: Reset vector RESET - rjmp ComOnUart0_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 +; rjmp ComOnUart0_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 + reti reti ; 3: INT1 External Interrupt Request 1 reti ; 4: TIMER1_CAPT Timer/Counter1 Capture Event reti ; 5: TIMER1_COMPA Timer/Counter1 Compare Match A @@ -115,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 ComOnUart0_RxCharIsr ; 10: USART_RXC USART Rx Complete - rjmp ComOnUart0_TxUdreIsr ; 11: USART_UDRE USART Data Register Empty - rjmp ComOnUart0_TxCharIsr ; 12: USART_TXC USART Tx 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 ; 13: ANA_COMP Analog Comparator reti ; 14: INT2 External Interrupt Request 2 rjmp baseTimerIrqOC0A ; 15: TIMER0_COMP Timer/Counter0 Compare Match @@ -206,7 +209,7 @@ onEveryLoop: ; --------------------------------------------------------------------------- ; defines for network interface -.equ netInterfaceData = comonuart0_iface +.equ netInterfaceData = netUartIface diff --git a/avr/modules/uart_hw/attn.asm b/avr/modules/uart_hw/attn.asm new file mode 100644 index 0000000..6217f57 --- /dev/null +++ b/avr/modules/uart_hw/attn.asm @@ -0,0 +1,102 @@ +; *************************************************************************** +; copyright : (C) 2025 by Martin Preuss +; email : martin@libchipcard.de +; +; *************************************************************************** +; * This file is part of the project "AqHome". * +; * Please see toplevel file COPYING of that project for license details. * +; *************************************************************************** + + + +; *************************************************************************** +; code + +.cseg + + +; --------------------------------------------------------------------------- +; @routine ATTN_Init @global +; +; @clobbers R16 + +ATTN_Init: +.ifdef INT0 + .if COM_IRQ_BIT_ATTN == INT0 + M_IO_READ r16, MCUCR + cbr r16, (1<