|
|
|
|
@ -2,6 +2,7 @@
|
|
|
|
|
#include <util/delay.h>
|
|
|
|
|
#include <avr/interrupt.h>
|
|
|
|
|
#include <avr/pgmspace.h>
|
|
|
|
|
#include <avr/sleep.h>
|
|
|
|
|
|
|
|
|
|
#define TEMP_PIN 0
|
|
|
|
|
#define IMPULS0_PIN 1
|
|
|
|
|
@ -36,6 +37,7 @@ uint8_t heat_power = 0; // requested heating power; 0..255
|
|
|
|
|
|
|
|
|
|
uint8_t input_state = 0;
|
|
|
|
|
uint8_t dev_state = 0; // whether the device is on or off
|
|
|
|
|
uint8_t led_is_on = 0; // whether led is on or off; used to start/stop timer 0
|
|
|
|
|
|
|
|
|
|
#define TOGGLE_TIMEOUT 5
|
|
|
|
|
#define TEN_SECONDS 256
|
|
|
|
|
@ -208,6 +210,10 @@ inline void led_init(void)
|
|
|
|
|
|
|
|
|
|
inline void led_set(uint16_t value)
|
|
|
|
|
{
|
|
|
|
|
if(!led_is_on){
|
|
|
|
|
led_init();
|
|
|
|
|
led_is_on = 1;
|
|
|
|
|
}
|
|
|
|
|
uint8_t pwmval;
|
|
|
|
|
if (LED_GREEN_TEMP <= value && value < LED_RED_TEMP) {
|
|
|
|
|
pwmval = ((uint32_t) (value-LED_GREEN_TEMP) * 255)/(LED_RED_TEMP-LED_GREEN_TEMP);
|
|
|
|
|
@ -222,8 +228,11 @@ inline void led_set(uint16_t value)
|
|
|
|
|
|
|
|
|
|
inline void led_off(void)
|
|
|
|
|
{
|
|
|
|
|
OCR0A = 0;
|
|
|
|
|
OCR0B = 255;
|
|
|
|
|
led_is_on = 0;
|
|
|
|
|
TCCR0B = 0; // stop pwm
|
|
|
|
|
TCCR0A = 0; // disconnect outputs;
|
|
|
|
|
// OCR0A = 0;
|
|
|
|
|
// OCR0B = 255;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void adc_init(void)
|
|
|
|
|
@ -314,6 +323,10 @@ int main(void)
|
|
|
|
|
|
|
|
|
|
eeprom_write = 0;
|
|
|
|
|
}
|
|
|
|
|
if(!dev_state) {
|
|
|
|
|
set_sleep_mode(SLEEP_MODE_IDLE);
|
|
|
|
|
sleep_mode();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|