; *************************************************************************** ; 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. * ; *************************************************************************** ;.equ clock=1000000 ; Define the clock frequency .equ clock=20000000 ; Define the clock frequency .nolist .include "include/m644Pdef.inc" ; Define device ATmega644P .list .include "version.asm" .include "../defs.asm" .include "./data.asm" .include "devices/all/defs.asm" .include "common/calls.asm" .include "common/utils_wait.asm" .include "common/utils_io.asm" ; *************************************************************************** ; defines ; --------------------------------------------------------------------------- ; generic .equ NET_BUFFERS_NUM = 96 .equ NET_MSGNUMINBUF_SIZE = 64 ; max buffer nums in ringbuffer (global incoming) .equ NET_IFACE_OUTMSGBUF_SIZE = 16 ; max buffer nums in ringbuffer (per interface outbound) .equ COM2WN_IO_RINGBUFFER_SIZE = 128 ; --------------------------------------------------------------------------- ; firmware settings including list of modules used #define MAIN_WITHOUT_MSG_HANDLING ; message handling done here ; #define MODULES_TIMER #define MODULES_CLOCK ;#define MODULES_XRAM ;#define MODULES_HEAP #define MODULES_LED_SIMPLE #define MODULES_NETWORK #define MODULES_COM2WN ;#define MODULES_COMONUART0 ;#define MODULES_UART_HW ;#define MODULES_UART_BITBANG ;#define MODULES_SPI_HW ;#define MODULES_ILI9341 ;#define MODULES_FONT ;#define MODULES_WIN ;#define MODULES_TWI_MASTER ;#define MODULES_LCD ;#define LCD_MINIMAL_FONT ;#define MODULES_SI7021 ;#define MODULES_SGP30 ;#define MODULES_SGP40 ;#define MODULES_STATS ;#define MODULES_OWI_MASTER ;#define MODULES_DS18B20 ;#define MODULES_MOTION ;#define MODULES_CCS811 ;#define APPS_NETWORK ;#define APPS_MOTION ;#define APPS_REPORTSENSORS ;#define APPS_STATS #define APPS_HUB ; --------------------------------------------------------------------------- ; defines for values .equ VALUE_ID_HUB_SETRANGE1 = 0x11 .equ VALUE_ID_HUB_SETRANGE2 = 0x12 .equ VALUE_ID_HUB_SETRANGE3 = 0x13 .equ VALUE_ID_HUB_SETRANGE4 = 0x14 .equ VALUE_ID_HUB_SETRANGE5 = 0x15 .equ VALUE_ID_HUB_SETRANGE6 = 0x16 .equ VALUE_ID_HUB_SETRANGE7 = 0x17 .equ VALUE_ID_HUB_SETRANGE8 = 0x18 .equ VALUE_ID_DEBUG = 0x7f .equ VALUE_ID_LEDSIMPLE_TIMING = 0x88 ; *************************************************************************** ; code segment .cseg .org 000000 ; --------------------------------------------------------------------------- ; Reset and interrupt vectors jmp BOOTLOADER_ADDR ; 1: Reset vector RESET jmp irqNotSet ; 2: INT0 External Interrupt Request 0 jmp irqNotSet ; 3: INT1 External Interrupt Request 1 jmp irqNotSet ; 4: INT2 External Interrupt Request 2 jmp COM2WN_ClkChangeIsr ; 5: PCINT0 Pin Change Interrupt Request 0 jmp irqNotSet ; 6: PCINT1 Pin Change Interrupt Request 1 jmp irqNotSet ; 7: PCINT2 Pin Change Interrupt Request 2 jmp irqNotSet ; 8: PCINT3 Pin Change Interrupt Request 3 jmp irqNotSet ; 9: WDT Watchdog Time-out Interrupt jmp irqNotSet ; 10: TIMER2_COMPA Timer/Counter2 Compare Match A jmp irqNotSet ; 11: TIMER2_COMPB Timer/Counter2 Compare Match B jmp irqNotSet ; 12: TIMER2_OVF Timer/Counter2 Overflow jmp irqNotSet ; 13: TIMER1_CAPT Timer/Counter1 Capture Event jmp irqNotSet ; 14: TIMER1_COMPA Timer/Counter1 Compare Match A jmp irqNotSet ; 15: TIMER1_COMPB Timer/Counter1 Compare Match B jmp irqNotSet ; 16: TIMER1_OVF Timer/Counter1 Overflow jmp baseTimerIrqOC0A ; 17: TIMER0_COMPA Timer/Counter0 Compare Match A jmp irqNotSet ; 18: TIMER0_COMPB Timer/Counter0 Compare Match B jmp irqNotSet ; 19: TIMER0_OVF Timer/Counter0 Overflow jmp irqNotSet ; 20: SPI_STC Serial Transfer Complete jmp irqNotSet ; 21: USART0_RXC USART0 Rx Complete jmp irqNotSet ; 22: USART0_UDRE USART0 Data Register Empty jmp irqNotSet ; 23: USART0_TXC USART0 Tx Complete jmp irqNotSet ; 24: ANA_COMP Analog Comparator jmp irqNotSet ; 25: ADC ADC Conversion Complete jmp irqNotSet ; 26: EE_RDY EEPROM Ready jmp irqNotSet ; 27: TWI 2-Wire Interface jmp irqNotSet ; 28: SPM_RDY Store Program Memory Ready 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_TEMP_WINDOW, FIRMWARE_VERSION_MAJOR .db FIRMWARE_VERSION_MINOR, FIRMWARE_VERSION_PATCHLEVEL ; --------------------------------------------------------------------------- ; @routine firmwareStart @global firmwareStart: rjmp main ; @end irqNotSet: reti ; --------------------------------------------------------------------------- ; @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_m644p.asm" .include "devices/all/includes.asm" ;.include "common/debug.asm" ;.include "modules/lcd2/font/font2.asm" ;.include "modules/lcd2/font/font3.asm" ;.include "modules/lcd2/font/font16x26.asm" ;.include "modules/lcd2/font/font4.asm" ;.include "modules/lcd2/font/font12x16.asm" ;.include "modules/lcd2/font/font5.asm" ;.include "modules/lcd2/font/font12x20.asm" ;.include "common/list_t.asm" ;.include "common/tree_t.asm" ;.include "common/divide.asm" ; --------------------------------------------------------------------------- ; defines for network interface ;.equ netInterfaceData = netUartIface ;.equ netInterfaceData = uart_bitbang_iface .equ netInterfaceData = com2w0_iface