]> mj.ucw.cz Git - home-hw.git/blobdiff - ssr/Src/main.c
Rainbow case: TODO
[home-hw.git] / ssr / Src / main.c
index e056fdc6c5585013bdb99d98f666f99ef47cbcbd..490bcf171669946241f292df4ce184125357c7ea 100644 (file)
@@ -56,7 +56,7 @@ PCD_HandleTypeDef hpcd_USB_FS;
 /* USER CODE BEGIN PV */
 /* Private variables ---------------------------------------------------------*/
 struct usb usb;
-volatile byte led_trigger;
+volatile byte timer_ticked;
 
 /* USER CODE END PV */
 
@@ -109,6 +109,11 @@ static void process_packet(void)
          put_u32_be(tx_packet, 0);
        }
       break;
+
+    case 2:
+      put_u32_be(tx_packet, 0);
+      put_u32_be(tx_packet+4, ds_current_temp);
+      break;
     }
 
   debug_printf(">> status %08x\n", get_u32_be(tx_packet));
@@ -170,7 +175,7 @@ int main(void)
   LL_TIM_EnableIT_UPDATE(TIM4);
   LL_TIM_GenerateEvent_UPDATE(TIM4);
 
-  ds_test();
+  ds_init();
 
   /* USER CODE END 2 */
 
@@ -178,15 +183,16 @@ int main(void)
   /* USER CODE BEGIN WHILE */
   while (1)
   {
-    if (led_trigger)
+    if (timer_ticked)
       {
-       led_trigger = 0;
+       timer_ticked = 0;
        static byte led_state;
        if (led_state)
          LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);
        else
          LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);
        led_state ^= 1;
+       ds_step();
       }
 
     if (rx_packet_state == 1 && !tx_packet_state)
@@ -494,6 +500,10 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
   LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
+  // XXX: By some magic, the above initialization does not always work,
+  // so we repeat it here.
+  LL_GPIO_SetOutputPin(GPIOB, SSR3_Pin|SSR4_Pin|SSR1_Pin|SSR2_Pin);
+
 }
 
 /* USER CODE BEGIN 4 */