198 lines
5.4 KiB
NASM
198 lines
5.4 KiB
NASM
; ***************************************************************************
|
|
; 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. *
|
|
; ***************************************************************************
|
|
|
|
|
|
; ***************************************************************************
|
|
;
|
|
; AtMega644
|
|
; --------
|
|
; LED PB0 1 40 PA0 DEV0
|
|
; DC PB1 2 39 PA1 DEV1
|
|
; INT2 PB2 3 38 PA2 DEV2
|
|
; DSPRES PB3 4 37 PA3 PA3
|
|
; SS PB4 5 36 PA4 PA4
|
|
; MOSI PB5 6 35 PA5
|
|
; MISO PB6 7 34 PA6
|
|
; SCK PB7 8 33 PA7
|
|
; /RESET 9 32 AREF
|
|
; VCC 10 31 GND
|
|
; GND 11 30 AVCC
|
|
; XTAL2 12 29 PC7
|
|
; XTAL1 13 28 PC6
|
|
; RXD PD0 14 27 PC5
|
|
; TXD PD1 15 26 PC4
|
|
; PD2 16 25 PC3
|
|
; INT1 PD3 17 24 PC2
|
|
; AUX_PD4 PD4 18 23 PC1
|
|
; DSPLED PD5 19 22 PC0
|
|
; PD6 20 21 PD7
|
|
; --------
|
|
;
|
|
; ***************************************************************************
|
|
|
|
|
|
|
|
.equ BOOTLOADER_ADDR = 0x7c00
|
|
|
|
.equ RESSOURCE_ADDR = 0x4000
|
|
|
|
.equ FIRMWARE_VARIANT_BOOT = 0
|
|
.equ FIRMWARE_VARIANT_TEMP_WINDOW = 1
|
|
|
|
.equ DEVICEINFO_ID = 'C'
|
|
.equ DEVICEINFO_VERSION = 3
|
|
.equ DEVICEINFO_REVISION = 0
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; LED module
|
|
|
|
.equ LED_SIMPLE_ONTIME = 1 ; shorter
|
|
.equ LED_SIMPLE_OFFTIME = 50 ; longer
|
|
.equ LED_SIMPLE_DDR = DDRB
|
|
.equ LED_SIMPLE_PORT = PORTB
|
|
.equ LED_SIMPLE_PORTIN = PINB
|
|
.equ LED_SIMPLE_PINNUM = PORTB0
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; COM module
|
|
|
|
.equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400
|
|
.equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter
|
|
|
|
.equ COM_DATA_DDR = DDRA
|
|
.equ COM_DATA_INPUT = PINA
|
|
.equ COM_DATA_OUTPUT = PORTA
|
|
.equ COM_DATA_PIN = PORTA6
|
|
|
|
.equ COM_CLK_DDR = DDRA
|
|
.equ COM_CLK_INPUT = PINA
|
|
.equ COM_CLK_OUTPUT = PORTA
|
|
.equ COM_CLK_PIN = PORTA7
|
|
|
|
; pin change interrupt register and bit
|
|
.equ COM_IRQ_ADDR_CLK = PCMSK0
|
|
.equ COM_IRQ_BIT_CLK = PCINT7 ; PA7
|
|
|
|
; interrupt control register
|
|
.equ COM_IRQ_ICR_ADDR = PCICR ; PCICR on AtMega644P, GIMSK on AtTiny
|
|
.equ COM_IRQ_ICR_BIT = PCIE0
|
|
|
|
; interrupt flag/mask register
|
|
.equ COM_IRQ_IFR_ADDR = PCIFR ; PCIFR on AtMega644P, GIFR on AtTiny
|
|
.equ COM_IRQ_IFR_BIT = PCIF0
|
|
|
|
.equ COM_IRQ_GIFR_CLK = INTF0
|
|
;.equ COM_IRQ_GIMSK_CLK = PCIE0
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SPI hardware module
|
|
|
|
.equ SPIHW_SS_DDR = DDRB
|
|
.equ SPIHW_SS_INPUT = PINB
|
|
.equ SPIHW_SS_OUTPUT = PORTB
|
|
.equ SPIHW_SS_PIN = PORTB4
|
|
|
|
.equ SPIHW_MOSI_DDR = DDRB
|
|
.equ SPIHW_MOSI_INPUT = PINB
|
|
.equ SPIHW_MOSI_OUTPUT = PORTB
|
|
.equ SPIHW_MOSI_PIN = PORTB5
|
|
|
|
.equ SPIHW_MISO_DDR = DDRB
|
|
.equ SPIHW_MISO_INPUT = PINB
|
|
.equ SPIHW_MISO_OUTPUT = PORTB
|
|
.equ SPIHW_MISO_PIN = PORTB6
|
|
|
|
.equ SPIHW_SCK_DDR = DDRB
|
|
.equ SPIHW_SCK_INPUT = PINB
|
|
.equ SPIHW_SCK_OUTPUT = PORTB
|
|
.equ SPIHW_SCK_PIN = PORTB7
|
|
|
|
.equ SPIHW_SS0_DDR = DDRA
|
|
.equ SPIHW_SS0_OUTPUT = PORTA
|
|
.equ SPIHW_SS0_INPUT = PORTA
|
|
.equ SPIHW_SS0_PIN = PORTA0
|
|
|
|
.equ SPIHW_SS1_DDR = DDRA
|
|
.equ SPIHW_SS1_OUTPUT = PORTA
|
|
.equ SPIHW_SS1_INPUT = PORTA
|
|
.equ SPIHW_SS1_PIN = PORTA1
|
|
|
|
.equ SPIHW_SS2_DDR = DDRA
|
|
.equ SPIHW_SS2_OUTPUT = PORTA
|
|
.equ SPIHW_SS2_INPUT = PORTA
|
|
.equ SPIHW_SS2_PIN = PORTA2
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ILI9341 module
|
|
|
|
.equ DISPLAY_WIDTH = 320
|
|
.equ DISPLAY_HEIGHT = 240
|
|
|
|
.equ ILI9341_DEVICENUM = 0
|
|
.equ ILI9341_DSP_WIDTH = DISPLAY_WIDTH
|
|
.equ ILI9341_DSP_HEIGHT = DISPLAY_HEIGHT
|
|
|
|
.equ ILI9341_RESET_DDR = DDRB
|
|
.equ ILI9341_RESET_OUTPUT = PORTB
|
|
.equ ILI9341_RESET_INPUT = PORTB
|
|
.equ ILI9341_RESET_PIN = PORTB3
|
|
|
|
.equ ILI9341_DC_DDR = DDRB
|
|
.equ ILI9341_DC_OUTPUT = PORTB
|
|
.equ ILI9341_DC_INPUT = PORTB
|
|
.equ ILI9341_DC_PIN = PORTB1
|
|
|
|
.equ ILI9341_LED_DDR = DDRD
|
|
.equ ILI9341_LED_OUTPUT = PORTD
|
|
.equ ILI9341_LED_INPUT = PORTD
|
|
.equ ILI9341_LED_PIN = PORTD5
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; XPT2046 module
|
|
|
|
.equ XPT2046_DEVICENUM = 1
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ComOnUart module
|
|
|
|
;.equ USART0_DATAREG = UDR
|
|
;.equ UCSR0A = UCSRA
|
|
;.equ UCSR0B = UCSRB
|
|
;.equ UCSR0C = UCSRC
|
|
;.equ UBRR0L = UBRRL
|
|
;.equ UBRR0H = UBRRH
|
|
|
|
;.equ UCSZ00 = UCSZ0
|
|
;.equ UCSZ01 = UCSZ1
|
|
;.equ UDRE0 = UDRE
|
|
;.equ RXC0 = RXC
|
|
;.equ TXC0 = TXC
|
|
;.equ FE0 = FE
|
|
;.equ DOR0 = DOR
|
|
;.equ UPE0 = UPE
|
|
;.equ RXEN0 = RXEN
|
|
;.equ TXEN0 = TXEN
|
|
;.equ USBS0 = USBS
|
|
;.equ RXCIE0 = RXCIE
|
|
;.equ UDRIE0 = UDRIE
|
|
|
|
|