From: Fredrik Tolf Date: Thu, 21 Jun 2007 01:50:23 +0000 (+0000) Subject: Set all ISP pins to outputs. X-Git-Url: http://git.dolda2000.com/gitweb/?a=commitdiff_plain;h=c1346a558bc4f35bad1783c643ae08a81aa8ba1f;p=kokare.git Set all ISP pins to outputs. Initial work on real UI. --- diff --git a/kokare.c b/kokare.c index 3bc4c4b..6635747 100644 --- a/kokare.c +++ b/kokare.c @@ -49,6 +49,7 @@ char tlock = 0; unsigned long tstart; unsigned long ttime; unsigned long ttimea = 10000; +char tavgok = 0; /* Zero-cross detector*/ char zok = 0; unsigned long ztime; @@ -70,7 +71,7 @@ void init(void) * B3..5 = ISP * B6..7 = CLK */ - DDRB = 0x30; + DDRB = 0x38; PORTB = 0x07; PCMSK0 = 0x07; PCICR = 0x01; @@ -188,6 +189,7 @@ void calcavg(void) tlock = 2; ttimea = ((ttimea * 15) + ttime) >> 4; tlock = 0; + tavgok = 1; } } @@ -210,9 +212,11 @@ void triaccycle(void) int main(void) { - int cur; + int state, cur; + unsigned long utime; - cur = 0; + state = 0; + cur = 99; init(); sei(); display(0); @@ -224,6 +228,49 @@ int main(void) calcavg(); triaccycle(); +#if 1 + /* + * User interface + */ + if(state == 0) { + /* Display temperature */ + if(tavgok) { + tavgok = 0; + if(ttimea < 20000) { + display((ttimea / 100) % 100); + dsp[0] |= SEGP; + if(ttimea >= 10000) + dsp[1] |= SEGP; + } else { + display(ttimea / 1000); + } + } + if(pval != 0) { + state = 1; + utime = mnow; + } + } else if(state == 1) { + /* Triac control */ + if(pval != 0) { + cur += pval; + pval = 0; + if(cur < 0) + cur = 0; + if(cur > 99) + cur = 99; + display(cur); + trdelay = 10000 - ((unsigned short)cur * 100); + utime = mnow; + } + if(mnow - utime > 1000000) { + state = 0; + } + } + if(sstate == 2) { + tron = !tron; + sstate = 0; + } +#endif /* dsp[0] = bindisp((ttimea & 0xff00) >> 8); dsp[1] = bindisp(ttimea & 0x00ff); @@ -244,7 +291,7 @@ int main(void) display(ttimea / 1000); } #endif -#if 1 +#if 0 /* Phony Triac control */