diff --git a/0BUILD b/0BUILD index e0fc43b..4642c15 100644 --- a/0BUILD +++ b/0BUILD @@ -95,7 +95,7 @@ - -p t84 -c stk500 -P /dev/ttyACM0 -B16 -U flash:w:avr/aqhomeavr.hex + -p t84 -c stk500 -P /dev/ttyACM0 -B16 -U flash:w:avr/att84_temp1.hex diff --git a/avr/.gitignore b/avr/.gitignore index e265a56..266d055 100644 --- a/avr/.gitignore +++ b/avr/.gitignore @@ -1,2 +1,3 @@ main.obj -main.eep.hex +*.eep.hex +*.obj diff --git a/avr/0BUILD b/avr/0BUILD index 4f3d1d3..5efda71 100644 --- a/avr/0BUILD +++ b/avr/0BUILD @@ -2,6 +2,7 @@ + + + + + + + -I $(builddir) + -I $(srcdir) + -I $(topsrcdir)/avr + + + + + att84_temp1.asm + + + diff --git a/avr/att84_temp1.asm b/avr/att84_temp1.asm new file mode 100644 index 0000000..6144804 --- /dev/null +++ b/avr/att84_temp1.asm @@ -0,0 +1,401 @@ +; *************************************************************************** +; Source file for temperature sensor node on AtTiny 84 +; +; This is for the full system (i.e. not the boot loader). +; +; All definitions and changes should go into this file. +; +; +; AtTiny84 +; -------- +; VCC 1 14 GND +; PB0 2 13 PA0 +; PB1 3 12 PA1 COM-DATA +; /RESET PB3 4 11 PA2 OWI +; KEY1 PB2 5 10 PA3 LED +; COM_ATTN PA7 6 9 PA4 TWI-SCL +; TWI-SDA PA6 7 8 PA5 +; -------- +; +; *************************************************************************** + + + +.nolist +.include "include/tn84def.inc" ; Define device ATtiny84 +.list + +.include "defs.asm" + + + +; *************************************************************************** +; defines + +; --------------------------------------------------------------------------- +; generic + +.equ clock=1000000 ; Define the clock frequency + + + +; --------------------------------------------------------------------------- +; list of modules to use + +#define MODULES_TIMER +#define MODULES_COM +#define MODULES_LED +#define MODULES_TWI_MASTER +#define MODULES_LCD +#define MODULES_SI7021 + + +.equ VALUE_ID_TEMP1 = 0x01 +.equ VALUE_ID_HUM1 = 0x02 + + + +; --------------------------------------------------------------------------- +; COM module + +.equ COM_BIT_LENGTH = 52000 ; 104000=9600, 52000=19200, 26000=38400 + +.equ COM_DDR_DATA = DDRA +.equ COM_PORT_DATA = PORTA +.equ COM_PIN_DATA = PINA +.equ COM_PINNUM_DATA = PORTA1 + +.equ COM_DDR_ATTN = DDRA +.equ COM_PORT_ATTN = PORTA +.equ COM_PIN_ATTN = PINA +.equ COM_PINNUM_ATTN = PORTA7 + +.equ COM_IRQ_ADDR_ATTN = PCMSK0 +.equ COM_IRQ_BIT_ATTN = 7 ; bit 7 in PCMSK0 +.equ COM_IRQ_GIFR_ATTN = PCIF0 +.equ COM_IRQ_GIMSK_ATTN = PCIE0 + + + +; --------------------------------------------------------------------------- +; TWI master module + +.equ LCD_TWI_ADDRESS = 0x3c + +.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 + + + +; --------------------------------------------------------------------------- +; BMP 280 + +.equ BMP280_ADDR = 0x76 + + + +; --------------------------------------------------------------------------- +; SI 7021 + +.equ SI7021_ADDR = 0x40 + + + + + +; *************************************************************************** +; code segment + +.cseg +.org 000000 + + + +; --------------------------------------------------------------------------- +; Reset and interrupt vectors + + rjmp main ; Reset vector + reti ; EXT_INT0 + rjmp comIsrPcint0 ; PCI0 + reti ; PCI1 + reti ; WATCHDOG + reti ; ICP1 + reti ; OC1A + reti ; OC1B + reti ; OVF1 + rjmp timerIrqOC0A ; OC0A + reti ; OC0B + reti ; OVF0 + reti ; ACI + reti ; ADCC + reti ; ERDY + reti ; USI_STR + reti ; USI_OVF + + + +; *************************************************************************** +; includes + +.include "utils.asm" +.include "timer.asm" +.include "led.asm" +.include "com.asm" +.include "twimaster.asm" +.include "lcd.asm" +;.include "bmp280.asm" +.include "si7021.asm" + + + +; *************************************************************************** +; data in SRAM + +.dseg + +ledA3Sram: .byte LED_SRAM_SIZE + + + + +; *************************************************************************** +; data in EEPROM + +.eseg + + + + +; *************************************************************************** +; data in FLASH + +.cseg + +ledA3Flash: .db DDRA+0x20, PORTA+0x20, PINA+0x20, (1<