device sleep (doesn't help); led off

master
Paul Goeser 13 years ago
parent a635df3b45
commit 5468ddb2f1

@ -8,11 +8,14 @@ done - rasten verändern (2.5°C)
done - temperaturmaximum evtl reduzieren (80°C?) oderauchnicht done - temperaturmaximum evtl reduzieren (80°C?) oderauchnicht
done - beide temperaturmaxima gleich done - beide temperaturmaxima gleich
- kabel intern besser verwahren - kabel intern besser verwahren
- led beim ausschalten tatsächlich aus done - led beim ausschalten tatsächlich aus
- avr sleeping wenn ausgeschaltet done - avr sleeping wenn ausgeschaltet
- schaltung braucht 0.6W am Netzteil
- jetzt nur noch 0.3-0.4W
"Langzeittests" "Langzeittests"
- maximale temperatur - maximale temperatur
- ca. 105°C an der Oberfläche. Chips warsch bei 125°C oderso. 20W am Netzteil.
- schmelzen kabel? - schmelzen kabel?
- machen die schrauben dem tisch probleme? - machen die schrauben dem tisch probleme?
- Auswirkungen auf Tee - Auswirkungen auf Tee

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

Loading…
Cancel
Save