Explorar o código

Display OK. I2C & TIM1 - not.

Vladimir N. Shilov %!s(int64=2) %!d(string=hai) anos
pai
achega
3e2b9d9187
Modificáronse 2 ficheiros con 27 adicións e 16 borrados
  1. 11 10
      src/board.c
  2. 16 6
      src/main.c

+ 11 - 10
src/board.c

@@ -403,6 +403,16 @@ void display_WriteData(const uint8_t * data, uint8_t addr, uint8_t len) {
   }
 
 #ifdef FRAMEBUFFER_ROTATE
+  /* Copy given data to framebuffer */
+  int i, a;
+  for (i=0; i<len; i++) {
+    a = addr + i;
+    display_Buffer[a] = data[i];
+  }
+  //display_WriteBuffer();
+
+#else
+  // without dma - pool mode
   int i;
 
   GPIO_SPI_SW();
@@ -421,16 +431,7 @@ void display_WriteData(const uint8_t * data, uint8_t addr, uint8_t len) {
   while ((SPI1->SR & SPI_SR_BSY) != 0) { __NOP(); }
   HT1632C_CS_OFF;
 
-  /* Copy given data to framebuffer */
-  /*
-  int i, a;
-  for (i=0; i<len; i++) {
-    a = addr + i;
-    display_Buffer[a] = data[i];
-  }
-  //display_WriteBuffer();
-  */
-#else
+  // with dam
   uint16_t a = 0x280 | addr;
 
   /* Wait for SPI */

+ 16 - 6
src/main.c

@@ -21,6 +21,7 @@ static rtc_t Clock;
 
 /* Private function prototypes -----------------------------------------------*/
 static void Show_MMSS(void);
+static void dots_Off(void);
 
 /* Private functions ---------------------------------------------------------*/
 
@@ -38,16 +39,15 @@ int main(void)
   RTOS_Init();
 //  RTOS_SetTask(Show_MMSS, 1000, 1000);
   buzer_On();
-  tdelay_ms(500);
-  buzer_Off();
+  //tdelay_ms(500);
+  //buzer_Off();
 
   /* Real-Time clock */
   RTC_Init();
   RTC_ReadTime(&Clock);
 
   display_Init();
-  display_Buffer[11] = 0x36;
-  display_Buffer[12] = 0x36;
+  Show_MMSS();
 
   /* Infinite loop */
   while (1)
@@ -66,20 +66,30 @@ int main(void)
 
 static void Show_MMSS(void) {
   uint8_t t;
+  // dots on
+  display_WriteData(&digit_4x7[10][0], 10, 4);
+  RTOS_SetTask(dots_Off, 500, 0);
 
   t = Clock.Min >> 4;
   display_WriteData(&digit_4x7[t][0], 1, 4);
 
-  t = Clock.Min | 0xf;
+  t = Clock.Min & 0xf;
   display_WriteData(&digit_4x7[t][0], 6, 4);
 
   t = Clock.Sec >> 4;
   display_WriteData(&digit_4x7[t][0], 14, 4);
 
-  t = Clock.Sec | 0xf;
+  t = Clock.Sec & 0xf;
   display_WriteData(&digit_4x7[t][0], 19, 4);
+
+  display_WriteBuffer();
 }
 
+static void dots_Off(void) {
+  display_Buffer[11] = 0x0;
+  display_Buffer[12] = 0x0;
+  display_WriteBuffer();
+}
 /******************************************************************************/
 /*            Cortex-M0 Processor Exceptions Handlers                         */
 /******************************************************************************/