more work on c02 and lcd drivers.

This commit is contained in:
Martin Preuss
2025-11-07 17:04:08 +01:00
parent 660f2502c1
commit 9300e515e7
7 changed files with 279 additions and 72 deletions

View File

@@ -194,13 +194,17 @@ onMessageReceived:
onEvery100ms: onEvery100ms:
onEverySecond: onEverySecond:
onEveryMinute:
onEveryHour: onEveryHour:
onEveryDay: onEveryDay:
ret ret
; @end ; @end
onEveryMinute:
bigcall WinNetStats_Update
ret
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; @routine onEveryLoop ; @routine onEveryLoop
@@ -216,6 +220,7 @@ onEveryLoop:
test: test:
#ifdef MODULES_GUI #ifdef MODULES_GUI
bigcall WinNetStats_Init bigcall WinNetStats_Init
bigcall WinNetStats_Draw
#endif #endif
ret ret
@@ -231,14 +236,14 @@ test:
;.include "common/debug.asm" ;.include "common/debug.asm"
.include "modules/lcd2/gui/titledwindow.asm" .include "modules/lcd2/gui/titlewindow.asm"
;.include "modules/lcd2/font/font2.asm" ;.include "modules/lcd2/font/font2.asm"
;.include "modules/lcd2/font/font3.asm" ;.include "modules/lcd2/font/font3.asm"
;.include "modules/lcd2/font/font16x26.asm" ;.include "modules/lcd2/font/font16x26.asm"
;.include "modules/lcd2/font/font4.asm" ;.include "modules/lcd2/font/font4.asm"
;.include "modules/lcd2/font/font12x16.asm" ;.include "modules/lcd2/font/font12x16.asm"
.include "modules/lcd2/ili9341/font6x8.asm" .include "modules/lcd2/ili9341/font12x20.asm"
.include "modules/lcd2/ili9341/font6x8_1.asm" .include "modules/lcd2/ili9341/font12x20_1.asm"
;.include "common/list_t.asm" ;.include "common/list_t.asm"
;.include "common/tree_t.asm" ;.include "common/tree_t.asm"
;.include "common/divide.asm" ;.include "common/divide.asm"

View File

@@ -18,49 +18,101 @@ WinNetStats_Init:
; setup ; setup
ldi yl, LOW(winNetstats) ldi yl, LOW(winNetstats)
ldi yh, HIGH(winNetstats) ldi yh, HIGH(winNetstats)
rcall TitleWindow_Init bigcall TitleWindow_Init
ldi zl, LOW(ili9341Font6x8_1*2) ldi zl, LOW(ili9341Font12x20_1*2)
ldi zh, HIGH(ili9341Font6x8_1*2) ldi zh, HIGH(ili9341Font12x20_1*2)
bigcall TitleWindow_SetFont bigcall TitleWindow_SetFont
ldi r16, LOW(winNetstats_title*2) ldi r16, LOW(winNetstats_title*2)
std Y+TITLEDWINDOW_OFFS_TITLEPTR_LO, r16 std Y+TITLEWINDOW_OFFS_TITLEPTR_LO, r16
ldi r16, HIGH(winNetstats_title*2) ldi r16, HIGH(winNetstats_title*2)
std Y+TITLEDWINDOW_OFFS_TITLEPTR_HI, r16 std Y+TITLEWINDOW_OFFS_TITLEPTR_HI, r16
; setup size and pos bigcall TitleWindow_SetFullSize
clr r4
clr r5
clr r6
clr r7
ldi r16, LOW(DISPLAY_WIDTH)
mov r8, r16
ldi r16, HIGH(DISPLAY_WIDTH)
mov r9, r16
ldi r16, LOW(DISPLAY_HEIGHT)
mov r10, r16
ldi r16, HIGH(DISPLAY_HEIGHT)
mov r11, r16
bigcall TitleWindow_SetPosAndSize
; setup colors
bigcall TitleWindow_SetStyleColors bigcall TitleWindow_SetStyleColors
bigcall TitleWindow_Draw
ret ret
; @end ; @end
winNetstats_title: .db "Network Statistics", 0, 0 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
; 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
mov r6, r16
ldi r16, HIGH(@0)
mov r7, r16
bigcall Window_DrawTextFlash
ldi r16, 160 ; X
mov r4, r16
clr r5
ldi r16, LOW(@0) ; Y
mov r6, r16
ldi r16, HIGH(@0)
mov r7, r16
lds r16, @2 ; data
lds r17, @2+1
bigcall Window_WriteHexWordAt
.endmacro
WinNetStats_Update:
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
; packets out
WINNETSTATS_PRINTDATA 24, winNetstats_lPacketsOut, netInterfaceData+NET_IFACE_OFFS_PACKETSOUT_LOW
; eContent
WINNETSTATS_PRINTDATA 46, winNetstats_lContentErr, netInterfaceData+NET_IFACE_OFFS_ERR_CONTENT_LOW
; eIO
WINNETSTATS_PRINTDATA 68, winNetstats_lIoErr, netInterfaceData+NET_IFACE_OFFS_ERR_IO_LOW
; eMsgSize
WINNETSTATS_PRINTDATA 90, winNetstats_lMsgSizeErr, netInterfaceData+NET_IFACE_OFFS_ERR_MSGSIZE_LOW
sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret
; @end
winNetstats_title: .db "Network Statistics", 0, 0
winNetstats_lPacketsIn: .db "Pkgs In :", 0
winNetstats_lPacketsOut: .db "Pkgs Out:", 0
winNetstats_lContentErr: .db "eContent:", 0
winNetstats_lIoErr: .db "eIO :", 0
winNetstats_lMsgSizeErr: .db "eMsgSize:", 0
.dseg .dseg
winNetstats: winNetstats:
.byte TITLEDWINDOW_SIZE .byte TITLEWINDOW_SIZE

View File

@@ -6,7 +6,7 @@
defs.asm defs.asm
main.asm main.asm
style.asm style.asm
titledwindow.asm titlewindow.asm
window.asm window.asm
</extradist> </extradist>

View File

@@ -17,7 +17,7 @@
.equ STYLE_WIN_FOREGROUND = DISPLAY_COLOR_BLACK .equ STYLE_WIN_FOREGROUND = DISPLAY_COLOR_BLACK
.equ STYLE_WIN_TITLE_HEIGHT = 20 .equ STYLE_WIN_TITLE_HEIGHT = 24
#endif #endif

View File

@@ -7,17 +7,17 @@
; * Please see toplevel file COPYING of that project for license details. * ; * Please see toplevel file COPYING of that project for license details. *
; *************************************************************************** ; ***************************************************************************
#ifndef AQH_AVR_GUI_TITLEDWINDOW_ASM #ifndef AQH_AVR_GUI_TITLEWINDOW_ASM
#define AQH_AVR_GUI_TITLEDWINDOW_ASM #define AQH_AVR_GUI_TITLEWINDOW_ASM
.equ TITLEDWINDOW_OFFS_SELF = 0 .equ TITLEWINDOW_OFFS_SELF = 0
.equ TITLEDWINDOW_OFFS_TITLEPTR_LO = WIN_SIZE .equ TITLEWINDOW_OFFS_TITLEPTR_LO = WIN_SIZE
.equ TITLEDWINDOW_OFFS_TITLEPTR_HI = WIN_SIZE+1 .equ TITLEWINDOW_OFFS_TITLEPTR_HI = WIN_SIZE+1
.equ TITLEDWINDOW_OFFS_TITLEWIN = TITLEDWINDOW_OFFS_TITLEPTR_HI+1 .equ TITLEWINDOW_OFFS_TITLEWIN = TITLEWINDOW_OFFS_TITLEPTR_HI+1
.equ TITLEDWINDOW_OFFS_CONTENTWIN = TITLEDWINDOW_OFFS_TITLEWIN+WIN_SIZE .equ TITLEWINDOW_OFFS_CONTENTWIN = TITLEWINDOW_OFFS_TITLEWIN+WIN_SIZE
.equ TITLEDWINDOW_SIZE = TITLEDWINDOW_OFFS_CONTENTWIN+WIN_SIZE .equ TITLEWINDOW_SIZE = TITLEWINDOW_OFFS_CONTENTWIN+WIN_SIZE
@@ -27,19 +27,19 @@
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; @routine TitleWindow_Init @global ; @routine TitleWindow_Init @global
; ;
; @param Y pointer to titledwindow data (size=TITLEDWINDOW_SIZE) ; @param Y pointer to titledwindow data (size=TITLEWINDOW_SIZE)
TitleWindow_Init: TitleWindow_Init:
mov xl, yl mov xl, yl
mov xh, yh mov xh, yh
ldi r17, TITLEDWINDOW_SIZE ldi r17, TITLEWINDOW_SIZE
clr r16 clr r16
bigcall Utils_FillSram ; (R17, X) bigcall Utils_FillSram ; (R17, X)
ldi r16, LOW(TitleWindow_Handler) ldi r16, LOW(TitleWindow_Handler)
std Y+(TITLEDWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_LO), r16 std Y+(TITLEWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_LO), r16
ldi r16, HIGH(TitleWindow_Handler) ldi r16, HIGH(TitleWindow_Handler)
std Y+(TITLEDWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_HI), r16 std Y+(TITLEWINDOW_OFFS_SELF+WIN_OFFS_HANDLER_HI), r16
ret ret
; @end ; @end
@@ -57,16 +57,16 @@ TitleWindow_SetFont:
std Y+WIN_OFFS_FONT_HI, zh std Y+WIN_OFFS_FONT_HI, zh
; setup title window ; setup title window
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN adiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
std Y+WIN_OFFS_FONT_LO, zl std Y+WIN_OFFS_FONT_LO, zl
std Y+WIN_OFFS_FONT_HI, zh std Y+WIN_OFFS_FONT_HI, zh
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN sbiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
; setup content window ; setup content window
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN adiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
std Y+WIN_OFFS_FONT_LO, zl std Y+WIN_OFFS_FONT_LO, zl
std Y+WIN_OFFS_FONT_HI, zh std Y+WIN_OFFS_FONT_HI, zh
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret ret
; @end ; @end
@@ -94,7 +94,7 @@ TitleWindow_SetPosAndSize:
std Y+WIN_OFFS_HEIGHT_HI, r11 std Y+WIN_OFFS_HEIGHT_HI, r11
; setup title window ; setup title window
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN adiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
std Y+WIN_OFFS_X_LO, r4 std Y+WIN_OFFS_X_LO, r4
std Y+WIN_OFFS_X_HI, r5 std Y+WIN_OFFS_X_HI, r5
std Y+WIN_OFFS_Y_LO, r6 std Y+WIN_OFFS_Y_LO, r6
@@ -105,10 +105,10 @@ TitleWindow_SetPosAndSize:
ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT) ldi r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
std Y+WIN_OFFS_HEIGHT_LO, r16 std Y+WIN_OFFS_HEIGHT_LO, r16
std Y+WIN_OFFS_HEIGHT_HI, r17 std Y+WIN_OFFS_HEIGHT_HI, r17
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN sbiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
; setup content window ; setup content window
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN adiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
std Y+WIN_OFFS_X_LO, r4 std Y+WIN_OFFS_X_LO, r4
std Y+WIN_OFFS_X_HI, r5 std Y+WIN_OFFS_X_HI, r5
ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT) ldi r16, LOW(STYLE_WIN_TITLE_HEIGHT)
@@ -125,13 +125,44 @@ TitleWindow_SetPosAndSize:
sbci r17, HIGH(STYLE_WIN_TITLE_HEIGHT) sbci r17, HIGH(STYLE_WIN_TITLE_HEIGHT)
std Y+WIN_OFFS_HEIGHT_LO, r16 std Y+WIN_OFFS_HEIGHT_LO, r16
std Y+WIN_OFFS_HEIGHT_HI, r17 std Y+WIN_OFFS_HEIGHT_HI, r17
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret ret
; @end ; @end
; ---------------------------------------------------------------------------
; @routine TitleWindow_SetFullSize @global
;
; @param Y pointer to screen object in SDRAM
; @clobbers any, !Y
TitleWindow_SetFullSize:
clr r4
clr r5
clr r6
clr r7
ldi r16, LOW(DISPLAY_WIDTH)
mov r8, r16
ldi r16, HIGH(DISPLAY_WIDTH)
mov r9, r16
ldi r16, LOW(DISPLAY_HEIGHT)
mov r10, r16
ldi r16, HIGH(DISPLAY_HEIGHT)
mov r11, r16
rcall TitleWindow_SetPosAndSize
ret
; @enb
; ---------------------------------------------------------------------------
; @routine TitleWindow_SetStyleColors @global
;
; @param Y pointer to screen object in SDRAM
; @clobbers any, !Y
TitleWindow_SetStyleColors: TitleWindow_SetStyleColors:
ldi r16, LOW(STYLE_WIN_BACKGROUND) ldi r16, LOW(STYLE_WIN_BACKGROUND)
ldi r17, HIGH(STYLE_WIN_BACKGROUND) ldi r17, HIGH(STYLE_WIN_BACKGROUND)
@@ -143,7 +174,7 @@ TitleWindow_SetStyleColors:
std Y+WIN_OFFS_FG_COL_HI, r17 std Y+WIN_OFFS_FG_COL_HI, r17
; setup title window ; setup title window
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN adiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
ldi r16, LOW(STYLE_WIN_TITLE_BACKGROUND) ldi r16, LOW(STYLE_WIN_TITLE_BACKGROUND)
ldi r17, HIGH(STYLE_WIN_TITLE_BACKGROUND) ldi r17, HIGH(STYLE_WIN_TITLE_BACKGROUND)
std Y+WIN_OFFS_BG_COL_LO, r16 std Y+WIN_OFFS_BG_COL_LO, r16
@@ -152,10 +183,10 @@ TitleWindow_SetStyleColors:
ldi r17, HIGH(STYLE_WIN_TITLE_FOREGROUND) ldi r17, HIGH(STYLE_WIN_TITLE_FOREGROUND)
std Y+WIN_OFFS_FG_COL_LO, r16 std Y+WIN_OFFS_FG_COL_LO, r16
std Y+WIN_OFFS_FG_COL_HI, r17 std Y+WIN_OFFS_FG_COL_HI, r17
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN sbiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
; setup content window ; setup content window
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN adiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ldi r16, LOW(STYLE_WIN_BACKGROUND) ldi r16, LOW(STYLE_WIN_BACKGROUND)
ldi r17, HIGH(STYLE_WIN_BACKGROUND) ldi r17, HIGH(STYLE_WIN_BACKGROUND)
std Y+WIN_OFFS_BG_COL_LO, r16 std Y+WIN_OFFS_BG_COL_LO, r16
@@ -164,7 +195,7 @@ TitleWindow_SetStyleColors:
ldi r17, HIGH(STYLE_WIN_FOREGROUND) ldi r17, HIGH(STYLE_WIN_FOREGROUND)
std Y+WIN_OFFS_FG_COL_LO, r16 std Y+WIN_OFFS_FG_COL_LO, r16
std Y+WIN_OFFS_FG_COL_HI, r17 std Y+WIN_OFFS_FG_COL_HI, r17
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret ret
; @end ; @end
@@ -174,31 +205,31 @@ TitleWindow_SetStyleColors:
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
; @routine TitleWindow_Draw @global ; @routine TitleWindow_Draw @global
; ;
; @param Y pointer to titledwindow data (size=TITLEDWINDOW_SIZE) ; @param Y pointer to titledwindow data (size=TITLEWINDOW_SIZE)
TitleWindow_Draw: TitleWindow_Draw:
; draw title window ; draw title window
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN adiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
rcall Window_Clear rcall Window_Clear
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN sbiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
; write header ; write header
ldd zl, Y+TITLEDWINDOW_OFFS_TITLEPTR_LO ldd zl, Y+TITLEWINDOW_OFFS_TITLEPTR_LO
ldd zh, Y+TITLEDWINDOW_OFFS_TITLEPTR_HI ldd zh, Y+TITLEWINDOW_OFFS_TITLEPTR_HI
adiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN adiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
ldi r16, 5 ldi r16, 5
mov r4, r16 mov r4, r16
clr r5 clr r5
ldi r16, 5 ldi r16, 2
mov r6, r16 mov r6, r16
clr r7 clr r7
rcall Window_DrawTextFlash rcall Window_DrawTextFlash
sbiw yh:yl, TITLEDWINDOW_OFFS_TITLEWIN sbiw yh:yl, TITLEWINDOW_OFFS_TITLEWIN
; clear content window ; clear content window
adiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN adiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
rcall Window_Clear rcall Window_Clear
sbiw yh:yl, TITLEDWINDOW_OFFS_CONTENTWIN sbiw yh:yl, TITLEWINDOW_OFFS_CONTENTWIN
ret ret
; @end ; @end

View File

@@ -41,8 +41,7 @@ Window_Clear:
; @param R5:R4 X (dest) ; @param R5:R4 X (dest)
; @param R7:R6 Y (dest) ; @param R7:R6 Y (dest)
; @return R5:R4 X pos behind string ; @return R5:R4 X pos behind string
; @return R7:R6 Y pos behind string ; @clobbers any, !Y, !R6, !R7
; @clobbers any, !Y
Window_DrawTextFlash: Window_DrawTextFlash:
rcall winCalcAbsPosAndBorders ; (R18, R19) rcall winCalcAbsPosAndBorders ; (R18, R19)
@@ -74,7 +73,7 @@ Window_DrawTextFlash_loopEnd:
; @param R5:R4 X (dest) ; @param R5:R4 X (dest)
; @param R7:R6 Y (dest) ; @param R7:R6 Y (dest)
; @return R5:R4 X pos behind char ; @return R5:R4 X pos behind char
; @clobbers any, !Y, !R6, !R7 ; @clobbers any, !Y
Window_DrawCharAt: Window_DrawCharAt:
rcall winCalcAbsPosAndBorders rcall winCalcAbsPosAndBorders
@@ -182,6 +181,89 @@ winDrawChar_ret:
; ---------------------------------------------------------------------------
; @routine Window_WriteHexWordAt @global
;
; @param Y pointer to screen object in SDRAM
; @param R17:R16 word to write
; @param R5:R4 X (dest)
; @param R7:R6 Y (dest)
; @return R5:R4 X pos behind string
; @clobbers any, !Y
Window_WriteHexWordAt:
push r16
mov r16, r17
rcall Window_WriteHexByteAt
pop r16
rcall Window_WriteHexByteAt
ret
; @end
; ---------------------------------------------------------------------------
; @routine Window_WriteHexByteAt @global
;
; @param Y pointer to screen object in SDRAM
; @param R16 byte to write
; @param R5:R4 X (dest)
; @param R7:R6 Y (dest)
; @return R5:R4 X pos behind string
; @clobbers any, !Y
Window_WriteHexByteAt:
push r16
swap r16
rcall winWriteNibble
pop r16
rcall winWriteNibble
ret
; @end
winWriteNibble:
push r4
push r5
push r6
push r7
rcall winNibbleToAscii ; write high nibble (r16, r17)
rcall Window_DrawCharAt ; draw
pop r7
pop r6
pop r5
pop r4
clr r17
add r4, r18
adc r5, r17
ret
; @end
; ---------------------------------------------------------------------------
; @routine winNibbleToAscii
;
; Convert a nibble to an ASCII char.
; @return R16 ASCII representation of that nibble (e.g. '0' for 0)
; @param R16 byte (in bits 0-3)
; @clobbers r16, r17
winNibbleToAscii:
andi r16, 0xf
cpi r16, 10
brcs winNibbleToAscii_l1
ldi r17, 7
add r16, r17
winNibbleToAscii_l1:
ldi r17, '0'
add r16, r17
ret
; @end

View File

@@ -120,7 +120,7 @@ ILI9341_Reset:
rcall Utils_WaitForMilliSecs rcall Utils_WaitForMilliSecs
rcall ili9341BeginSpi rcall ili9341BeginSpi
ldi r16, 0x29 ldi r16, 0x29 ; display on
rcall ili9341SendCommand rcall ili9341SendCommand
rcall ili9341EndSpi rcall ili9341EndSpi
@@ -145,7 +145,7 @@ ILI9341_SetBacklight:
ret ret
ILI9341_SetBacklight_on: ILI9341_SetBacklight_on:
sbi ILI9341_LED_OUTPUT, ILI9341_LED_PIN sbi ILI9341_LED_OUTPUT, ILI9341_LED_PIN
ret ; DEBUG
push r16 push r16
rcall ili9341BeginSpi rcall ili9341BeginSpi
@@ -175,18 +175,29 @@ ILI9341_SetBacklight_on:
ILI9341_LeaveSleepMode: ILI9341_LeaveSleepMode:
rcall ili9341BeginSpi rcall ili9341BeginSpi
ldi r16, 0x11 ; sleep out ldi r16, 0x11 ; sleep out
rcall ili9341SendCommand rcall ili9341SendCommand
rcall ili9341EndSpi rcall ili9341EndSpi
ldi r16, 5 ldi r16, 120
rcall Utils_WaitForMilliSecs rcall Utils_WaitForMilliSecs
rcall ili9341BeginSpi
ldi r16, 0x38 ; idle mode off
rcall ili9341SendCommand
rcall ili9341EndSpi
rcall ili9341BeginSpi
ldi r16, 0x13 ; normal mode on
rcall ili9341SendCommand
rcall ili9341EndSpi
ret ret
; @end ; @end
ili9341InitCommands: ili9341InitCommands:
#if 1
; display off ; display off
.db 0x28, 0 .db 0x28, 0
; PowerCtlA ; PowerCtlA
@@ -235,6 +246,32 @@ ili9341InitCommands:
; end ; end
.db 0xff, 0xff .db 0xff, 0xff
#else
.db 0xef, 3, 0x03, 0x80, 0x02, 0x00
.db 0xcf, 3, 0x00, 0xc1, 0x30, 0x00
.db 0xed, 4, 0x64, 0x03, 0x12, 0x81
.db 0xe8, 3, 0x85, 0x00, 0x78, 0x00
.db 0xcb, 5, 0x39, 0x2c, 0x00, 0x34, 0x02, 0x00
.db 0xf7, 1, 0x20, 0x00
.db 0xea, 2, 0x00, 0x00
.db 0xc0, 1, 0x23, 0x00
.db 0xc1, 1, 0x10, 0x00
.db 0xc5, 2, 0x3e, 0x28
; .db 0xc7, 1, 0x86, 0x00
.db 0xc7, 1, 0xb7, 0x00
.db 0x36, 1, 0b11101000, 0x00
.db 0x3a, 1, 0x55, 0x00
.db 0xb1, 2, 0x00, ILI9341_FRAMERATE_100_HZ
.db 0xb6, 3, 0x08, 0x82, 0x27, 0x00
.db 0xf2, 1, 0x00, 0x00
.db 0x26, 1, 0x01, 0x00
.db 0xe0, 15, 0x0f, 0x31, 0x2b, 0x0c, 0x0e, 0x08, 0x4e, 0xf1
.db 0x37, 0x07, 0x10, 0x03, 0x0e, 0x09, 0x00, 0x00
.db 0xe1, 15, 0x00, 0x0e, 0x14, 0x03, 0x11, 0x07, 0x31, 0xc1
.db 0x48, 0x08, 0x0f, 0x0c, 0x31, 0x36, 0x0f, 0x00
; end
.db 0xff, 0xff
#endif ; AQH_AVR_ILI9341_MAIN_ASM #endif ; AQH_AVR_ILI9341_MAIN_ASM