Amigos, me ajudem a entender o porque do não funcionamento da leitura do ADC no Pino 01 - AD1.6, canal 5 do LPC2138
//ADC
#define CH0 (1<<0)
#define CH1 (1<<1)
#define CH2 (1<<2)
#define CH3 (1<<3)
#define CH4 (1<<4)
#define CH5 (1<<5)
#define CH6 (1<<6)
#define CH7 (1<<7)
#define CH5_PINSEL (2<<5)
#define CLKDIV (29<<8) // CLKDIV = (60Mhz/2Mhz)-1
#define BURST (1<<16) // 1 Conversçao continua via hardware, 0 via software uma vez
#define ADC10_BITS (0<<17)
#define ADC08_BITS (2<<17)
#define POWERON_ADC (1<<21)
#define START_CONVERSION (1<<24)
#define EDGE_CONVERSION (1<<27)
void InitAdc(void)
{
AD0CR = CLKDIV | ADC10_BITS;
}
unsigned int LeituraADC(char channel)
{
unsigned int i;
//Porta p0.21, AD1.6, canal 5.
PINSEL1 |= CH5_PINSEL;
AD0CR |= (POWERON_ADC|CLKDIV|channel);
// Start A/D Conversion
AD0CR |= START_CONVERSION;
do
{
i = AD0DR; // Read A/D Data Register
}while ((i & 0x80000000) == 0); // Wait for end of A/D Conversion
return (unsigned int)((i >> 6) & 0x03FF); // bit 6:15 is 10 bit AD value
}
char CheckTensao(void)
{
unsigned int Vdc = 0;
Vdc = LeituraADC(CH5);
// Tensão Ok
return 0;
}
Ahh, a frequência de operação está em 60Mhz
Obrigado