avr: make climate page the main page, added eeprom browser.
This commit is contained in:
316
avr/modules/lcd2/gui2/eepromdump.asm
Normal file
316
avr/modules/lcd2/gui2/eepromdump.asm
Normal file
@@ -0,0 +1,316 @@
|
||||
; ***************************************************************************
|
||||
; 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. *
|
||||
; ***************************************************************************
|
||||
|
||||
#ifndef AQH_AVR_GUI2_EEPROMDUMP_ASM
|
||||
#define AQH_AVR_GUI2_EEPROMDUMP_ASM
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; defines
|
||||
|
||||
|
||||
.equ EEPROMDUMP_FONT = ili9341Font6x8_1
|
||||
.equ EEPROMDUMP_FONT_WIDTH = 6
|
||||
.equ EEPROMDUMP_FONT_HEIGHT = 8
|
||||
|
||||
.equ EEPROMDUMP_BYTESPERLINE = 8
|
||||
.equ EEPROMDUMP_LINESPERPAGE = 14
|
||||
|
||||
; SDRAM data for EepromDump
|
||||
.equ EEPROMDUMP_SD_OFFS_BEGIN = WIDGET_SD_SIZE
|
||||
.equ EEPROMDUMP_SD_OFFS_STARTADDR_LO = EEPROMDUMP_SD_OFFS_BEGIN+0
|
||||
.equ EEPROMDUMP_SD_OFFS_STARTADDR_HI = EEPROMDUMP_SD_OFFS_BEGIN+1
|
||||
.equ EEPROMDUMP_SD_SIZE = EEPROMDUMP_SD_OFFS_BEGIN+2
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine SensorWatch_OnCreate @global
|
||||
;
|
||||
; @param Z byte address of widget object (for LPM!)
|
||||
; @param XL node addr
|
||||
; @param XH value id
|
||||
; @return CFLAG set if signal handled
|
||||
; @clobbers any, !Z
|
||||
|
||||
EepromDump_OnCreate:
|
||||
bigcall OBJ_IsObject ; (none)
|
||||
brcc EepromDump_OnCreate_ret
|
||||
|
||||
; preset SDRAM
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
clr r16
|
||||
ldi r17, EEPROMDUMP_SD_SIZE
|
||||
push yl
|
||||
push yh
|
||||
EepromDump_OnCreate_loop:
|
||||
st Y+, r16
|
||||
dec r17
|
||||
brne EepromDump_OnCreate_loop
|
||||
pop yh
|
||||
pop yl
|
||||
|
||||
bigcall Widget_OnCreate
|
||||
|
||||
EepromDump_OnCreate_ret:
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine EepromDump_OnUp @global
|
||||
;
|
||||
; @param Z byte address of object (for LPM!)
|
||||
|
||||
EepromDump_OnUp:
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
ldd xl, Y+EEPROMDUMP_SD_OFFS_STARTADDR_LO
|
||||
ldd xh, Y+EEPROMDUMP_SD_OFFS_STARTADDR_HI
|
||||
ldi r16, LOW(EEPROMDUMP_BYTESPERLINE*EEPROMDUMP_LINESPERPAGE)
|
||||
ldi r17, HIGH(EEPROMDUMP_BYTESPERLINE*EEPROMDUMP_LINESPERPAGE)
|
||||
sub xl, r16
|
||||
sbc xh, r17
|
||||
brcc EepromDump_OnUp_set
|
||||
clr xl
|
||||
clr xh
|
||||
EepromDump_OnUp_set:
|
||||
std Y+EEPROMDUMP_SD_OFFS_STARTADDR_LO, xl
|
||||
std Y+EEPROMDUMP_SD_OFFS_STARTADDR_HI, xh
|
||||
|
||||
ldd r17, Y+WIDGET_SD_OFFS_FLAGS
|
||||
ori r17, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+WIDGET_SD_OFFS_FLAGS, r17
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
EepromDump_OnDown:
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
ldd xl, Y+EEPROMDUMP_SD_OFFS_STARTADDR_LO
|
||||
ldd xh, Y+EEPROMDUMP_SD_OFFS_STARTADDR_HI
|
||||
ldi r16, LOW(EEPROMDUMP_BYTESPERLINE*EEPROMDUMP_LINESPERPAGE)
|
||||
ldi r17, HIGH(EEPROMDUMP_BYTESPERLINE*EEPROMDUMP_LINESPERPAGE)
|
||||
add xl, r16
|
||||
adc xh, r17
|
||||
brcs EepromDump_OnDown_tooHigh
|
||||
ldi r16, LOW(EEPROMEND)
|
||||
ldi r17, HIGH(EEPROMEND)
|
||||
cp xl, r16
|
||||
cpc xh, r17
|
||||
brcs EepromDump_OnDown_set
|
||||
EepromDump_OnDown_tooHigh:
|
||||
ldi xl, LOW(EEPROMEND-EEPROMDUMP_BYTESPERLINE)
|
||||
ldi xh, HIGH(EEPROMEND-EEPROMDUMP_BYTESPERLINE)
|
||||
EepromDump_OnDown_set:
|
||||
std Y+EEPROMDUMP_SD_OFFS_STARTADDR_LO, xl
|
||||
std Y+EEPROMDUMP_SD_OFFS_STARTADDR_HI, xh
|
||||
|
||||
ldd r17, Y+WIDGET_SD_OFFS_FLAGS
|
||||
ori r17, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+WIDGET_SD_OFFS_FLAGS, r17
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine EepromDump_OnDraw @global
|
||||
;
|
||||
; @param Z byte address of object (for LPM!)
|
||||
; @param xl param1
|
||||
; @param xh param2
|
||||
; @clobbers any, !Z
|
||||
|
||||
EepromDump_OnDraw:
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
ldd r16, Y+WIDGET_SD_OFFS_FLAGS
|
||||
andi r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
breq EepromDump_OnDraw_ret
|
||||
|
||||
rcall Widget_Clear
|
||||
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
ldd xl, Y+EEPROMDUMP_SD_OFFS_STARTADDR_LO
|
||||
ldd xh, Y+EEPROMDUMP_SD_OFFS_STARTADDR_HI
|
||||
ldi r16, 2
|
||||
mov r4, r16
|
||||
clr r5
|
||||
mov r6, r16
|
||||
clr r7
|
||||
rcall eepromDumpDrawBlock
|
||||
|
||||
bigcall Widget_GetSdramPtr ; (none)
|
||||
ldd r16, Y+WIDGET_SD_OFFS_FLAGS
|
||||
cbr r16, (1<<WIDGET_FLAGS_DIRTY_BIT)
|
||||
std Y+WIDGET_SD_OFFS_FLAGS, r16
|
||||
|
||||
EepromDump_OnDraw_ret:
|
||||
sec
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine eepromDumpDrawBlock
|
||||
;
|
||||
; @param Z byte address of widget object (for LPM!)
|
||||
; @param R5:R4 X relative to widget
|
||||
; @param R7:R6 Y relative to widget
|
||||
; @param X current start address
|
||||
; @param R18 number of bytes to print as hex bytes
|
||||
|
||||
eepromDumpDrawBlock:
|
||||
ldi r18, EEPROMDUMP_LINESPERPAGE
|
||||
eepromDumpDrawBlock_loop:
|
||||
push r18
|
||||
push r4
|
||||
push r5
|
||||
rcall eepromDumpDrawLine
|
||||
pop r5
|
||||
pop r4
|
||||
ldi r16, LOW(EEPROMDUMP_FONT_HEIGHT)
|
||||
ldi r17, HIGH(EEPROMDUMP_FONT_HEIGHT)
|
||||
add r6, r16
|
||||
adc r7, r17
|
||||
pop r18
|
||||
dec r18
|
||||
brne eepromDumpDrawBlock_loop
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine eepromDumpDrawLine
|
||||
;
|
||||
; @param Z byte address of widget object (for LPM!)
|
||||
; @param R5:R4 X relative to widget
|
||||
; @param R7:R6 Y relative to widget
|
||||
; @param X current start address
|
||||
; @param R18 number of bytes to print as hex bytes
|
||||
; @return X pointer to next byte to write
|
||||
; @clobbers any, !Z, !R6, !R7
|
||||
|
||||
eepromDumpDrawLine:
|
||||
push xl
|
||||
push xh
|
||||
mov r20, xl
|
||||
mov r21, xh
|
||||
bigcall HexWordToAscii ; X=ptr to addr (R16, R17)
|
||||
rcall eepromDumpDrawText
|
||||
ldi r16, LOW(EEPROMDUMP_FONT_WIDTH*4)
|
||||
ldi r17, HIGH(EEPROMDUMP_FONT_WIDTH*4)
|
||||
add r4, r16
|
||||
adc r5, r17
|
||||
|
||||
ldi r16, ':'
|
||||
rcall eepromDumpDrawChar
|
||||
|
||||
ldi r16, ' '
|
||||
rcall eepromDumpDrawChar
|
||||
pop xh
|
||||
pop xl
|
||||
|
||||
ldi r18, EEPROMDUMP_BYTESPERLINE
|
||||
eepromDumpDrawLine_loop:
|
||||
push r18
|
||||
bigcall Eeprom_ReadByte ; R16=byte read
|
||||
brcc eepromDumpDrawLine_ret
|
||||
adiw xh:xl, 1
|
||||
push xl
|
||||
push xh
|
||||
bigcall HexByteToAscii ; X=ptr to addr (R16, R17)
|
||||
rcall eepromDumpDrawText
|
||||
ldi r16, LOW(EEPROMDUMP_FONT_WIDTH*2)
|
||||
ldi r17, HIGH(EEPROMDUMP_FONT_WIDTH*2)
|
||||
add r4, r16
|
||||
adc r5, r17
|
||||
ldi r16, ' '
|
||||
rcall eepromDumpDrawChar
|
||||
pop xh
|
||||
pop xl
|
||||
pop r18
|
||||
dec r18
|
||||
brne eepromDumpDrawLine_loop
|
||||
eepromDumpDrawLine_ret:
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine eepromDumpDrawLine
|
||||
;
|
||||
; @param Z byte address of widget object (for LPM!)
|
||||
; @param R5:R4 X relative to widget
|
||||
; @param R7:R6 Y relative to widget
|
||||
; @param X address of text to write
|
||||
; @clobbers any, !Z, !(r4-r7)
|
||||
|
||||
eepromDumpDrawText:
|
||||
push r4
|
||||
push r5
|
||||
push r6
|
||||
push r7
|
||||
bigcall Widget_DrawTextSDRAM ; (any, !Z)
|
||||
pop r7
|
||||
pop r6
|
||||
pop r5
|
||||
pop r4
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine eepromDumpDrawChar
|
||||
;
|
||||
; @param Z byte address of widget object (for LPM!)
|
||||
; @param R5:R4 X relative to widget
|
||||
; @param R7:R6 Y relative to widget
|
||||
; @param R16 byte to write
|
||||
; @clobbers any, !Z, !(r4-r7)
|
||||
|
||||
eepromDumpDrawChar:
|
||||
push r4
|
||||
push r5
|
||||
push r6
|
||||
push r7
|
||||
bigcall Widget_DrawCharAt ; (any, !Z)
|
||||
pop r7
|
||||
pop r6
|
||||
pop r5
|
||||
pop r4
|
||||
ldi r16, LOW(EEPROMDUMP_FONT_WIDTH)
|
||||
ldi r17, HIGH(EEPROMDUMP_FONT_WIDTH)
|
||||
add r4, r16
|
||||
adc r5, r17
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user