瀏覽代碼

Add refresh of unused digits.

Vladimir N. Shilov 3 年之前
父節點
當前提交
a75ebeb219
共有 1 個文件被更改,包括 83 次插入0 次删除
  1. 83 0
      src/main.c

+ 83 - 0
src/main.c

@@ -95,6 +95,7 @@ static void valIncrease(uint8_t * val, uint8_t max);
 static void valDecrease(uint8_t * val, uint8_t max);
 static void blink(void);
 static void setSummerWinterTime(void);
+static void tubeRefresh(void);
 #ifdef LAMP_TEST
 static void lampTest(void);
 #endif // LAMP_TEST
@@ -331,6 +332,84 @@ static void btnProcess(void) {
   } /* end FOR */
 }
 
+static void tubeRefresh(void) {
+  static int cnt = 0;
+
+  /* We start ourselves every 125 ms to update 8 digits in a second. */
+  if (cnt == 0) {
+    RTOS_SetTask(tubeRefresh, 125, 125);
+  }
+
+  switch (cnt) {
+  case 0:
+    cnt = 1;
+    Digit[0] = 0;
+    Digit[2] = 6;
+    Digit[4] = 6;
+    break;
+
+  case 1:
+    cnt = 2;
+    Digit[0] = 3;
+    /* Digit[2] = 6;
+    Digit[4] = 6; */
+    break;
+
+  case 2:
+    cnt = 3;
+    Digit[0] = 4;
+    Digit[2] = 7;
+    Digit[4] = 7;
+    break;
+
+  case 3:
+    cnt = 4;
+    Digit[0] = 5;
+    /* Digit[2] = 7;
+    Digit[4] = 7; */
+    break;
+
+  case 4:
+    cnt = 5;
+    Digit[0] = 6;
+    Digit[2] = 8;
+    Digit[4] = 8;
+    break;
+
+  case 5:
+    cnt = 6;
+    Digit[0] = 7;
+    /* Digit[2] = 8;
+    Digit[4] = 8; */
+    break;
+
+  case 6:
+    cnt = 7;
+    Digit[0] = 8;
+    Digit[2] = 9;
+    Digit[4] = 9;
+    break;
+
+  case 7:
+    /* cnt = 8; */
+    cnt = 0;
+    Digit[0] = 9;
+    /* Digit[2] = 9;
+    Digit[4] = 9; */
+    break;
+
+  default:
+    cnt = 0;
+  }
+
+  if (cnt == 0) {
+    /* Digit[0] = RTC.Hr >> 4;
+    Digit[2] = RTC.Min >> 4;
+    Digit[4] = RTC.Sec >> 4; */
+    RTOS_DeleteTask(tubeRefresh);
+  }
+}
+
 void showTime(void) {
 /*
   Digit[0] = DIGIT_BLANK;
@@ -353,6 +432,10 @@ void showTime(void) {
   Digit[3] = RTC.Min & 0x0F;
   Digit[4] = RTC.Sec >> 4;
   Digit[5] = RTC.Sec & 0x0F;
+
+  if (RTC.Sec == 0x0) {
+    tubeRefresh();
+  }
 }
 
 void showWDM(void) {