diff --git a/Firmware/src/main.cpp b/Firmware/src/main.cpp index 9102e64..f645683 100644 --- a/Firmware/src/main.cpp +++ b/Firmware/src/main.cpp @@ -58,18 +58,33 @@ #endif // Create Sensor Class -#if defined HAS_BME280 || defined HAS_BME280_BRIGHTNESS +#if defined HAS_BME280 || defined HAS_BME280_BRIGHTNESS || defined HAS_BME280_ALARM #include BME280 sensor; #endif -#if defined HAS_SHT21 || defined HAS_SHT21_BRIGHTNESS +#if defined HAS_SHT21 || defined HAS_SHT21_BRIGHTNESS || defined HAS_SHT21_ALARM #include SHT21 sensor; #endif -#ifdef HAS_ALARM +#if defined HAS_ALARM || defined HAS_SHT21_ALARM || defined HAS_BME280_ALARM volatile boolean alarm = false; + + // Get the Interrupt Mask for the selected Alarm PIN + #if ALARM_PIN == PIN_A0 + #define ALARM_INT PCINT0 + #elif ALARM_PIN == PIN_A1 + #define ALARM_INT PCINT1 + #elif ALARM_PIN == PIN_A2 + #define ALARM_INT PCINT2HAS_BME280_ALARM + #elif ALARM_PIN == PIN_A3 + #define ALARM_INT PCINT3 + #elif ALARM_PIN == PIN_A7 + #define ALARM_INT PCINT7 + #elif ALARM_PIN == PIN_B1 + #define ALARM_INT PCINT9 + #endif #endif // Global Variable to Track Deep Sleep @@ -133,7 +148,7 @@ void sleep(uint16_t s) sleep_interval = 0; while (sleep_interval < s) { // in case of alarm, break loop and transmit immediatly - #ifdef HAS_ALARM + #if defined HAS_ALARM || defined HAS_SHT21_ALARM || defined HAS_BME280_ALARM if( alarm == true){ return; } @@ -154,13 +169,15 @@ ISR(WATCHDOG_vect) { WDTCSR = (1<