cursada_mc2
Base de control de temperatura para EDU-CIAA-NXP
Loading...
Searching...
No Matches
adc_driver.c
Go to the documentation of this file.
1
12#include "adc_driver.h"
13
14ADC_CHANNEL_T adc_channel_ = ADC_CH0;
15
16
17#define MAX_ADC_CHANNELS 8
18
19
20void board_adc_init(uint8_t channel)
21{
22 ADC_CLOCK_SETUP_T adc_config;
23 adc_config.adcRate = ADC_MAX_SAMPLE_RATE;
24 adc_config.bitsAccuracy = ADC_10BITS;
25 adc_config.burstMode = FALSE;
26
27 board_adc_set_channel(channel);
28
29 Chip_SCU_ADC_Channel_Config(0, adc_channel_);
30 Chip_ADC_Init(LPC_ADC0, &adc_config);
31 Chip_ADC_EnableChannel(LPC_ADC0, adc_channel_, ENABLE);
32}
33
34
36{
37 NVIC_ClearPendingIRQ(ADC0_IRQn);
38 NVIC_EnableIRQ(ADC0_IRQn);
39 Chip_ADC_Int_SetChannelCmd(LPC_ADC0, adc_channel_, ENABLE);
40 Chip_ADC_SetStartMode(LPC_ADC0, ADC_START_NOW, ADC_TRIGGERMODE_RISING);
41}
42
43
44void board_adc_set_channel(uint8_t channel)
45{
46 if (channel < MAX_ADC_CHANNELS) { adc_channel_ = (ADC_CHANNEL_T) channel; }
47}
48
50{
51 uint16_t adc_value;
52 Chip_ADC_SetStartMode(LPC_ADC0, ADC_START_NOW, ADC_TRIGGERMODE_RISING);
53 while (Chip_ADC_ReadStatus(LPC_ADC0, adc_channel_, ADC_DR_DONE_STAT) == RESET) {}
54 Chip_ADC_ReadValue(LPC_ADC0, adc_channel_, &adc_value);
55 return adc_value;
56}
#define MAX_ADC_CHANNELS
Definition adc_driver.c:17
uint16_t board_adc_polling()
Realiza una conversion ADC por polling y devuelve el resultado.
Definition adc_driver.c:49
void board_adc_init(uint8_t channel)
Inicializa el ADC y selecciona el canal de entrada inicial.
Definition adc_driver.c:20
void board_adc_set_channel(uint8_t channel)
Cambia el canal ADC activo.
Definition adc_driver.c:44
ADC_CHANNEL_T adc_channel_
Definition adc_driver.c:14
void board_adc_int_enable()
Habilita las interrupciones del ADC.
Definition adc_driver.c:35
Interfaz del driver ADC.