/* Private variables ---------------------------------------------------------*/
PCD_HandleTypeDef hpcd_USB_FS;
-volatile byte led_trigger;
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
struct usb usb;
+volatile byte timer_ticked;
/* USER CODE END PV */
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));
LL_TIM_EnableIT_UPDATE(TIM4);
LL_TIM_GenerateEvent_UPDATE(TIM4);
+ ds_init();
+
/* USER CODE END 2 */
/* Infinite loop */
/* 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)
GPIO_InitStruct.Pin = THERMO_Pin;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
- GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
LL_GPIO_Init(THERMO_GPIO_Port, &GPIO_InitStruct);
}
*/
static void MX_DMA_Init(void)
{
+ /* Init with LL driver */
/* DMA controller clock enable */
- __HAL_RCC_DMA1_CLK_ENABLE();
+ LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1);
/* DMA interrupt init */
/* DMA1_Channel6_IRQn interrupt configuration */
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 */