avr: added e04 and e05.
This commit is contained in:
34
avr/devices/e04/main/0BUILD
Normal file
34
avr/devices/e04/main/0BUILD
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml?>
|
||||
|
||||
<gwbuild>
|
||||
|
||||
<target type="AvrHexFile" name="e04_firmware" >
|
||||
|
||||
<includes type="avrasm" >
|
||||
-I $(builddir)
|
||||
-I $(srcdir)
|
||||
-I $(topsrcdir)/avr
|
||||
-I $(topbuilddir)/avr
|
||||
</includes>
|
||||
|
||||
|
||||
<sources type="avrasm" >
|
||||
main.asm
|
||||
</sources>
|
||||
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<subdirs>
|
||||
</subdirs>
|
||||
|
||||
<extradist>
|
||||
screen.asm
|
||||
</extradist>
|
||||
|
||||
|
||||
</gwbuild>
|
||||
|
||||
|
||||
207
avr/devices/e04/main/main.asm
Normal file
207
avr/devices/e04/main/main.asm
Normal file
@@ -0,0 +1,207 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2026 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 temperature sensor node on AtTiny 84
|
||||
;
|
||||
; This is for the full system (i.e. not the boot loader).
|
||||
;
|
||||
; All definitions and changes should go into this file.
|
||||
;
|
||||
;
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
.equ clock=1000000 ; Define the clock frequency
|
||||
;.equ clock=8000000 ; Define the clock frequency
|
||||
|
||||
|
||||
|
||||
.nolist
|
||||
.include "include/tn84def.inc" ; Define device ATtiny84
|
||||
.list
|
||||
|
||||
.include "../defs.asm"
|
||||
|
||||
.include "version.asm"
|
||||
.include "devices/all/defs.asm"
|
||||
.include "common/calls.asm"
|
||||
.include "common/utils_io.asm"
|
||||
.include "common/utils_wait.asm"
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; defines
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; generic
|
||||
|
||||
.equ NET_BUFFERS_NUM = 6
|
||||
.equ NET_MSGNUMINBUF_SIZE = 8 ; max buffer nums in ringbuffer (global incoming)
|
||||
.equ NET_IFACE_OUTMSGBUF_SIZE = 8 ; max buffer nums in ringbuffer (per interface outbound)
|
||||
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; firmware settings including list of modules used
|
||||
|
||||
; #define MODULES_TIMER
|
||||
#define MODULES_CLOCK
|
||||
#define MODULES_LED_SIMPLE
|
||||
#define MODULES_NETWORK
|
||||
#define MODULES_COM2W
|
||||
#define MODULES_TWI_MASTER
|
||||
#define MODULES_LCD
|
||||
#define LCD_MINIMAL_FONT
|
||||
#define MODULES_DS1307
|
||||
|
||||
#define APPS_NETWORK
|
||||
#define APPS_STATS
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; defines for values
|
||||
|
||||
; none
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code segment
|
||||
|
||||
.cseg
|
||||
.org 000000
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Reset and interrupt vectors (will be removed as soon as we can flash data over COM)
|
||||
|
||||
; rjmp main ; Reset vector
|
||||
rjmp BOOTLOADER_ADDR ; Reset vector ; use this for flashed system
|
||||
reti ; EXT_INT0
|
||||
rjmp com2wPcintIsr ; PCI0
|
||||
reti ; PCI1
|
||||
reti ; WATCHDOG
|
||||
reti ; ICP1
|
||||
reti ; OC1A
|
||||
reti ; OC1B
|
||||
reti ; OVF1
|
||||
rjmp baseTimerIrqOC0A ; OC0A
|
||||
reti ; OC0B
|
||||
reti ; OVF0
|
||||
reti ; ACI
|
||||
reti ; ADCC
|
||||
reti ; ERDY
|
||||
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_TEMP_WINDOW, FIRMWARE_VERSION_MAJOR
|
||||
.db FIRMWARE_VERSION_MINOR, FIRMWARE_VERSION_PATCHLEVEL
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine firmwareStart @global
|
||||
|
||||
firmwareStart:
|
||||
rjmp main
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine onSystemStart
|
||||
|
||||
onSystemStart:
|
||||
rcall ScreenPrintErrors
|
||||
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:
|
||||
onEveryHour:
|
||||
onEveryDay:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
onEveryMinute:
|
||||
rcall ScreenPrintErrors
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine onEveryLoop
|
||||
;
|
||||
; Called on every loop (i.e. after awakening from sleep).
|
||||
;
|
||||
onEveryLoop:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; includes
|
||||
|
||||
.include "devices/all/hw_tn84.asm"
|
||||
.include "devices/all/includes.asm"
|
||||
|
||||
.include "common/debug.asm"
|
||||
;.include "modules/network/msg/debug-w.asm"
|
||||
|
||||
.include "screen.asm"
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; defines for network interface
|
||||
|
||||
.equ netInterfaceData = com2w_iface
|
||||
|
||||
|
||||
|
||||
deviceCodeEnd:
|
||||
.if deviceCodeEnd >= BOOTLOADER_ADDR
|
||||
.warning "Code reaches into boot loader!"
|
||||
.endif
|
||||
|
||||
99
avr/devices/e04/main/screen.asm
Normal file
99
avr/devices/e04/main/screen.asm
Normal file
@@ -0,0 +1,99 @@
|
||||
; ***************************************************************************
|
||||
; 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. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
ScreenPrintErrors:
|
||||
ldi yl, LOW(netInterfaceData)
|
||||
ldi yh, HIGH(netInterfaceData)
|
||||
|
||||
ldi r16, 0
|
||||
rcall LCD_Fill
|
||||
|
||||
ldi r18, 0
|
||||
ldi r19, 0
|
||||
rcall LCD_SetCursor
|
||||
ldi zl, LOW(screenTxtSystem)
|
||||
ldi zh, HIGH(screenTxtSystem)
|
||||
rcall LCD_PrintFromFlash
|
||||
|
||||
ldi r18, 0
|
||||
ldi r19, 2
|
||||
rcall LCD_SetCursor
|
||||
ldi zl, LOW(screenTxtPacketsIn)
|
||||
ldi zh, HIGH(screenTxtPacketsIn)
|
||||
rcall LCD_PrintFromFlash
|
||||
ldi r18, 64
|
||||
ldi r19, 2
|
||||
rcall LCD_SetCursor
|
||||
ldd r18, Y+NET_IFACE_OFFS_PACKETSIN_LOW
|
||||
ldd r19, Y+NET_IFACE_OFFS_PACKETSIN_HIGH
|
||||
rcall LCD_PrintHexWord
|
||||
|
||||
ldi r18, 0
|
||||
ldi r19, 3
|
||||
rcall LCD_SetCursor
|
||||
ldi zl, LOW(screenTxtPacketsOut)
|
||||
ldi zh, HIGH(screenTxtPacketsOut)
|
||||
rcall LCD_PrintFromFlash
|
||||
ldi r18, 64
|
||||
ldi r19, 3
|
||||
rcall LCD_SetCursor
|
||||
ldd r18, Y+NET_IFACE_OFFS_PACKETSOUT_LOW
|
||||
ldd r19, Y+NET_IFACE_OFFS_PACKETSOUT_HIGH
|
||||
rcall LCD_PrintHexWord
|
||||
|
||||
ldi r18, 0
|
||||
ldi r19, 4
|
||||
rcall LCD_SetCursor
|
||||
ldi zl, LOW(screenTxtEContent)
|
||||
ldi zh, HIGH(screenTxtEContent)
|
||||
rcall LCD_PrintFromFlash
|
||||
ldi r18, 64
|
||||
ldi r19, 4
|
||||
rcall LCD_SetCursor
|
||||
ldd r18, Y+NET_IFACE_OFFS_ERR_CONTENT_LOW
|
||||
ldd r19, Y+NET_IFACE_OFFS_ERR_CONTENT_HIGH
|
||||
rcall LCD_PrintHexWord
|
||||
|
||||
ldi r18, 0
|
||||
ldi r19, 5
|
||||
rcall LCD_SetCursor
|
||||
ldi zl, LOW(screenTxtEMsgSize)
|
||||
ldi zh, HIGH(screenTxtEMsgSize)
|
||||
rcall LCD_PrintFromFlash
|
||||
ldi r18, 64
|
||||
ldi r19, 5
|
||||
rcall LCD_SetCursor
|
||||
ldd r18, Y+NET_IFACE_OFFS_ERR_MSGSIZE_LOW
|
||||
ldd r19, Y+NET_IFACE_OFFS_ERR_MSGSIZE_HIGH
|
||||
rcall LCD_PrintHexWord
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
screenTxtSystem: .db "AqHOME %YEAR%/%MONTH%/%DAY%-%HOUR%:%MINUTE%", 0
|
||||
|
||||
screenTxtPacketsIn:
|
||||
.db "In:", 0
|
||||
|
||||
screenTxtPacketsOut:
|
||||
.db "Out:", 0, 0
|
||||
|
||||
screenTxtEContent:
|
||||
.db "eCRC:", 0
|
||||
|
||||
screenTxtEMsgSize:
|
||||
.db "eSize:", 0, 0
|
||||
|
||||
Reference in New Issue
Block a user