Buenas!
soy nuevo en el foro, y al ver muchas de mis dudas resueltas aquí, aprovecho para consultar lo siguiente.
Estoy trbajando con ARM y necesito realizar una conversión AD, pero al cargar el progrma en el micro no estaría funcionando. realmetne no le encuentro la vuelta.
Alguno me puede dar una mano con este codigo? o tiene algún ejemplo probado y funcionando?
Aquí el programa:
soy nuevo en el foro, y al ver muchas de mis dudas resueltas aquí, aprovecho para consultar lo siguiente.
Estoy trbajando con ARM y necesito realizar una conversión AD, pero al cargar el progrma en el micro no estaría funcionando. realmetne no le encuentro la vuelta.
Alguno me puede dar una mano con este codigo? o tiene algún ejemplo probado y funcionando?
Aquí el programa:
Código:
#include<LPC214x.h>
int val = 0;
int aux = 0xFFFFFFC3;
void ADC(void) __irq;
int main(void)
{
PINSEL0 = 0x00000000; // GPIO
PINSEL1 = 0x00040000; //configuro como entrada de convercion al AD0.4
IODIR0 = 0xFFFFFFFF; //P0.0 a 31 definidas como salidas
IOSET0 = 0xFFFFFFFF; // Apago todos los led
VPBDIV = 0x00000002; //Establece el Pclk a 30 MHz
PCONP |= 0x1000;
AD0CR = 0x002D0610; //Coonfigura el ADC0, 4 bit de resolución
VICVectCntl0= 0x20|18; // Asigna el ADC al slot 0
VICVectAddr0= (unsigned)ADC; // Da la dirección de la IRQ vectorizada
VICIntEnable= 0x00040000; //Habilita la interrupción
while(1);
}
void ADC (void)__irq
{
AD0CR |= 0x01000000; // Start A/D Conversion
while (!(AD0DR4 & 0x80000000)); //Wait for the conversion to complete
val = ((AD0DR4 >> 4) & 0xFFC); //Extract the A/D result
val = val | aux;
IOCLR0 = ~val; //write the result onto the LED pins
IOSET0 = val;
VICVectAddr=0x00000000;
}