Bugfix for switch detection.
[kokare.git] / kokare.c
index 6635747..61e5213 100644 (file)
--- a/kokare.c
+++ b/kokare.c
@@ -2,14 +2,14 @@
 #include <avr/interrupt.h>
 #include <inttypes.h>
 
-#define SEGA 128
-#define SEGB 64
-#define SEGC 4
-#define SEGD 16
-#define SEGE 32
-#define SEGF 2
-#define SEGG 1
-#define SEGP 8
+#define SEGA 4
+#define SEGB 2
+#define SEGC 1
+#define SEGD 32
+#define SEGE 64
+#define SEGF 16
+#define SEGG 8
+#define SEGP 128
 
 uint8_t font[16] = {
     SEGA | SEGB | SEGC | SEGD | SEGE | SEGF,
@@ -293,6 +293,17 @@ int main(void)
 #endif
 #if 0
        /*
+        * ZVD debug
+        */
+       if(zok) {
+           if(++cur > 99)
+               cur = 0;
+           display(cur);
+           zok = 0;
+       }
+#endif
+#if 0
+       /*
          Phony Triac control
         */
        if(pval != 0) {
@@ -309,6 +320,10 @@ int main(void)
            tron = !tron;
            sstate = 0;
        }
+       if(tron)
+           dsp[1] |= SEGP;
+       else
+           dsp[1] &= ~SEGP;
 #endif
 #if 0
        /*
@@ -330,6 +345,8 @@ int main(void)
        } else {
            display(cur);
        }
+       if(PINB & 4)
+           dsp[1] |= SEGP;
 #endif
     }
 }
@@ -363,22 +380,22 @@ ISR(SIG_OVERFLOW1)
 
 ISR(SIG_PIN_CHANGE0)
 {
-    if((sstate == 0) & ((PINB & 1) == 0)) {
+    if((sstate == 0) && !(PINB & 4)) {
        stime = oticks;
        sstate = 1;
     }
-    if((sstate == 1) & ((PINB & 1) == 1)) {
+    if((sstate == 1) && (PINB & 4)) {
        stime = oticks - stime;
        sstate = 2;
     }
     if(pstate == 0) {
        if((PINB & 2) == 0) {
            pstate = 1;
-       } else if((PINB & 4) == 0) {
+       } else if((PINB & 1) == 0) {
            pstate = 2;
        }
     } else if(pstate == 1) {
-       if((PINB & 4) == 0) {
+       if((PINB & 1) == 0) {
            pval++;
            pstate = 3;
        } else {
@@ -392,7 +409,7 @@ ISR(SIG_PIN_CHANGE0)
            pstate = 0;
        }
     } else {
-       if((PINB & 2) && (PINB & 4))
+       if((PINB & 2) && (PINB & 1))
            pstate = 0;
     }
 }