device_on(), device_off(), chaned max temperature to 105°C even though max display temp is still at 80°C

master
Paul Goeser 13 years ago
parent 5468ddb2f1
commit 5c5e894a9a

@ -19,7 +19,7 @@
#define LED_RED_TEMP 800 #define LED_RED_TEMP 800
#define TARGET_TEMP_MIN 300 #define TARGET_TEMP_MIN 300
#define TARGET_TEMP_MAX 1520 #define TARGET_TEMP_MAX 1050
uint8_t setting_timeout = 0; uint8_t setting_timeout = 0;
@ -109,16 +109,22 @@ ISR(PCINT0_vect)
{ {
dev_state = !dev_state; dev_state = !dev_state;
toggle_timeout = TOGGLE_TIMEOUT; toggle_timeout = TOGGLE_TIMEOUT;
if(dev_state) {
device_on();
} else {
device_off();
}
} }
int8_t change = state_change[((input_state & 3) << 2) | (new_state & 3)]; int8_t change = state_change[((input_state & 3) << 2) | (new_state & 3)];
if(change) if(change)
{ {
target += change * 6;//0.6K * 4 per step 10; // 1 celsius per step target += change * 6;//0.6K * 4 per step 10; // 1 celsius per step
//if(target < TARGET_TEMP_MIN) {target = TARGET_TEMP_MIN;} if(target < TARGET_TEMP_MIN) {target = TARGET_TEMP_MIN;}
//else if(target > TARGET_TEMP_MAX) {target = TARGET_TEMP_MAX;} else if(target > TARGET_TEMP_MAX) {target = TARGET_TEMP_MAX;}
if(target < LED_GREEN_TEMP) {target = LED_GREEN_TEMP;} //if(target < LED_GREEN_TEMP) {target = LED_GREEN_TEMP;}
else if(target > LED_RED_TEMP) {target = LED_RED_TEMP;} //else if(target > LED_RED_TEMP) {target = LED_RED_TEMP;}
setting_timeout = TIMEOUT; setting_timeout = TIMEOUT;
} }
@ -210,10 +216,6 @@ 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);
@ -228,13 +230,28 @@ inline void led_set(uint16_t value)
inline void led_off(void) inline void led_off(void)
{ {
led_is_on = 0;
TCCR0B = 0; // stop pwm
TCCR0A = 0; // disconnect outputs;
// OCR0A = 0; // OCR0A = 0;
// OCR0B = 255; // OCR0B = 255;
} }
inline void device_off(void)
{
TCCR0B = 0; // stop pwm
TCCR0A = 0; // disconnect outputs;
ADCSRA &= ~(1<<ADEN); // disable adc
heat_power = 0; // turn off heating
}
inline void device_on(void)
{
led_init();
ADCSRA |= (1<<ADEN); // enable adc
ADCSRA |= (1<<ADSC); // start a conversion to be sure
}
inline void adc_init(void) inline void adc_init(void)
{ {
ADMUX = (1 << REFS1) | (TEMP_PIN << MUX0);/* Vref = 1.1, pin selection */ ADMUX = (1 << REFS1) | (TEMP_PIN << MUX0);/* Vref = 1.1, pin selection */
@ -275,6 +292,8 @@ int main(void)
led_init(); led_init();
sei(); sei();
device_off(); // initial state
for(;;) for(;;)
{ {
if(ADCSRA & (1 << ADIF)) if(ADCSRA & (1 << ADIF))
@ -303,7 +322,8 @@ int main(void)
} }
} }
if(!dev_state) {led_off();} //if(!dev_state) {led_off();}
// now done in interrupt
else if(setting_timeout) {led_set(target);} else if(setting_timeout) {led_set(target);}
else {led_set(temperature);} else {led_set(temperature);}
@ -326,6 +346,7 @@ int main(void)
if(!dev_state) { if(!dev_state) {
set_sleep_mode(SLEEP_MODE_IDLE); set_sleep_mode(SLEEP_MODE_IDLE);
sleep_mode(); sleep_mode();
// timer1 interrupt will wake us again, as will PCINT
} }
} }

Loading…
Cancel
Save