From 85d445ec6108aed5b10a80f29652f81e42a5da61 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 6 Jul 2025 14:35:52 +0200 Subject: [PATCH] t03: use comonuart0 from uart_hw2 --- avr/devices/t03/defs.asm | 30 +++++++++---- avr/devices/t03/main/main.asm | 80 ++++++++++++++++++++++++++--------- 2 files changed, 80 insertions(+), 30 deletions(-) diff --git a/avr/devices/t03/defs.asm b/avr/devices/t03/defs.asm index 75a19f4..c0841b4 100644 --- a/avr/devices/t03/defs.asm +++ b/avr/devices/t03/defs.asm @@ -54,16 +54,28 @@ .equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400 -.equ COM_ATTN_DDR = DDRA -.equ COM_ATTN_INPUT = PINA -.equ COM_ATTN_OUTPUT = PORTA -.equ COM_ATTN_PUE = PUEA -.equ COM_ATTN_PIN = PORTA0 +.equ COM_ATTN0_DDR = DDRA +.equ COM_ATTN0_INPUT = PINA +.equ COM_ATTN0_OUTPUT = PORTA +.equ COM_ATTN0_PUE = PUEA +.equ COM_ATTN0_PIN = PORTA0 -.equ COM_IRQ_ADDR_ATTN = PCMSK0 -.equ COM_IRQ_BIT_ATTN = PCINT0 ; bit 0 in PCMSK0 -.equ COM_IRQ_GIFR_ATTN = PCIF0 -.equ COM_IRQ_GIMSK_ATTN = PCIE0 +.equ COM_IRQ_ADDR_ATTN0 = PCMSK0 +.equ COM_IRQ_BIT_ATTN0 = PCINT0 ; bit 0 in PCMSK0 +.equ COM_IRQ_GIFR_ATTN0 = PCIF0 +.equ COM_IRQ_GIMSK_ATTN0 = PCIE0 + +; compatibility +.equ COM_ATTN_DDR = COM_ATTN0_DDR +.equ COM_ATTN_INPUT = COM_ATTN0_INPUT +.equ COM_ATTN_OUTPUT = COM_ATTN0_OUTPUT +.equ COM_ATTN_PUE = COM_ATTN0_PUE +.equ COM_ATTN_PIN = COM_ATTN0_PIN + +.equ COM_IRQ_ADDR_ATTN = COM_IRQ_ADDR_ATTN0 +.equ COM_IRQ_BIT_ATTN = COM_IRQ_BIT_ATTN0 +.equ COM_IRQ_GIFR_ATTN = COM_IRQ_GIFR_ATTN0 +.equ COM_IRQ_GIMSK_ATTN = COM_IRQ_GIMSK_ATTN0 diff --git a/avr/devices/t03/main/main.asm b/avr/devices/t03/main/main.asm index 6dcb305..bda6094 100644 --- a/avr/devices/t03/main/main.asm +++ b/avr/devices/t03/main/main.asm @@ -47,12 +47,16 @@ ; --------------------------------------------------------------------------- ; generic +.equ COMONUART0_IFACENUM = 1 +.equ TTYONUART1_IFACENUM = 2 + ; --------------------------------------------------------------------------- ; firmware settings including list of modules used #define MAIN_WITHOUT_MSG_HANDLING ; we do message handling ourselfes +#define APP_STATS_NETDEV2 #define MODULES_CLOCK ;#define MODULES_COM @@ -70,13 +74,14 @@ ;#define MODULES_DS18B20 ;#define MODULES_MOTION #define MODULES_NETWORK -#define MODULES_TTYONUART1 #define MODULES_COMONUART0 +#define MODULES_TTYONUART1 #define APPS_STATS +#define APPS_NETWORK -.equ NET_BUFFERS_NUM = 8 +.equ NET_BUFFERS_NUM = 10 .equ NET_BUFFERS_SIZE = 32 .equ UART_HW_MSGNUMINBUF_SIZE = 8 @@ -87,6 +92,8 @@ ; --------------------------------------------------------------------------- ; defines for values +.equ VALUE_ID_DS18B20_TEMP = 0x06 + .equ VALUE_ID_LEDSIMPLE_TIMING = 0x88 @@ -103,7 +110,7 @@ rjmp BOOTLOADER_ADDR ; 1: RESET Reset vector use this for flashed system reti ; 2: INT0 External Interrupt Request 0 - rjmp ComOnUart0_AttnChangeIsr ; 3: PCINT0 Pin Change Interrupt 0 + rjmp ComOnUart0AttnChangeIsr ; 3: PCINT0 Pin Change Interrupt 0 reti ; 4: PCINT1 Pin Change Interrupt 1 reti ; 5: WDT Watchdog Time-out reti ; 6: TIM1_CAPT Timer/Counter1 Capture Event @@ -157,15 +164,18 @@ firmwareStart: ; @routine onSystemStart onSystemStart: + ; set interface number for UART0 + ldi r16, COMONUART0_IFACENUM + sts comOnUart0_iface+NET_IFACE_OFFS_IFACENUM, r16 + ; set interface number for UART1 + ldi r16, TTYONUART1_IFACENUM + sts ttyOnUart1_iface+NET_IFACE_OFFS_IFACENUM, r16 + ret ; @end - - - - onEvery100ms: onEverySecond: onEveryMinute: @@ -213,16 +223,14 @@ checkRecvdMsg: push xl push xh adiw xh:xl, 1 - rcall onMessageReceived - rcall mainModulesOnPacketReceived - rcall mainAppsOnPacketReceived + rcall letSysHandleMsg pop xh pop xl pop r16 ; forward to other interface ld r17, X - andi r17, (NET_IFACE_BUFFER_IFACENUM1_BIT | NET_IFACE_BUFFER_IFACENUM0_BIT) + andi r17, (1<