avr: added devices, more work on modules.

This commit is contained in:
Martin Preuss
2024-12-15 18:20:54 +01:00
parent c3fd458769
commit 4dc6031d03
61 changed files with 4758 additions and 184 deletions

View File

@@ -13,7 +13,7 @@
.list
.include "n11_defs.asm"
.include "defs.asm"
.include "defs_all.asm"

View File

@@ -49,14 +49,11 @@
.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_TXD_DDR = DDRA
.equ COM_TXD_DATA = PORTA
.equ COM_TXD_PIN = PORTA1
.equ COM_RXD_DDR = DDRA
.equ COM_RXD_INPUT = PINA
.equ COM_RXD_OUTPUT = PORTA
.equ COM_RXD_PIN = PORTA1
.equ COM_DATA_DDR = DDRA
.equ COM_DATA_INPUT = PINA
.equ COM_DATA_OUTPUT = PORTA
.equ COM_DATA_PIN = PORTA1
.equ COM_ATTN_DDR = DDRA
.equ COM_ATTN_INPUT = PINA
@@ -74,7 +71,7 @@
; 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_BIT_LENGTH = 10000 ; 10, 100, 500, 100000 and 200000 works for display: 10000, 100000, 200000
.equ TWI_DDR_SCL = DDRA
.equ TWI_PORT_SCL = PORTA
@@ -162,3 +159,10 @@
; ---------------------------------------------------------------------------
; CCS 811
;
.equ CCS811_ADDR = 0x5a ; or 0x5b

View File

@@ -31,7 +31,7 @@
.list
.include "n11_defs.asm"
.include "defs.asm"
.include "defs_all.asm"
@@ -64,9 +64,10 @@
#define MODULES_SI7021
#define MODULES_STATS
;#define MODULES_CNY70
#define MODULES_REED
;#define MODULES_REED
;#define MODULES_OWI_MASTER
;#define MODULES_DS18B20
#define MODULES_CCS811
; ---------------------------------------------------------------------------
@@ -80,6 +81,11 @@
.equ VALUE_ID_REED2 = 0x05
.equ VALUE_ID_DS18B20_TEMP = 0x06
.equ VALUE_ID_CO2 = 0x07
.equ VALUE_ID_TVOC = 0x08
.equ VALUE_ID_DEBUG = 0x7f
.equ VALUE_ID_REED_CONF = 0x81
@@ -196,6 +202,10 @@ firmwareStart: rjmp main
.include "modules/reed/main.asm"
#endif
#ifdef MODULES_CCS811
.include "modules/ccs811/main.asm"
#endif
; ***************************************************************************
@@ -233,6 +243,10 @@ sramTimerEnqueueValues: .byte 2
sramSendDs18b20TempTimer: .byte 2
#endif
#ifdef MODULES_CCS811
sramCcs811Timer: .byte 2
#endif
; ***************************************************************************
; data in FLASH
@@ -269,6 +283,9 @@ timerList:
#ifdef MODULES_DS18B20
.dw sramDs18b20Timer, Ds18b20_OnTimer, 0, 300 ; every 30s
.dw sramSendDs18b20TempTimer, sendDs18b20Temp, TIMER_FLAGS_IF_ADDR, 600 ; every 60s
#endif
#ifdef MODULES_CCS811
.dw sramCcs811Timer, CCS811_OnTimer, 0, 10 ; every 1s
#endif
.dw 0 ; end of list
@@ -276,7 +293,7 @@ timerList:
.include "main.asm"
.include "main_all.asm"
@@ -313,6 +330,28 @@ onSystemStart:
ret
#ifdef MODULES_CCS811
handleCcsTimer:
rjmp sendCcs811Data
sendCcs811Data:
ldi r16, 0xff ; destination address
ldi r17, VALUE_ID_DEBUG ; value id
ldi r22, 0
; lds r18, ccs811ResponseData ; value
lds r18, ccs811Flags ; value
lds r19, ccs811ResponseData ; denominator
ldi r20, 1
clr r21
ldi xl, LOW(com2SendBuffer)
ldi xh, HIGH(com2SendBuffer)
rcall CPRO_WriteReportValue
rjmp COM2_SendPacket
#endif
#ifdef MODULES_LCD
printScreen: