parent
1d2d1ce6bc
commit
2abdd7be0c
|
|
@ -1,10 +1,14 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "esp_attr.h"
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_adc/adc_cali.h"
|
#include "esp_adc/adc_cali.h"
|
||||||
#include "esp_adc/adc_cali_scheme.h"
|
#include "esp_adc/adc_cali_scheme.h"
|
||||||
#include "esp_adc/adc_continuous.h"
|
#include "esp_adc/adc_continuous.h"
|
||||||
|
#include "freertos/FreeRTOS.h"
|
||||||
|
#include "freertos/task.h"
|
||||||
|
#include "freertos/portmacro.h"
|
||||||
#include "hal/adc_types.h"
|
#include "hal/adc_types.h"
|
||||||
|
|
||||||
/* ADC input pins */
|
/* ADC input pins */
|
||||||
|
|
@ -19,10 +23,20 @@ static adc_channel_t channel[4] = {ADC_CHANNEL_3, ADC_CHANNEL_5, ADC_CHANNEL_8,
|
||||||
/* ADC handles */
|
/* ADC handles */
|
||||||
static adc_continuous_handle_t adc_handle;
|
static adc_continuous_handle_t adc_handle;
|
||||||
static adc_cali_handle_t adc_cali_handle;
|
static adc_cali_handle_t adc_cali_handle;
|
||||||
|
static TaskHandle_t adc_task_handle;
|
||||||
|
|
||||||
static const char *TAG = "EERG";
|
static const char *TAG = "EERG";
|
||||||
|
|
||||||
|
|
||||||
|
/* ADC conversion finished callback */
|
||||||
|
static bool IRAM_ATTR adc_conv_cb(adc_continuous_handle_t handle, const adc_continuous_evt_data_t *edata, void *user_data)
|
||||||
|
{
|
||||||
|
BaseType_t mustYield = pdFALSE;
|
||||||
|
/* Send notification to handler task */
|
||||||
|
vTaskNotifyGiveFromISR(adc_task_handle, &mustYield);
|
||||||
|
return (mustYield == pdTRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/* Deinitializes ADC handles */
|
/* Deinitializes ADC handles */
|
||||||
static void adc_cleanup(void)
|
static void adc_cleanup(void)
|
||||||
{
|
{
|
||||||
|
|
@ -75,6 +89,12 @@ static void adc_cont_init(void)
|
||||||
}
|
}
|
||||||
adc_config.adc_pattern = adc_pattern;
|
adc_config.adc_pattern = adc_pattern;
|
||||||
ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config));
|
ESP_ERROR_CHECK(adc_continuous_config(adc_handle, & adc_config));
|
||||||
|
|
||||||
|
/* Configure callbacks */
|
||||||
|
adc_continuous_evt_cbs_t cbs = {
|
||||||
|
.on_conv_done = adc_conv_cb
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(adc_continuous_register_event_callbacks(adc_handle, &cbs, NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
|
|
@ -85,6 +105,7 @@ void app_main(void)
|
||||||
/* Initialize continuous driver */
|
/* Initialize continuous driver */
|
||||||
adc_cont_init();
|
adc_cont_init();
|
||||||
/* Start the continuous driver */
|
/* Start the continuous driver */
|
||||||
|
adc_task_handle = xTaskGetCurrentTaskHandle();
|
||||||
ESP_ERROR_CHECK(adc_continuous_start(adc_handle));
|
ESP_ERROR_CHECK(adc_continuous_start(adc_handle));
|
||||||
|
|
||||||
/* Cleanup ADC */
|
/* Cleanup ADC */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue