Bienvenido: Ingresar

Por favor indica el password de tu cuenta en el wiki remoto abajo.
/!\ Deberías confiar en ambos wikis porque los administradoresrespectivos podrían ver tu contraseña.

Quitar mensaje
location: WebHome / Hardware / LPC2114 / ModuloADC

ADC (Analog Digital Converter)

El ADC es un conversor analógico digital, este periférico que posee el LPC2114/2124, permite convertir señales analógicas en una cuenta o valor digital.

Si bien este periférico es único dentro del micro controlador, posee un multiplexor analógico que permite conmutar entre varias señales de entrada.

Las características del mismo son las siguientes

cantidad de bits

10

cantidad de entradas

hasta 4

modo de bajo consumo o power down

Si

rango de entrada

0 a 3 V

tiempo de conversión

minino 2.44 us

Entradas

Cada pin tiene diversos usos, los mismo deben se configurados para ser usados por el ADC.

Alimentación

El ADC posee entradas separadas de alimentación denominadas V3A y VSSA, usadas para el bloque analógico, las mismas deben estar correctamente aisladas de las demás señales, para no generar errores en la conversión producto de las fluctuaciones en estas lineas

Registro de control (ADCR = 0xE0034000)

bits 7-0

SEL

Estos bits determina en cual o cuales de los 4 canales se realizará la conversión, solo son utilizados los 4 bits menos significativos correspondiendo cada bits a cada una de las entradas, este registro funciona de dos maneras diferentes: Controlado por software, en este modo solo un bits puede ser puesto en 1, el cual será el canal donde se realizará la conversión. Controlado por hardware, en este modo se selecciona con 1 a todos los canales donde se quieren hacer una conversión, una vez activo el ADC en este modo se producirá un barrido de todos estos canales.

bits 15-8

CLKDIV

El clock interno del ADC se extrae del VPB (PCLK) dividido el valor guardado en CLKDIV, el resultado no deberá ser superior a 4,5 Mhz, generalmente este divisor de configura para producir la máxima frecuencia posible del ADC ( 4,5Mhz) pero en ciertos casos conviene una menor frecuencia, por ejemplo en casos de que la señal a medir provenga de fuentes de alta impedancia.

bit 16

BURS

Si el bit es 0, la conversión es controlada por software requiriendo 11 ciclos de reloj, si en cambio es 1, se activa el control por hardware, ahora el tiempo de conversión y el rango de la misma será designado por CLKS, produciendo un barrido en cada canal que se encuentre activo en el registro SEL, comenzando por el bits menos significativo en 1.La conversión continuará hasta que se borre el el bits del BURST, con lo cual se detendrá el proceso una vez que la convención que se esté efectuando termine.

bits 19-17

CLKS

Este campo es usando en el modo de control por hardware y determina el numero de ciclos usados para la conversión y el numero de bits de precisión, pudiendo elegir entre 11 clock (10bits) = 000, 10 clock (9bits) = 001 hasta 4 clock (3bits) = 111

bit 21

PDN

1 = el ADC está operacional 0 = el ADC está en modo power down

bits 23-22

TEST

estos bits se utilizan para la verificación del dispositivo 00 = operación normal, 01 = test digital, 10 = test del DAC y 11 = modo de simple conversión

bits 26-24

START

Configura de que manera el ADC comenzará a convertir, en caso de estar configurado en modo control por software (BURST = 0) 000: no comienza este es el valor a usar cuando PDN = 0 001: comenzar la conversión ahora 010: flanco del tipo establecido en EDGE en el pin P0.16 011: flanco del tipo establecido en EDGE en el pin P0.22 100: flanco del tipo establecido en EDGE en el pin P0.27/MAT0.1 101: flanco del tipo establecido en EDGE en el pin P0.29/MAT0.3 110: flanco del tipo establecido en EDGE en el pin P0.12/MAT1.0 111: flanco del tipo establecido en EDGE en el pin P0.13/MAT1.1

bit 27

EDGE

Este bits es utilizado en caso de configurar a START entre 010 a 111 EDGE = 0 la conversión inicia en un flanco de bajada EDGE = 1 la conversión inicia en un flanco de subida

Registro de datos (ADDR = 0xE0034004)

bit 31

DONE

Este registro indica con 1 que la conversión a finalizado, es borrado cuando este registro es leído y cuando el ADCR es escrito, si el ADCR es escrito mientras que se estaba realizando una conversión, este bit es puesto a 1 y una nueva conversión arranca

bit 30

OVERRUN

En modo BURST este bits está en 1 si una o varias conversiones fueron perdidas por no leer a tiempo el registro antes de que una nueva la pisara.

bits 26-24

CHN

indica el canal de la ultima conversión

bits 15-6

V/V3A

indica el resultado de la conversión

Configuración y Lectura de un ADC

Este es un ejemplo muy simple del uso del ADC Para configurar el ADC comenzamos directamente a través del registro ADCR, falta en este proceso configurar los pines en el modo ADC, esto no es necesario, debido a que este es el modo por defecto.

La configuración la vamos realizando previamente en una variable "configura", esto permite ir observando cada bit de configuración que modificamos, una vez realizada la carga de esta variable, la copiamos al registro ADCR Solo dejamos pendiente el arranque de la conversión el cual es conveniente realizarlo en una escritura separada, cuando ya la configuración esta lista

al final un do while esperará hasta que el bit 31 del ADDR esté en 1 indicando fin de conversión, usamos luego la variable leida "salida" para directamente extraerle el resultado de la conversión

int main (void)
{

  unsigned int configura,salida;
  unsigned char canal;

  canal = 1;

  configura = (16 <<8 );   /* CLKDIV = 16 configuro divisor externo  */
  configura |= (1 << 21 ); /* PDN = 1 ADC en modo operacional*/
  configura |= canal;      /* canal a realizar la conversión */

  AD_ADCR = configura;
  
  while(1) {       
    AD_ADCR |= (1 << 24);  /* START = 001 comenzar la conversión inmediatamente  */

    do {
      salida = AD_ADDR;
    } while (( salida & (1<<31) ) == 0); /* DONE = 0 termino de convertir */

    salida = (salida >>6) & 0x03FF; /* tomar el resultado del bit 6 a 15*/
  }
  return 0; 
}