Reading potentiometer sensor value via an ADC HAL
Last updated
Was this helpful?
Last updated
Was this helpful?
This lab demonstrates the process of reading a potentiometer sensor value through an Analog-to-Digital Converter (ADC) using a Hardware Abstraction Layer (HAL) on a PSoC 6 microcontroller.
Computer
💻
ModusToolbox™ software v3.0 or later
CY8CKIT-062S2-43012 Infineon Board
Technical Report
Coding: Open the main.c file and add the following code to the main(void) function.
#include "cy_pdl.h"
#include "cyhal.h"
#include "cybsp.h"
#include "cy_retarget_io.h"
int main(void)
{
cy_rslt_t result;
cyhal_adc_t adc_obj;
cyhal_adc_channel_t adc_chan_0_obj;
/* Initialize the device and board peripherals */
result = cybsp_init() ;
if (result != CY_RSLT_SUCCESS)
{
CY_ASSERT(0);
}
__enable_irq();
/* Initialize retarget-io to use the debug UART port */
result = cy_retarget_io_init(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
CY_ASSERT(result == CY_RSLT_SUCCESS);
/* ADC conversion result. */
int adc_out;
/* Initialize ADC. The ADC block which can connect to pin 10[6] is selected */
result = cyhal_adc_init(&adc_obj, P10_6, NULL);
// ADC configuration structure
const cyhal_adc_config_t ADCconfig ={
.continuous_scanning = false,
.resolution = 12,
.average_count = 1,
.average_mode_flags = 0,
.ext_vref_mv = 0,
.vneg = CYHAL_ADC_VNEG_VREF,
.vref = CYHAL_ADC_REF_VDDA,
.ext_vref = NC,
.is_bypassed = false,
.bypass_pin = NC
};
// Configure to use VDD as Vref
result = cyhal_adc_configure(&adc_obj, &ADCconfig);
/* Initialize ADC channel, allocate channel number 0 to pin 10[6] as this is the first channel initialized */
const cyhal_adc_channel_config_t channel_config = { .enable_averaging = false, .min_acquisition_ns = 220, .enabled = true };
result = cyhal_adc_channel_init_diff(&adc_chan_0_obj, &adc_obj, P10_6, CYHAL_ADC_VNEG, &channel_config);
for (;;)
{
/* Read the ADC conversion result for corresponding ADC channel. Repeat as necessary. */
adc_out = cyhal_adc_read_uv(&adc_chan_0_obj);
printf("ADC = %d\r\n", adc_out);
cyhal_system_delay_ms(100);
}
}
Note: Before launching the program to the board, make sure that you have already connected the board to the computer through a USB cable.
🎉 Congratulations! You can now complete Lab105
GNU Arm® embedded compiler v10.3.1 (GCC_ARM
) - Default value of TOOLCHAIN
Arm® compiler v6.16 (ARM
)
IAR C/C++ compiler v9.30.1 (IAR
)
PSoC™ 62S2 Wi-Fi Bluetooth® pioneer kit (CY8CKIT-062S2-43012
)
PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit (CYW9P62S1-43438EVB-01
)
PSoC™ 62S1 Wi-Fi Bluetooth® pioneer kit (CYW9P62S1-43012EVB-01
)
PSoC™ 62S3 Wi-Fi Bluetooth® prototyping kit (CY8CPROTO-062S3-4343W
)
ModusToolbox™ Software Training
Infineon provides a wealth of data at www.infineon.com to help you select the right device, and quickly and effectively integrate it into your design.
Document title: BILL_MTB-107 – Read potentiometer sensor value via an ADC HAL
1.0.0
Lab 107: Learn basic GPIO control with PSoC 6, using ADC read potentiometer sensor value via HAL
Assoc. Prof. Wiroon Sriborrirux
Mr. Sriengchhun Chheang
Mr. Sabol Socare
© BDH Corporation, 2022-2023