ili9341: moved io code into own file. changed args to r0-r11.
This commit is contained in:
112
avr/modules/lcd2/ili9341/io_spi.asm
Normal file
112
avr/modules/lcd2/ili9341/io_spi.asm
Normal file
@@ -0,0 +1,112 @@
|
||||
; ***************************************************************************
|
||||
; 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. *
|
||||
; ***************************************************************************
|
||||
|
||||
; generally we use the following parameters here:
|
||||
; @param r1:r0 background color
|
||||
; @param r3:r2 foreground color
|
||||
; @param r5:r4 X0
|
||||
; @param r7:r6 Y0
|
||||
; @param r9:r8 X1/W
|
||||
; @param r11:r10 Y1/H
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; defines
|
||||
|
||||
.equ ILI9341_SPIMODE = (0<<SPIHW_MODE_SPEED0_BIT) | \
|
||||
(0<<SPIHW_MODE_SPEED1_BIT) | \
|
||||
(1<<SPIHW_MODE_DOUBLESPEED_BIT) | \
|
||||
(0<<SPIHW_MODE_DATAORDER_BIT) | \
|
||||
(0<<SPIHW_MODE_CPOL_BIT) | \
|
||||
(0<<SPIHW_MODE_CPHA_BIT)
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ILI9341IoInit @global
|
||||
|
||||
ILI9341IoInit:
|
||||
; setup pins
|
||||
sbi ILI9341_RESET_DDR, ILI9341_RESET_PIN ; RESET= output
|
||||
sbi ILI9341_RESET_OUTPUT, ILI9341_RESET_PIN ; RESET= high
|
||||
sbi ILI9341_DC_DDR, ILI9341_DC_PIN ; DC = output
|
||||
sbi ILI9341_LED_DDR, ILI9341_LED_PIN ; LED = output
|
||||
cbi ILI9341_LED_OUTPUT, ILI9341_LED_PIN ; LED = low
|
||||
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341BeginSpi
|
||||
;
|
||||
; @clobbers r16, r17
|
||||
|
||||
ili9341BeginSpi:
|
||||
ldi r16, ILI9341_SPIMODE
|
||||
ldi r17, ILI9341_DEVICENUM
|
||||
rjmp SPIHW_MasterStart ; (R18)
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; @routine ili9341EndSpi
|
||||
;
|
||||
; @clobbers r16
|
||||
|
||||
ili9341EndSpi:
|
||||
rjmp SPIHW_MasterStop ; (R16)
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
ili9341SendCommand:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
cbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D low
|
||||
nop
|
||||
rcall SPIHW_MasterTransfer
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
ili9341SendData:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
; @param r19:18 data
|
||||
ili9341Send16BitData:
|
||||
cbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
sbi ILI9341_DC_OUTPUT, ILI9341_DC_PIN ; D high
|
||||
mov r16, r19
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
mov r16, r18
|
||||
rcall SPIHW_MasterTransfer ; (R16)
|
||||
sbi SPIHW_SS_OUTPUT, SPIHW_SS_PIN ; SS low
|
||||
ret
|
||||
; @end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user