avr: started working on xpt2046 module.

This commit is contained in:
Martin Preuss
2025-11-10 14:49:23 +01:00
parent e82c1cbe5c
commit 29f74c0eae
15 changed files with 1020 additions and 82 deletions

View File

@@ -254,6 +254,10 @@
.include "modules/lcd2/ili9341/text.asm"
#endif
#ifdef MODULES_XPT2046
.include "modules/lcd2/xpt2046/main.asm"
#endif
#ifdef MODULES_FONT
.include "modules/lcd2/font/defs.asm"
.include "modules/lcd2/font/main.asm"

View File

@@ -183,6 +183,10 @@ onSystemTimerTick:
bigcall GUI_Every100ms
#endif
#ifdef MODULES_XPT2046
bigcall XPT2046_Every100ms
#endif
#ifdef APPS_NETWORK
ldi yl, LOW(netInterfaceData)

View File

@@ -193,6 +193,10 @@ initModules:
bigcall ILI9341_Init
#endif
#ifdef MODULES_XPT2046
bigcall XPT2046_Init
#endif
#ifdef MODULES_GUI
bigcall GUI_Init
#endif

View File

@@ -151,6 +151,13 @@
; ---------------------------------------------------------------------------
; XPT2046 module
.equ XPT2046_DEVICENUM = 1
; ---------------------------------------------------------------------------
; ComOnUart module

View File

@@ -56,6 +56,7 @@
#define MODULES_COM2W
#define MODULES_SPI_HW
#define MODULES_ILI9341
#define MODULES_XPT2046
#define MODULES_FONT
#define MODULES_GUI
;#define MODULES_TWI_MASTER
@@ -169,6 +170,8 @@ irqNotSet:
; @routine onSystemStart
onSystemStart:
clr r16
sts statsUpdateTimer, r16
bigcall test
ret
; @end
@@ -193,15 +196,26 @@ onMessageReceived:
; Called every 100ms. Add your routine calls here. No arguments, no results.
onEvery100ms:
onEverySecond:
onEveryMinute:
onEveryHour:
onEveryDay:
ret
; @end
onEveryMinute:
onEverySecond:
#ifdef MODULES_GUI
lds r16, statsUpdateTimer
inc r16
cpi r16, 5
brcc onEverySecond_updateStats
sts statsUpdateTimer, r16
ret
onEverySecond_updateStats:
bigcall WinNetStats_Update
clr r16
sts statsUpdateTimer, r16
#endif
ret
@@ -220,7 +234,7 @@ onEveryLoop:
test:
#ifdef MODULES_GUI
bigcall WinNetStats_Init
bigcall WinNetStats_Draw
bigcall WinNetStats_Show
#endif
ret
@@ -236,7 +250,7 @@ test:
;.include "common/debug.asm"
.include "modules/lcd2/gui/titlewindow.asm"
.include "modules/lcd2/gui/titlewindow2.asm"
;.include "modules/lcd2/font/font2.asm"
;.include "modules/lcd2/font/font3.asm"
;.include "modules/lcd2/font/font16x26.asm"
@@ -265,6 +279,8 @@ test:
.dseg
statsUpdateTimer: .byte 1
heapStart:

View File

@@ -15,20 +15,20 @@
WinNetStats_Init:
clr r16
sts winNetstatsUpdateNum, r16
sts winNetstatsUpdateNum+1, r16
; setup
ldi yl, LOW(winNetstats)
ldi yh, HIGH(winNetstats)
bigcall TitleWindow_Init
ldi zl, LOW(ili9341Font12x20_1*2)
ldi zh, HIGH(ili9341Font12x20_1*2)
bigcall TitleWindow_SetFont
ldi zl, LOW(STYLE_WIN_FONT*2)
ldi zh, HIGH(STYLE_WIN_FONT*2)
std Y+WIN_OFFS_FONT_LO, zl
std Y+WIN_OFFS_FONT_HI, zh
ldi r16, LOW(winNetstats_title*2)
std Y+TITLEWINDOW_OFFS_TITLEPTR_LO, r16
ldi r16, HIGH(winNetstats_title*2)
std Y+TITLEWINDOW_OFFS_TITLEPTR_HI, r16
bigcall TitleWindow_SetFullSize
bigcall TitleWindow_SetStyleColors
@@ -37,64 +37,108 @@ WinNetStats_Init:
WinNetStats_Draw:
ldi yl, LOW(winNetstats)
ldi yh, HIGH(winNetstats)
bigcall TitleWindow_Draw
rcall WinNetStats_Update
ret
; @param @0 Y
; @param @1 label addr
; @param @2 data address
.macro WINNETSTATS_PRINTDATA
.macro WINNETSTATS_PRINTLABEL
; packets in
ldi zl, LOW(@1 * 2)
ldi zh, HIGH(@1 * 2)
ldi r16, 2 ; X
mov r4, r16
clr r5
ldi r16, LOW(@0) ; Y
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT+@0) ; Y
mov r6, r16
ldi r16, HIGH(@0)
ldi r16, HIGH(STYLE_WIN_TITLE_HEIGHT+@0)
mov r7, r16
bigcall Window_DrawTextFlash
.endmacro
; @param @0 Y
; @param @1 data address
.macro WINNETSTATS_PRINTDATA
ldi r16, 160 ; X
mov r4, r16
clr r5
ldi r16, LOW(@0) ; Y
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT+@0) ; Y
mov r6, r16
ldi r16, HIGH(@0)
mov r7, r16
lds r16, @2 ; data
lds r17, @2+1
lds r16, @1 ; data
lds r17, @1+1
bigcall Window_WriteHexWordAt
.endmacro
WinNetStats_Show:
; draw title window basics (with title)
ldi yl, LOW(winNetstats)
ldi yh, HIGH(winNetstats)
ldi zl, LOW(winNetstats_title*2)
ldi zh, HIGH(winNetstats_title*2)
bigcall TitleWindow_DrawTitle
bigcall TitleWindow_ClearContentArea
; packets in
WINNETSTATS_PRINTLABEL 2, winNetstats_lPacketsIn
; packets out
WINNETSTATS_PRINTLABEL 24, winNetstats_lPacketsOut
; eContent
WINNETSTATS_PRINTLABEL 46, winNetstats_lContentErr
; eIO
WINNETSTATS_PRINTLABEL 68, winNetstats_lIoErr
; eMsgSize
WINNETSTATS_PRINTLABEL 90, winNetstats_lMsgSizeErr
; X
WINNETSTATS_PRINTLABEL 112, winNetstats_lX
; Y
WINNETSTATS_PRINTLABEL 134, winNetstats_lY
; Z
WINNETSTATS_PRINTLABEL 156, winNetstats_lZ
; update num
WINNETSTATS_PRINTLABEL 178, winNetstats_lUpdate
rcall WinNetStats_Update
ret
; @end
WinNetStats_Update:
lds r16, winNetstatsUpdateNum
inc r16
sts winNetstatsUpdateNum, r16
ldi yl, LOW(winNetstats)
ldi yh, HIGH(winNetstats)
adiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
bigcall Window_Clear
; packets in
WINNETSTATS_PRINTDATA 2, winNetstats_lPacketsIn, netInterfaceData+NET_IFACE_OFFS_PACKETSIN_LOW
WINNETSTATS_PRINTDATA 2, netInterfaceData+NET_IFACE_OFFS_PACKETSIN_LOW
; packets out
WINNETSTATS_PRINTDATA 24, winNetstats_lPacketsOut, netInterfaceData+NET_IFACE_OFFS_PACKETSOUT_LOW
WINNETSTATS_PRINTDATA 24, netInterfaceData+NET_IFACE_OFFS_PACKETSOUT_LOW
; eContent
WINNETSTATS_PRINTDATA 46, winNetstats_lContentErr, netInterfaceData+NET_IFACE_OFFS_ERR_CONTENT_LOW
WINNETSTATS_PRINTDATA 46, netInterfaceData+NET_IFACE_OFFS_ERR_CONTENT_LOW
; eIO
WINNETSTATS_PRINTDATA 68, winNetstats_lIoErr, netInterfaceData+NET_IFACE_OFFS_ERR_IO_LOW
WINNETSTATS_PRINTDATA 68, netInterfaceData+NET_IFACE_OFFS_ERR_IO_LOW
; eMsgSize
WINNETSTATS_PRINTDATA 90, winNetstats_lMsgSizeErr, netInterfaceData+NET_IFACE_OFFS_ERR_MSGSIZE_LOW
WINNETSTATS_PRINTDATA 90, netInterfaceData+NET_IFACE_OFFS_ERR_MSGSIZE_LOW
; X
WINNETSTATS_PRINTDATA 112, xpt2046CurrentX
; Y
WINNETSTATS_PRINTDATA 134, xpt2046CurrentY
; Z
WINNETSTATS_PRINTDATA 156, xpt2046CurrentZ
; update num
WINNETSTATS_PRINTDATA 178, winNetstatsUpdateNum
sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret
; @end
@@ -107,13 +151,20 @@ winNetstats_lPacketsOut: .db "Pkgs Out:", 0
winNetstats_lContentErr: .db "eContent:", 0
winNetstats_lIoErr: .db "eIO :", 0
winNetstats_lMsgSizeErr: .db "eMsgSize:", 0
winNetstats_lX: .db "X :", 0
winNetstats_lY: .db "Y :", 0
winNetstats_lZ: .db "Z :", 0
winNetstats_lUpdate: .db "Update :", 0
.dseg
winNetstats:
.byte WIN_SIZE
.dseg
winNetstats:
.byte TITLEWINDOW_SIZE
winNetstatsUpdateNum: .byte 2
#endif

View File

@@ -51,8 +51,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)
.equ PROGRAM_SENSOR_INTERVAL_SECS = 60
.equ PROGRAM_STATS_INTERVAL_MINS = 10