#include <avr/io.h>
#include <avr/interrupt.h>
+#include <avr/eeprom.h>
#include <inttypes.h>
#include <math.h>
* t = B / l
* Note, temperature is in Kelvin
*/
-#define C 9.792934
+#define C 9.361168
#define B 4020.0
if(state == 0) {
if((mnow - last > 200000) && tavgok) {
int state, cur, run, rstate, delta;
unsigned long utime;
- state = 0;
- cur = 100;
+ state = 1;
+ cur = eeprom_read_byte(0);
+ if(cur < 0)
+ cur = 0;
+ if(cur > 100)
+ cur = 100;
run = 0;
rstate = 0;
+ utime = getticks();
init();
sei();
- display(0, 0, 0);
+ if(cur < 100)
+ display(cur, 0, 0);
+ else
+ dsp[0] = dsp[1] = SEGG;
while(1) {
mnow = getticks();
cur = 0;
if(cur > 100)
cur = 100;
- if(cur < 100) {
- display(cur, 0, run);
- } else {
- dsp[0] = SEGG;
- dsp[1] = SEGG | (run?SEGP:0);
- }
utime = mnow;
}
- if(mnow - utime > 1000000)
+ if(mnow - utime > 2000000) {
state = 0;
+ eeprom_write_byte(0, cur);
+ }
if(sstate == 2) {
run = !run;
sstate = 0;
}
+ if(cur < 100) {
+ display(cur, 0, run);
+ } else {
+ dsp[0] = SEGG;
+ dsp[1] = SEGG | (run?SEGP:0);
+ }
} else if(state == 2) {
/* Display raw temp time reading */
if(ttimea < 20000) {
* ms. */
trdelay = 7;
} else {
- trdelay = 79 - (delta * 9);
+ trdelay = 75 - (delta * 5);
}
} else {
tron = 0;