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

Loading…
Cancel
Save