avr: added initial module to handle reed contacts.
Detects and reports opening and closing of a window/door. Nexts step is to allow for external configuration (e.g. standard mode with one reed contact versus multi-contact mode to detect tilting of a window/door).
This commit is contained in:
@@ -68,6 +68,7 @@
|
||||
#define MODULES_SI7021
|
||||
#define MODULES_STATS
|
||||
;#define MODULES_CNY70
|
||||
#define MODULES_REED
|
||||
|
||||
|
||||
.set MODULES_MASK = 0
|
||||
@@ -95,6 +96,9 @@
|
||||
#ifdef MODULES_CNY70
|
||||
.set MODULES_MASK = MODULES_MASK | (1<<AQHOME_FW_MODULE_CNY70)
|
||||
#endif
|
||||
#ifdef MODULES_REED
|
||||
.set MODULES_MASK = MODULES_MASK | (1<<AQHOME_FW_MODULE_REED)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -108,6 +112,8 @@
|
||||
.equ VALUE_ID_HUM1 = 0x02
|
||||
|
||||
.equ VALUE_ID_ADC = 0x03
|
||||
.equ VALUE_ID_REED1 = 0x04
|
||||
.equ VALUE_ID_REED2 = 0x05
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
@@ -185,6 +191,28 @@
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Reed
|
||||
;
|
||||
|
||||
.equ REEDOUT_DDR = DDRA
|
||||
.equ REEDOUT_PORT = PORTA
|
||||
.equ REEDOUT_PIN = PINA
|
||||
.equ REEDOUT_PINNUM = PORTA0
|
||||
|
||||
.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
|
||||
|
||||
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code segment
|
||||
|
||||
@@ -270,6 +298,9 @@ firmwareStart: rjmp main
|
||||
#ifdef MODULES_CNY70
|
||||
.include "modules/cny70/main.asm"
|
||||
#endif
|
||||
#ifdef MODULES_REED
|
||||
.include "modules/reed/main.asm"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -292,7 +323,10 @@ sramTimerEnqueueValues: .byte 2
|
||||
sramTimerCny70SendAdc: .byte 2
|
||||
#endif
|
||||
#ifdef MODULES_LCD
|
||||
sramPeriodicalLcdMark: .byte 2
|
||||
sramPeriodicalLcdMark: .byte 2
|
||||
#endif
|
||||
#ifdef MODULES_REED
|
||||
sramTimerReedCheck: .byte 2
|
||||
#endif
|
||||
|
||||
|
||||
@@ -331,6 +365,9 @@ timerList:
|
||||
#endif
|
||||
#ifdef MODULES_CNY70
|
||||
.dw sramTimerCny70SendAdc, sendAdc, TIMER_FLAGS_IF_ADDR, 30 ; every 30s
|
||||
#endif
|
||||
#ifdef MODULES_REED
|
||||
.dw sramTimerReedCheck, REED_Timer, TIMER_FLAGS_IF_ADDR, 1 ; every 1s
|
||||
#endif
|
||||
.dw 0 ; end of list
|
||||
|
||||
@@ -419,6 +456,10 @@ onEvery100ms:
|
||||
rcall CNY70_Every100ms
|
||||
#endif
|
||||
|
||||
#ifdef MODULES_REED
|
||||
rcall REED_Every100ms
|
||||
#endif
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user