Página 1 de 1

ADC ARM - LPC2138

MensagemEnviado: 29 Mar 2007 00:21
por gibim
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