202 lines
5.1 KiB
NASM
202 lines
5.1 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2023 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. *
|
|
; ***************************************************************************
|
|
|
|
|
|
; ***************************************************************************
|
|
;
|
|
; AtTiny84
|
|
; --------
|
|
; VCC 1 14 GND
|
|
; PB0 2 13 PA0 TCRT1000_Enable
|
|
; PIR PB1 3 12 PA1 COM-DATA
|
|
; /RESET PB3 4 11 PA2 TCRT1000_Input
|
|
; PB2 5 10 PA3 LED
|
|
; COM_CLK PA7 6 9 PA4 TWI-SCL
|
|
; TWI-SDA PA6 7 8 PA5
|
|
; --------
|
|
;
|
|
; ***************************************************************************
|
|
|
|
|
|
|
|
.equ BOOTLOADER_ADDR = 0xd00
|
|
|
|
.equ FIRMWARE_VARIANT_BOOT = 0
|
|
.equ FIRMWARE_VARIANT_TEMP_WINDOW = 1
|
|
|
|
.equ DEVICEINFO_ID = 'N'
|
|
.equ DEVICEINFO_VERSION = 16
|
|
.equ DEVICEINFO_REVISION = 0
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; LED module
|
|
|
|
.equ LED_SIMPLE_ONTIME = 2
|
|
.equ LED_SIMPLE_OFFTIME = 30
|
|
.equ LED_SIMPLE_DDR = DDRA
|
|
.equ LED_SIMPLE_PORT = PORTA
|
|
.equ LED_SIMPLE_PORTIN = PINA
|
|
.equ LED_SIMPLE_PINNUM = PORTA3
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; LED activity module
|
|
|
|
.equ LED_ACTIVITY_DDR = DDRA
|
|
.equ LED_ACTIVITY_PORT = PORTA
|
|
.equ LED_ACTIVITY_PORTIN = PINA
|
|
.equ LED_ACTIVITY_PINNUM = PORTA3
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; 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 = PORTA1
|
|
|
|
.equ COM_CLK_DDR = DDRA
|
|
.equ COM_CLK_INPUT = PINA
|
|
.equ COM_CLK_OUTPUT = PORTA
|
|
.equ COM_CLK_PIN = PORTA7
|
|
|
|
.equ COM_IRQ_ADDR_CLK = PCMSK0
|
|
.equ COM_IRQ_BIT_CLK = PCINT7 ; bit 7 in PCMSK0
|
|
.equ COM_IRQ_GIFR_CLK = PCIF0
|
|
.equ COM_IRQ_GIMSK_CLK = PCIE0
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; TWI master module
|
|
|
|
;.equ TWI_BIT_LENGTH = 10000 ; 100000 and 200000 works for display: 10000, 100000, 200000
|
|
.equ TWI_BIT_LENGTH = 1 ; 10, 100, 500, 100000 and 200000 works for display: 10000, 100000, 200000
|
|
|
|
.equ TWI_DDR_SCL = DDRA
|
|
.equ TWI_PORT_SCL = PORTA
|
|
.equ TWI_PIN_SCL = PINA
|
|
.equ TWI_PINNUM_SCL = PORTA4
|
|
|
|
.equ TWI_DDR_SDA = DDRA
|
|
.equ TWI_PORT_SDA = PORTA
|
|
.equ TWI_PIN_SDA = PINA
|
|
.equ TWI_PINNUM_SDA = PORTA6
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; LCD module
|
|
|
|
.equ LCD_TWI_ADDRESS = 0x3c
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; BMP 280
|
|
|
|
.equ BMP280_ADDR = 0x76
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; SI 7021
|
|
|
|
.equ SI7021_ADDR = 0x40
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ADC/CNY70
|
|
|
|
|
|
.equ CNY70_LED_PORT = PORTA
|
|
.equ CNY70_LED_DDR = DDRA
|
|
.equ CNY70_LED_PIN = PORTA0
|
|
|
|
.equ CNY70_ADC_PORT = PORTA ; adc2
|
|
.equ CNY70_ADC_DDR = DDRA
|
|
.equ CNY70_ADC_PIN = PORTA2
|
|
.equ CNY70_ADC_MUX = MUX2
|
|
.equ CNY70_ADC_ADCSRB = ADC2D
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; ADC/TCRT1K
|
|
|
|
|
|
.equ TCRT1K_LED_PORT = PORTA
|
|
.equ TCRT1K_LED_DDR = DDRA
|
|
.equ TCRT1K_LED_PIN = PORTA0
|
|
|
|
.equ TCRT1K_ADC_PORT = PORTA ; adc2
|
|
.equ TCRT1K_ADC_DDR = DDRA
|
|
.equ TCRT1K_ADC_PIN = PORTA2
|
|
.equ TCRT1K_ADC_MUX = MUX2
|
|
.equ TCRT1K_ADC_ADCSRB = ADC2D
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Reed
|
|
;
|
|
|
|
.equ REEDOUT1_DDR = DDRA
|
|
.equ REEDOUT1_PORT = PORTA
|
|
.equ REEDOUT1_PIN = PINA
|
|
.equ REEDOUT1_PINNUM = PORTA0
|
|
|
|
.equ REEDOUT2_DDR = DDRB
|
|
.equ REEDOUT2_PORT = PORTB
|
|
.equ REEDOUT2_PIN = PINB
|
|
.equ REEDOUT2_PINNUM = PORTB0
|
|
|
|
.equ REED1_DDR = DDRA
|
|
.equ REED1_PORT = PORTA
|
|
.equ REED1_PIN = PINA
|
|
.equ REED1_PINNUM = PORTA2
|
|
|
|
.equ REED2_DDR = DDRA
|
|
.equ REED2_PORT = PORTA
|
|
.equ REED2_PIN = PINA
|
|
.equ REED2_PINNUM = PORTA5
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; 1-Wire Master
|
|
;
|
|
|
|
.equ OWI_DDR = DDRB
|
|
.equ OWI_PORTOUT = PORTB
|
|
.equ OWI_PORTIN = PINB
|
|
.equ OWI_PINNUM = PORTB2
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Motion Sensor
|
|
;
|
|
|
|
.equ MOTION_DDR = DDRB
|
|
.equ MOTION_INPUT = PINB
|
|
.equ MOTION_OUTPUT = PORTB
|
|
.equ MOTION_PIN = PORTB1
|
|
|
|
|
|
|