40 lines
661 B
C
40 lines
661 B
C
#include <stdint.h>
|
|
#include <avr/sleep.h>
|
|
#include <avr/wdt.h>
|
|
#include "config.h"
|
|
#include "moisture.h"
|
|
|
|
ISR(WDT_vect) {
|
|
readSensors = true;
|
|
}
|
|
|
|
void watchdogs(void) {
|
|
cli();
|
|
MCUSR &= ~(1 << WDRF);
|
|
WDTCSR |= (1 << WDCE) | (1 << WDE);
|
|
WDTCSR = (1 << WDIE) | (1 << WDP3) | (1 << WDP0);
|
|
sei();
|
|
}
|
|
|
|
void enterSleep(void) {
|
|
set_sleep_mode(SLEEP_MODE_IDLE);
|
|
sleep_enable();
|
|
sleep_cpu();
|
|
sleep_disable();
|
|
}
|
|
|
|
void setup(void) {
|
|
Serial.begin(9600);
|
|
initMoistureSensor();
|
|
watchdogs();
|
|
}
|
|
|
|
void loop(void) {
|
|
triggerSensorRead();
|
|
int16_t result = readMoisture();
|
|
if (result != -1) {
|
|
|
|
}
|
|
enterSleep();
|
|
}
|