diff --git a/avr/devices/0BUILD b/avr/devices/0BUILD index c8e68b1..1b89129 100644 --- a/avr/devices/0BUILD +++ b/avr/devices/0BUILD @@ -27,6 +27,7 @@ c01 c02 n16 + n19 n20 n21 n22 diff --git a/avr/devices/n19/0BUILD b/avr/devices/n19/0BUILD index 6329fc6..be449f6 100644 --- a/avr/devices/n19/0BUILD +++ b/avr/devices/n19/0BUILD @@ -2,51 +2,16 @@ - - - - -I $(builddir) - -I $(srcdir) - -I $(topsrcdir)/avr - -I $(topbuilddir)/avr - - - - - main.asm - - - - - - - - - - - -I $(builddir) - -I $(srcdir) - -I $(topsrcdir)/avr - -I $(topbuilddir)/avr - - - - - boot.asm - - - - - - + boot + main defs.asm + README - diff --git a/avr/devices/n19/boot/0BUILD b/avr/devices/n19/boot/0BUILD new file mode 100644 index 0000000..c0e7053 --- /dev/null +++ b/avr/devices/n19/boot/0BUILD @@ -0,0 +1,32 @@ + + + + + + + + -I $(builddir) + -I $(srcdir) + -I $(topsrcdir)/avr + -I $(topbuilddir)/avr + + + + + boot.asm + + + + + + + + + + + + + + + + diff --git a/avr/devices/n19/boot.asm b/avr/devices/n19/boot/boot.asm similarity index 96% rename from avr/devices/n19/boot.asm rename to avr/devices/n19/boot/boot.asm index d201486..eb13227 100644 --- a/avr/devices/n19/boot.asm +++ b/avr/devices/n19/boot/boot.asm @@ -14,8 +14,10 @@ .include "include/tn85def.inc" ; Define device ATtiny85 .list -.include "./defs.asm" -.include "defs_all.asm" +.include "../defs.asm" +.include "devices/all/defs.asm" +.include "common/calls.asm" +.include "common/utils_wait.asm" @@ -25,10 +27,6 @@ ; --------------------------------------------------------------------------- ; generic -.include "common/utils_wait.asm" -.include "modules/com2/defs.asm" -.include "modules/comproto/defs.asm" - ; --------------------------------------------------------------------------- ; firmware settings diff --git a/avr/devices/n19/defs.asm b/avr/devices/n19/defs.asm index 4249624..f40698e 100644 --- a/avr/devices/n19/defs.asm +++ b/avr/devices/n19/defs.asm @@ -40,6 +40,7 @@ .equ LED_SIMPLE_OFFTIME = 50 .equ LED_SIMPLE_DDR = DDRB .equ LED_SIMPLE_PORT = PORTB +.equ LED_SIMPLE_PORTIN = PINB .equ LED_SIMPLE_PINNUM = PORTB3 diff --git a/avr/devices/n19/main.asm b/avr/devices/n19/main.asm deleted file mode 100644 index e544eb4..0000000 --- a/avr/devices/n19/main.asm +++ /dev/null @@ -1,379 +0,0 @@ -; *************************************************************************** -; copyright : (C) 2024 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. * -; *************************************************************************** - - -; *************************************************************************** -; Source file for LED controller node on AtTiny 85 -; -; This is for the full system (i.e. not the boot loader). -; *************************************************************************** - -.equ clock=1000000 ; Define the clock frequency - - - -.nolist -.include "include/tn85def.inc" ; Define device ATtiny85 -.list - -.include "./defs.asm" -.include "defs_all.asm" -.include "common/utils_wait.asm" ; wait macro - - - -; *************************************************************************** -; defines - -; --------------------------------------------------------------------------- -; firmware settings including list of modules used - -.equ FIRMWARE_VERSION_MAJOR = 0 -.equ FIRMWARE_VERSION_MINOR = 0 -.equ FIRMWARE_VERSION_PATCHLEVEL = 1 - - -#define MODULES_TIMER -#define MODULES_COM -#define MODULES_COM_WITH_ADDR_PROTO -#define MODULES_LED_SIMPLE -#define MODULES_TWI_MASTER -#define MODULES_SI7021 -#define MODULES_STATS -; #define MODULES_OWI_MASTER -; #define MODULES_DS18B20 -; #define MODULES_SK6812 -; #define MODULES_MOTION_LIGHT - -; #define COM_ACCEPT_ALL_DEST -#define MODULES_CCS811 - - - -; --------------------------------------------------------------------------- -; defines for modules - -.equ VALUE_ID_SI7021_TEMP = 0x01 -.equ VALUE_ID_SI7021_HUM = 0x02 - -.equ VALUE_ID_CO2 = 0x07 -.equ VALUE_ID_TVOC = 0x08 - -.equ VALUE_ID_DEBUG = 0x7f - - -; *************************************************************************** -; code segment - -.cseg -.org 000000 - - - -; --------------------------------------------------------------------------- -; Reset and interrupt vectors - - rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system - reti ; EXT_INT0 - rjmp uartBitbangIsrPcint0 ; PCI0 - reti ; OC1A - reti ; OVF1 - reti ; OVF0 - reti ; ERDY - reti ; ACI - reti ; ADCC - reti ; OC1B - rjmp baseTimerIrqOC0A ; OC0A - reti ; OC0B - reti ; WATCHDOG - reti ; USI_STR - reti ; USI_OVF - - -devInfoBlock: ; 12 bytes -devInfoManufacturer: .db 'A', 'Q', 'U', 'A' -devInfoId: .db DEVICEINFO_ID, 0 -devInfoVersion: .db DEVICEINFO_VERSION, DEVICEINFO_REVISION ; version, revision -firmwareVersion: .db FIRMWARE_VARIANT_MAIN, FIRMWARE_VERSION_MAJOR - .db FIRMWARE_VERSION_MINOR, FIRMWARE_VERSION_PATCHLEVEL - -firmwareStart: rjmp main - - -; *************************************************************************** -; includes - -.include "common/utils.asm" -.include "common/utils_wait_fixed.asm" -.include "common/utils_copy_from_flash.asm" -.include "common/utils_copy_sdram.asm" -.include "common/crc8.asm" - -.include "modules/basetimer/main.asm" - -#ifdef MODULES_TIMER - .include "modules/timer/main.asm" -#endif -#ifdef MODULES_LED_SIMPLE -.include "modules/led_simple/main.asm" -#endif -#ifdef MODULES_COM - .include "modules/com2/defs.asm" - .include "modules/com2/main.asm" - .include "modules/com2/buffer.asm" - #ifdef MODULES_STATS - .include "modules/comproto/msg_recvstats.asm" - .include "modules/comproto/msg_sendstats.asm" - .include "modules/comproto/msg_sysstats.asm" - .include "modules/comproto/msg_memstats.asm" - #endif - .include "modules/comproto/msg_pong.asm" - .include "modules/comproto/msg_value.asm" - .include "modules/comproto/msg_device.asm" - .include "modules/comproto/msg_reboot.asm" - .include "modules/uart_bitbang/defs.asm" - .include "modules/uart_bitbang/main.asm" - .include "modules/uart_bitbang/bytelevel.asm" - .include "modules/uart_bitbang/packetlevel.asm" - #ifdef MODULES_COM_WITH_ADDR_PROTO - .include "modules/comproto/defs.asm" - .include "modules/comproto/main.asm" - .include "modules/comproto/addr.asm" - #endif -#endif -#ifdef MODULES_STATS - .include "modules/stats/main.asm" -#endif -#ifdef MODULES_TWI_MASTER - .include "modules/twimaster/main.asm" -#endif -#ifdef MODULES_OWI_MASTER - .include "modules/owimaster/main.asm" -#endif -#ifdef MODULES_SI7021 - .include "modules/si7021/main.asm" -#endif -#ifdef MODULES_DS18B20 - .include "modules/ds18b20/main.asm" -#endif -#ifdef MODULES_SK6812 - .include "modules/sk6812/main.asm" -#endif -#ifdef MODULES_MOTION_LIGHT - .include "modules/ma_light/main.asm" -#endif - -#ifdef MODULES_CCS811 - .include "modules/ccs811/main.asm" -#endif - - -; *************************************************************************** -; data in SRAM - -.dseg - - -#ifdef MODULES_SI7021 - sramTimerSI7021Measure: .byte 2 - sramTimerSI7021SendTemp: .byte 2 - sramTimerSI7021SendHumidity: .byte 2 -#endif -#ifdef MODULES_DS18B20 - sramDs18b20Timer: .byte 2 - sramSendDs18b20TempTimer: .byte 2 -#endif - -#ifdef MODULES_CCS811 - sramCcs811Timer: .byte 2 -#endif - - -; *************************************************************************** -; data in FLASH - -.cseg - - - -; --------------------------------------------------------------------------- -; timer list - - -timerList: -; SRAM variable/counter routine flags secs (0=don't start or restart) -#ifdef MODULES_COM_WITH_ADDR_PROTO - .dw cproAddresModeTimer, CPRO_Address_OnTimer, 0, 0 ; (no restart) -#endif -#ifdef MODULES_STATS - .dw statsSendTimer, Stats_Timer, TIMER_FLAGS_IF_ADDR, 9000 ; every 15m -#endif -#ifdef MODULES_DS18B20 - .dw sramDs18b20Timer, Ds18b20_OnTimer, 0, 300 ; every 30s - .dw sramSendDs18b20TempTimer, sendDs18b20Temp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s -#endif -#ifdef MODULES_SI7021 - .dw sramTimerSI7021Measure, SI7021_OnTimer, 0, 300 ; every 30s - .dw sramTimerSI7021SendTemp, sendSI7021Temp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s - .dw sramTimerSI7021SendHumidity, sendSI7021Humidity, TIMER_FLAGS_IF_ADDR, 600 ; every 60s -#endif -#ifdef MODULES_CCS811 - .dw sramCcs811Timer, CCS811_OnTimer, 0, 10 ; every 1s -#endif - .dw 0 ; end of list - - - - - -.include "main_all.asm" - - -; --------------------------------------------------------------------------- -; Called early on system startup. No arguments, no results. - -systemSetSpeed: -.if clock == 1000000 - ldi r16, (1< + + + + + + + -I $(builddir) + -I $(srcdir) + -I $(topsrcdir)/avr + -I $(topbuilddir)/avr + + + + + main.asm + + + + + + + + + + + + + + + + + diff --git a/avr/devices/n19/main/main.asm b/avr/devices/n19/main/main.asm new file mode 100644 index 0000000..aed7831 --- /dev/null +++ b/avr/devices/n19/main/main.asm @@ -0,0 +1,176 @@ +; *************************************************************************** +; 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. * +; *************************************************************************** + + +; *************************************************************************** +; Source file for LED controller node on AtTiny 85 +; +; This is for the full system (i.e. not the boot loader). +; *************************************************************************** + +.equ clock=1000000 ; Define the clock frequency + + + +.nolist +.include "include/tn85def.inc" ; Define device ATtiny85 +.list + +.include "../defs.asm" +.include "devices/all/defs.asm" +.include "common/calls.asm" +.include "common/utils_wait.asm" ; wait macro + + + +; *************************************************************************** +; defines + + +.equ NET_BUFFERS_NUM = 6 +.equ NET_BUFFERS_SIZE = 32 + + +; --------------------------------------------------------------------------- +; firmware settings including list of modules used + +.equ FIRMWARE_VERSION_MAJOR = 0 +.equ FIRMWARE_VERSION_MINOR = 0 +.equ FIRMWARE_VERSION_PATCHLEVEL = 1 + +#define MODULES_CLOCK +#define MODULES_LED_SIMPLE +#define MODULES_NETWORK +#define MODULES_UART_BITBANG +#define MODULES_TWI_MASTER +#define MODULES_SI7021 +#define MODULES_CCS811 + +#define APPS_NETWORK +#define APPS_REPORTSENSORS +#define APPS_STATS + + + +; --------------------------------------------------------------------------- +; defines for modules + +.equ VALUE_ID_SI7021_TEMP = 0x01 +.equ VALUE_ID_SI7021_HUM = 0x02 + +.equ VALUE_ID_CO2 = 0x07 +.equ VALUE_ID_TVOC = 0x08 + +.equ VALUE_ID_DEBUG = 0x7f + +.equ VALUE_ID_LEDSIMPLE_TIMING = 0x88 + + +; *************************************************************************** +; code segment + +.cseg +.org 000000 + + + +; --------------------------------------------------------------------------- +; Reset and interrupt vectors + + rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system + reti ; EXT_INT0 + rjmp UART_BitBang_PcintIsr ; PCI0 + reti ; OC1A + reti ; OVF1 + reti ; OVF0 + reti ; ERDY + reti ; ACI + reti ; ADCC + reti ; OC1B + rjmp baseTimerIrqOC0A ; OC0A + reti ; OC0B + reti ; WATCHDOG + reti ; USI_STR + reti ; USI_OVF + + +devInfoBlock: ; 12 bytes +devInfoManufacturer: .db 'A', 'Q', 'U', 'A' +devInfoId: .db DEVICEINFO_ID, 0 +devInfoVersion: .db DEVICEINFO_VERSION, DEVICEINFO_REVISION ; version, revision +firmwareVersion: .db FIRMWARE_VARIANT_MAIN, FIRMWARE_VERSION_MAJOR + .db FIRMWARE_VERSION_MINOR, FIRMWARE_VERSION_PATCHLEVEL + +firmwareStart: + rjmp main + + + +; --------------------------------------------------------------------------- +; @routine onSystemStart + +onSystemStart: + ret +; @end + + + +; --------------------------------------------------------------------------- +; @routine onMessageReceived +; +; Called on every message received + +onMessageReceived: + clc + ret +; @end + + + +; --------------------------------------------------------------------------- +; @routine onEvery100ms +; +; Called every 100ms. Add your routine calls here. No arguments, no results. + +onEvery100ms: +onEverySecond: +onEveryMinute: +onEveryHour: +onEveryDay: + ret +; @end + + + +; --------------------------------------------------------------------------- +; @routine onEveryLoop +; +; Called on every loop (i.e. after awakening from sleep). +; +onEveryLoop: + ret +; @end + + + +; *************************************************************************** +; includes + +.include "devices/all/hw_tn85.asm" +.include "devices/all/includes.asm" + + + +; --------------------------------------------------------------------------- +; defines for network interface + +.equ netInterfaceData = uart_bitbang_iface + + + diff --git a/avr/devices/n20/0BUILD b/avr/devices/n20/0BUILD index 23f5a51..be449f6 100644 --- a/avr/devices/n20/0BUILD +++ b/avr/devices/n20/0BUILD @@ -2,44 +2,9 @@ - - - - -I $(builddir) - -I $(srcdir) - -I $(topsrcdir)/avr - -I $(topbuilddir)/avr - - - - - main.asm - - - - - - - - - - - -I $(builddir) - -I $(srcdir) - -I $(topsrcdir)/avr - -I $(topbuilddir)/avr - - - - - boot.asm - - - - - - + boot + main @@ -50,4 +15,3 @@ - diff --git a/avr/devices/n20/boot/0BUILD b/avr/devices/n20/boot/0BUILD new file mode 100644 index 0000000..dec3837 --- /dev/null +++ b/avr/devices/n20/boot/0BUILD @@ -0,0 +1,32 @@ + + + + + + + + -I $(builddir) + -I $(srcdir) + -I $(topsrcdir)/avr + -I $(topbuilddir)/avr + + + + + boot.asm + + + + + + + + + + + + + + + + diff --git a/avr/devices/n20/boot.asm b/avr/devices/n20/boot/boot.asm similarity index 99% rename from avr/devices/n20/boot.asm rename to avr/devices/n20/boot/boot.asm index 919d3d2..df58b6f 100644 --- a/avr/devices/n20/boot.asm +++ b/avr/devices/n20/boot/boot.asm @@ -13,7 +13,7 @@ .list .include "version.asm" -.include "./defs.asm" +.include "../defs.asm" .include "devices/all/defs.asm" .include "common/calls.asm" diff --git a/avr/devices/n20/main/0BUILD b/avr/devices/n20/main/0BUILD new file mode 100644 index 0000000..8450a6c --- /dev/null +++ b/avr/devices/n20/main/0BUILD @@ -0,0 +1,33 @@ + + + + + + + + -I $(builddir) + -I $(srcdir) + -I $(topsrcdir)/avr + -I $(topbuilddir)/avr + + + + + main.asm + + + + + + + + + + + + + + + + + diff --git a/avr/devices/n20/main.asm b/avr/devices/n20/main/main.asm similarity index 99% rename from avr/devices/n20/main.asm rename to avr/devices/n20/main/main.asm index 1f720e8..eb7c165 100644 --- a/avr/devices/n20/main.asm +++ b/avr/devices/n20/main/main.asm @@ -31,7 +31,7 @@ .list .include "version.asm" -.include "./defs.asm" +.include "../defs.asm" .include "devices/all/defs.asm" .include "common/calls.asm" @@ -67,7 +67,7 @@ ;#define MODULES_DS18B20 ;#define MODULES_MOTION ;#define MODULES_TCRT1000 -;#define MODULES_CCS811 +#define MODULES_CCS811 #define APPS_NETWORK ;#define APPS_MOTION