avr: added brightness sensor
This commit is contained in:
@@ -95,10 +95,8 @@ AppReportSensors_OnEverySecond_store:
|
|||||||
|
|
||||||
#ifdef MODULES_SGP30
|
#ifdef MODULES_SGP30
|
||||||
cpi r16, 53
|
cpi r16, 53
|
||||||
breq AppReportSensors_OnEverySecond_measureValue5
|
|
||||||
cpi r16, 63
|
|
||||||
breq AppReportSensors_OnEverySecond_sendValue5
|
breq AppReportSensors_OnEverySecond_sendValue5
|
||||||
cpi r16, 73
|
cpi r16, 63
|
||||||
breq AppReportSensors_OnEverySecond_sendValue6
|
breq AppReportSensors_OnEverySecond_sendValue6
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -114,6 +112,11 @@ AppReportSensors_OnEverySecond_store:
|
|||||||
breq AppReportSensors_OnEverySecond_sendCCS811_CO2
|
breq AppReportSensors_OnEverySecond_sendCCS811_CO2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODULES_BRIGHTNESS
|
||||||
|
cpi r16, 97
|
||||||
|
breq AppReportSensors_OnEverySecond_sendBrightness
|
||||||
|
#endif
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
#ifdef MODULES_SI7021
|
#ifdef MODULES_SI7021
|
||||||
@@ -140,13 +143,11 @@ AppReportSensors_OnEverySecond_sendValue3:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODULES_SGP30
|
#ifdef MODULES_SGP30
|
||||||
AppReportSensors_OnEverySecond_measureValue5:
|
AppReportSensors_OnEverySecond_sendValue5:
|
||||||
rjmp SGP30_Measure
|
rjmp SGP30_SendTVOC
|
||||||
AppReportSensors_OnEverySecond_sendValue5:
|
ret
|
||||||
rjmp SGP30_SendTVOC
|
AppReportSensors_OnEverySecond_sendValue6:
|
||||||
ret
|
rjmp SGP30_SendCO2
|
||||||
AppReportSensors_OnEverySecond_sendValue6:
|
|
||||||
rjmp SGP30_SendCO2
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODULES_CCS811
|
#ifdef MODULES_CCS811
|
||||||
@@ -156,6 +157,11 @@ AppReportSensors_OnEverySecond_sendCCS811_CO2:
|
|||||||
rjmp CCS811_SendCO2
|
rjmp CCS811_SendCO2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODULES_BRIGHTNESS
|
||||||
|
AppReportSensors_OnEverySecond_sendBrightness:
|
||||||
|
rjmp Brightness_Send
|
||||||
|
#endif
|
||||||
|
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,14 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef MODULES_BRIGHTNESS
|
||||||
|
.include "modules/brightness/main.asm"
|
||||||
|
#ifdef MODULES_NETWORK
|
||||||
|
.include "modules/brightness/send.asm"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef APPS_MOTION
|
#ifdef APPS_MOTION
|
||||||
.include "modules/f_keepup/main.asm"
|
.include "modules/f_keepup/main.asm"
|
||||||
.include "modules/valsched/main.asm"
|
.include "modules/valsched/main.asm"
|
||||||
|
|||||||
@@ -112,6 +112,11 @@ onSystemTimerTick:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef MODULES_BRIGHTNESS
|
||||||
|
bigcall Brightness_Every100ms
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef APPS_NETWORK
|
#ifdef APPS_NETWORK
|
||||||
ldi yl, LOW(netInterfaceData)
|
ldi yl, LOW(netInterfaceData)
|
||||||
ldi yh, HIGH(netInterfaceData)
|
ldi yh, HIGH(netInterfaceData)
|
||||||
@@ -145,6 +150,11 @@ sysOnEverySecond:
|
|||||||
#ifdef APPS_REPORTSENSORS
|
#ifdef APPS_REPORTSENSORS
|
||||||
bigcall AppReportSensors_OnEverySecond
|
bigcall AppReportSensors_OnEverySecond
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODULES_SGP30
|
||||||
|
bigcall SGP30_EverySecond
|
||||||
|
#endif
|
||||||
|
|
||||||
bigjmp onEverySecond
|
bigjmp onEverySecond
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ initModules:
|
|||||||
bigcall ILI9341_Init
|
bigcall ILI9341_Init
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MODULES_BRIGHTNESS
|
||||||
|
bigcall Brightness_Init
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
; done
|
; done
|
||||||
ret
|
ret
|
||||||
|
|||||||
@@ -146,3 +146,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; Brightness
|
||||||
|
|
||||||
|
|
||||||
|
.equ BRIGHTNESS_ADC_PORT = PORTA ; adc0
|
||||||
|
.equ BRIGHTNESS_ADC_DDR = DDRA
|
||||||
|
.equ BRIGHTNESS_ADC_PIN = PORTA0
|
||||||
|
.equ BRIGHTNESS_ADC_MUX = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,7 @@
|
|||||||
;#define MODULES_DS18B20
|
;#define MODULES_DS18B20
|
||||||
#define MODULES_MOTION
|
#define MODULES_MOTION
|
||||||
;#define MODULES_CCS811
|
;#define MODULES_CCS811
|
||||||
|
#define MODULES_BRIGHTNESS
|
||||||
|
|
||||||
#define APPS_NETWORK
|
#define APPS_NETWORK
|
||||||
#define APPS_MOTION
|
#define APPS_MOTION
|
||||||
@@ -96,6 +97,8 @@
|
|||||||
.equ VALUE_ID_SGP30_TVOC = 0x09
|
.equ VALUE_ID_SGP30_TVOC = 0x09
|
||||||
.equ VALUE_ID_SGP30_CO2 = 0x0a
|
.equ VALUE_ID_SGP30_CO2 = 0x0a
|
||||||
|
|
||||||
|
.equ VALUE_ID_BRIGHTNESS = 0x0b
|
||||||
|
|
||||||
;.equ VALUE_ID_REED_CONF = 0x81
|
;.equ VALUE_ID_REED_CONF = 0x81
|
||||||
|
|
||||||
.equ VALUE_ID_DEBUG = 0x7f
|
.equ VALUE_ID_DEBUG = 0x7f
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
; AtTiny84
|
; AtTiny84
|
||||||
; --------
|
; --------
|
||||||
; VCC 1 14 GND
|
; VCC 1 14 GND
|
||||||
; PB0 2 13 PA0
|
; PB0 2 13 PA0 Brightness
|
||||||
; PB1 3 12 PA1 COM-DATA
|
; PB1 3 12 PA1 COM-DATA
|
||||||
; /RESET PB3 4 11 PA2
|
; /RESET PB3 4 11 PA2
|
||||||
; PB2 5 10 PA3 LED
|
; PB2 5 10 PA3 LED
|
||||||
@@ -96,3 +96,4 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
valsched
|
valsched
|
||||||
xram
|
xram
|
||||||
heap
|
heap
|
||||||
|
brightness
|
||||||
</subdirs>
|
</subdirs>
|
||||||
|
|
||||||
</gwbuild>
|
</gwbuild>
|
||||||
|
|||||||
12
avr/modules/brightness/0BUILD
Normal file
12
avr/modules/brightness/0BUILD
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml?>
|
||||||
|
|
||||||
|
<gwbuild>
|
||||||
|
|
||||||
|
<extradist>
|
||||||
|
main.asm
|
||||||
|
send.asm
|
||||||
|
</extradist>
|
||||||
|
|
||||||
|
</gwbuild>
|
||||||
|
|
||||||
|
|
||||||
130
avr/modules/brightness/main.asm
Normal file
130
avr/modules/brightness/main.asm
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; 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. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.equ BRIGHTNESS_INTERVAL = 97
|
||||||
|
|
||||||
|
.equ BRIGHTNESS_FLAGS_VALID_BIT = 7
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; data
|
||||||
|
|
||||||
|
.dseg
|
||||||
|
|
||||||
|
brightnessDataBegin:
|
||||||
|
brightnessTimer: .byte 1
|
||||||
|
brightnessFlags: .byte 1
|
||||||
|
brightnessLastValue: .byte 1
|
||||||
|
brightnessDataEnd:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ***************************************************************************
|
||||||
|
; code
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Brightness_Init
|
||||||
|
;
|
||||||
|
; Init module.
|
||||||
|
;
|
||||||
|
; @return CFLAG always set
|
||||||
|
|
||||||
|
Brightness_Init:
|
||||||
|
; preset SRAM data area
|
||||||
|
ldi xh, HIGH(brightnessDataBegin)
|
||||||
|
ldi xl, LOW(brightnessDataBegin)
|
||||||
|
clr r16
|
||||||
|
ldi r17, (brightnessDataEnd-brightnessDataBegin)
|
||||||
|
rcall Utils_FillSram
|
||||||
|
|
||||||
|
; setup pins
|
||||||
|
cbi BRIGHTNESS_ADC_PORT, BRIGHTNESS_ADC_PIN ; disable internal pullup for ADC
|
||||||
|
cbi BRIGHTNESS_ADC_DDR, BRIGHTNESS_ADC_PIN ; set ADC port as input
|
||||||
|
|
||||||
|
ldi r16, BRIGHTNESS_ADC_MUX ; select input pin, use Vcc as reference voltage
|
||||||
|
out ADMUX, r16
|
||||||
|
ldi r16, (1 << ADLAR)
|
||||||
|
out ADCSRB, r16
|
||||||
|
ldi r16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0) ; enable, prescaler 8
|
||||||
|
out ADCSRA, r16
|
||||||
|
|
||||||
|
ldi r16, BRIGHTNESS_INTERVAL
|
||||||
|
sts brightnessTimer, r16
|
||||||
|
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Brightness_Fini:
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Brightness_Every100ms @global
|
||||||
|
;
|
||||||
|
|
||||||
|
Brightness_Every100ms:
|
||||||
|
lds r16, brightnessTimer
|
||||||
|
dec r16
|
||||||
|
breq Brightness_Every100ms_readValue
|
||||||
|
sts brightnessTimer, r16
|
||||||
|
cpi r16, 1
|
||||||
|
breq Brightness_Every100ms_startMeasure
|
||||||
|
ret
|
||||||
|
Brightness_Every100ms_startMeasure:
|
||||||
|
sbi ADCSRA, ADSC ; start conversion
|
||||||
|
ret
|
||||||
|
Brightness_Every100ms_readValue:
|
||||||
|
sbic ADCSRA, ADSC
|
||||||
|
ret ; return if bit still set, leave brightnessTimer at "1"
|
||||||
|
; conversion complete, read value
|
||||||
|
ldi r16, BRIGHTNESS_INTERVAL ; restart timer
|
||||||
|
sts brightnessTimer, r16
|
||||||
|
in r16, ADCH ; read value from ADC
|
||||||
|
sts brightnessLastValue, r16
|
||||||
|
; convert to 1/0
|
||||||
|
lds r17, brightnessFlags
|
||||||
|
sbr r17, (1<<BRIGHTNESS_FLAGS_VALID_BIT) ; set valid bit
|
||||||
|
sts brightnessFlags, r17
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Brightness_GetValue @global
|
||||||
|
;
|
||||||
|
; @return CFLAG set if there is a value, cleared otherwise (standard api)
|
||||||
|
; @return R16 value
|
||||||
|
; @clobbers R16
|
||||||
|
|
||||||
|
Brightness_GetValue:
|
||||||
|
lds r16, brightnessFlags
|
||||||
|
sbrs r16, BRIGHTNESS_FLAGS_VALID_BIT
|
||||||
|
rjmp Brightness_GetValue_retNc
|
||||||
|
lds r16, brightnessLastValue
|
||||||
|
sec
|
||||||
|
ret
|
||||||
|
Brightness_GetValue_retNc:
|
||||||
|
clc
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
31
avr/modules/brightness/send.asm
Normal file
31
avr/modules/brightness/send.asm
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
; ***************************************************************************
|
||||||
|
; 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. *
|
||||||
|
; ***************************************************************************
|
||||||
|
|
||||||
|
.cseg
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine Brightness_Send
|
||||||
|
|
||||||
|
Brightness_Send:
|
||||||
|
rcall Brightness_GetValue
|
||||||
|
brcc Brightness_Send_end
|
||||||
|
mov r18, r16
|
||||||
|
clr r19
|
||||||
|
ldi r20, 1
|
||||||
|
clr r21
|
||||||
|
ldi r17, VALUE_ID_BRIGHTNESS ; VALUE ID
|
||||||
|
ldi r22, AQHOME_VALUETYPE_LIGHT ; VALUE TYPE
|
||||||
|
rcall Main_SendValueReport
|
||||||
|
Brightness_Send_end:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -11,5 +11,5 @@
|
|||||||
|
|
||||||
.equ FIRMWARE_VERSION_MAJOR = 1
|
.equ FIRMWARE_VERSION_MAJOR = 1
|
||||||
.equ FIRMWARE_VERSION_MINOR = 0
|
.equ FIRMWARE_VERSION_MINOR = 0
|
||||||
.equ FIRMWARE_VERSION_PATCHLEVEL = 5
|
.equ FIRMWARE_VERSION_PATCHLEVEL = 6
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user