move adc sampling to DMA TC interrupt
This commit is contained in:
+8
-2
@@ -92,6 +92,14 @@ void app_task_main(void *argument)
|
|||||||
oled_init();
|
oled_init();
|
||||||
fb_clear();
|
fb_clear();
|
||||||
|
|
||||||
|
// while(1) {
|
||||||
|
// LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||||
|
// vTaskDelay(pdMS_TO_TICKS(250));
|
||||||
|
// LL_IWDG_ReloadCounter(IWDG);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
bool old_pushed = app_knob_pushed();
|
bool old_pushed = app_knob_pushed();
|
||||||
|
|
||||||
@@ -141,8 +149,6 @@ void app_task_main(void *argument)
|
|||||||
|
|
||||||
uint32_t now = osKernelGetTickCount();
|
uint32_t now = osKernelGetTickCount();
|
||||||
if (any_change || (now - last_redraw > pdMS_TO_TICKS(500))) {
|
if (any_change || (now - last_redraw > pdMS_TO_TICKS(500))) {
|
||||||
PUTS("Cycle\r\n");
|
|
||||||
PRINTF("test printf\r\n");
|
|
||||||
last_redraw = now;
|
last_redraw = now;
|
||||||
redraw_display();
|
redraw_display();
|
||||||
any_change = false;
|
any_change = false;
|
||||||
|
|||||||
+2
-1
@@ -153,7 +153,7 @@ void app_analog_init()
|
|||||||
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, 4);
|
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, 4);
|
||||||
LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
|
LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1);
|
||||||
|
|
||||||
LL_ADC_EnableIT_EOS(ADC_TEMP);
|
LL_DMA_EnableIT_TC(DMA1, LL_DMA_CHANNEL_1);
|
||||||
|
|
||||||
LL_ADC_REG_StartConversionExtTrig(ADC_TEMP, LL_ADC_REG_TRIG_EXT_RISING);
|
LL_ADC_REG_StartConversionExtTrig(ADC_TEMP, LL_ADC_REG_TRIG_EXT_RISING);
|
||||||
LL_ADC_REG_StartConversionSWStart(ADC_TEMP);
|
LL_ADC_REG_StartConversionSWStart(ADC_TEMP);
|
||||||
@@ -241,6 +241,7 @@ float app_temp_read_soc()
|
|||||||
|
|
||||||
void app_temp_adc_eos()
|
void app_temp_adc_eos()
|
||||||
{
|
{
|
||||||
|
PUTCHAR('a');
|
||||||
// notify
|
// notify
|
||||||
memcpy((void *) &s_analog.adc_averagebuf[s_analog.averagebuf_ptr * 4], (const void *) adc_values, 4 * sizeof(uint16_t));
|
memcpy((void *) &s_analog.adc_averagebuf[s_analog.averagebuf_ptr * 4], (const void *) adc_values, 4 * sizeof(uint16_t));
|
||||||
s_analog.averagebuf_ptr = (s_analog.averagebuf_ptr + 1) % AVERAGEBUF_DEPTH;
|
s_analog.averagebuf_ptr = (s_analog.averagebuf_ptr + 1) % AVERAGEBUF_DEPTH;
|
||||||
|
|||||||
@@ -194,6 +194,11 @@ void DMA1_Channel1_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
|
/* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
|
||||||
|
|
||||||
|
if (LL_DMA_IsActiveFlag_TC1(DMA1)) {
|
||||||
|
app_temp_adc_eos();
|
||||||
|
LL_DMA_ClearFlag_TC1(DMA1);
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE END DMA1_Channel1_IRQn 0 */
|
/* USER CODE END DMA1_Channel1_IRQn 0 */
|
||||||
|
|
||||||
/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
|
/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
|
||||||
@@ -208,7 +213,7 @@ void ADC1_2_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
/* USER CODE BEGIN ADC1_2_IRQn 0 */
|
/* USER CODE BEGIN ADC1_2_IRQn 0 */
|
||||||
|
|
||||||
app_temp_adc_eos();
|
// app_temp_adc_eos();
|
||||||
|
|
||||||
// if (LL_ADC_IsActiveFlag_EOS(ADC_TEMP)) {
|
// if (LL_ADC_IsActiveFlag_EOS(ADC_TEMP)) {
|
||||||
// LL_ADC_ClearFlag_EOS(ADC_TEMP);
|
// LL_ADC_ClearFlag_EOS(ADC_TEMP);
|
||||||
|
|||||||
Reference in New Issue
Block a user