convert raw reading from GPIO39 to voltage would result in crash

erik2727
Posts: 8
Joined: Fri Apr 12, 2019 2:26 pm

convert raw reading from GPIO39 to voltage would result in crash

Postby erik2727 » Fri Apr 12, 2019 2:39 pm

<r>I could not understanding why ESP-IDF voltage calculation if apply to convert the raw reading from GPIO39 would result in crash
<br/>
uint32_t voltage = esp_adc_cal_raw_to_voltage(read_raw, adc_chars);<br/>
<br/>
Below is the simple source code<br/>
<br/>

Code: Untitled.c Select all

#include <stdio.h><br/>
#include <stdlib.h><br/>
#include "freertos/FreeRTOS.h"<br/>
#include "freertos/task.h"<br/>
#include "freertos/queue.h"<br/>
#include "driver/gpio.h"<br/>
#include "driver/adc.h"<br/>
#include "driver/dac.h"<br/>
#include "esp_system.h"<br/>
#include "esp_adc_cal.h"<br/>
#define BLINK_GPIO 2
<br/>
<br/>
static void Read_GPIO39() {<br/>
int read_raw = 0;<br/>
adc1_config_width(ADC_WIDTH_BIT_12);<br/>
adc1_config_channel_atten(ADC1_CHANNEL_3, ADC_ATTEN_DB_11);<br/>
read_raw=adc1_get_raw(ADC1_CHANNEL_3);<br/>
**//uint32_t voltage = esp_adc_cal_raw_to_voltage(read_raw, adc_chars);**<br/>
printf("Intensity : %d\n", read_raw);<br/>
<br/>
//printf("Voltage: %d\n", voltage);<br/>
gpio_pad_select_gpio(BLINK_GPIO);<br/>
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);<br/>
gpio_set_level(BLINK_GPIO, 1);<br/>
}<br/>
<br/>
<br/>
void app_main() {<br/>
ESP_ERROR_CHECK(nvs_flash_init());<br/>
// initialise_wifi();<br/>
while (1) {<br/>
Read_GPIO39();<br/>
<br/>
vTaskDelay(3000 / portTICK_PERIOD_MS);<br/>
gpio_set_level(BLINK_GPIO, 0);<br/>
}<br/>
}

Sprite
Espressif staff
Espressif staff
Posts: 10596
Joined: Thu Nov 26, 2015 4:08 am

Re: convert raw reading from GPIO39 to voltage would result in crash

Postby Sprite » Mon Apr 15, 2019 3:34 am

What is adc_chars? How did you define it?

erik2727
Posts: 8
Joined: Fri Apr 12, 2019 2:26 pm

Re: convert raw reading from GPIO39 to voltage would result in crash

Postby erik2727 » Mon Apr 15, 2019 11:40 am

with below statement , 7% variance is observed. I have doubt on the atten not sure should this be ADC_ATTEN_DB_11 or some others value for GPIO39 , voltage reading is very unstable on genuine espressif dev Wrover B development board


static const adc_atten_t atten = ADC_ATTEN_DB_11;
static const adc_unit_t unit = ADC_UNIT_1;
#define DEFAULT_VREF 1100
adc_chars = calloc(1, sizeof(esp_adc_cal_characteristics_t));

esp_adc_cal_characterize(unit, atten, ADC_WIDTH_BIT_12, DEFAULT_VREF,adc_chars);

Who is online

Users browsing this forum: Qwantbot and 6 guests