#include "stdio.h"
#include "stdint.h"
#include "lpc17xx_adc.h"
#include "lpc17xx_pinsel.h"
#include "LPC17xx.h"
//#define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE)
static void adc_pinsel();
int main(void)
{// //done for AD0.2 ONLY.
uint16_t digi_distance = 0;
uint32_t start_t = 0;
adc_pinsel();
ADC_Init(LPC_ADC,12500000);
ADC_BurstCmd(LPC_ADC,DISABLE);
while(1) // use a volatile variable to break this loop
{
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_1,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_2,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_3,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_4,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_5,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_6,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_7,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_2,ENABLE);
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
while(!(ADC_ChannelGetStatus(LPC_ADC,ADC_CHANNEL_2,1)));
digi_distance = ADC_ChannelGetData(LPC_ADC,ADC_CHANNEL_2);
printf("%d\n",digi_distance);
}
return 0;
}
static void adc_pinsel()
{
PINSEL_CFG_Type PinCfg;
PinCfg.Funcnum = 1; // select AD0.2
PinCfg.Pinnum = 25;
PinCfg.Portnum = 0;
PinCfg.Pinmode = 2;
PinCfg.OpenDrain = 0;
// select AD0.3
/* do the similarly for rest of the 3 pins*/
PINSEL_ConfigPin(&PinCfg);
}
|