1 / 47

ADC12

ADC12. Seminario de Computadores I. Introducción 1 ADC12. ¿Que Hace? Convierte valores de voltaje a palabras digitales. Características • Conversión de 12 bits. • Tasa de muestreo programable, con una máxima: 200 KHz. • Inicio de la conversión por software, o por temporizadores .

brac
Télécharger la présentation

ADC12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ADC12 Seminario de Computadores I

  2. Introducción 1 ADC12 • ¿Que Hace? • Convierte valores de voltaje a palabras digitales. • Características • • Conversión de 12 bits. • • Tasa de muestreo programable, con una máxima: 200 KHz. • • Inicio de la conversión por software, o por temporizadores . • • Término de la conversión genera interrupciones. • • Generación de referencias configurable por software. • • 8 canales de entrada, ademas de 4 señales internas. • 4 modos de adquisión. • • 16 registros de almacenamiento del resultado de la conversión. Seminario de Computadores I

  3. Introducción 2 ADC12 ¿Dónde está? Seminario de Computadores I

  4. Introducción 3 ADC12 Diagrama de bloques: Seminario de Computadores I

  5. Qué entrega el conversor: • Convierte en palabras de 12 bits los voltajes aplicados en sus canales, dentro de los rangos V+ y V-. • La conversión cumple la siguiente relación: • Obteniendose en memoria la representación binaria del número resultante. Introducción 4 ADC12 Seminario de Computadores I

  6. Introducción 5 ADC12 • Requerimientos para la operación: • Reloj (ADC12CLK) • Fuentes: • SMCLK • MCLK • ACLK • ADC12OSC • Con ADC12DIVx se puede dividir en un factor 1 a 8. Seminario de Computadores I

  7. Introducción 6 ADC12 • Canales • En un multiplexor se elige el canal que sera muestreado y convertido. • Se pueden (y deben) seleccionar mediante software. • Corresponden al P6. Seminario de Computadores I

  8. Introducción 7 ADC12 • Voltajes de referencia • Referencia interna: 2.5 o 1.5 [V]. • Referencia externa, tanto para V_ como V+. • Voltaje de polarización: 3.6 [V]. Seminario de Computadores I

  9. Introducción 8 ADC12 Muestreo y tiempos de conversión El ciclo de conversión se inicia con un canto de subida de SHI. Fuentes de esta señal: • Bit ADC12SC. • Etapa de salida 1 del Timer_A. • Etapa de salida 0 del Timer_B. • Etapa de salida 1 del Timer_B. La señal SAMPCON controla el período de muestreo y el inicio de la conversión. Existen dos modos de muestreo, que se setean con el bit SHP. Seminario de Computadores I

  10. Introducción 9 ADC12 • Captura extendida • En este modo, la señal SHI controla directamente a SAMPCON y define la longitud del período de muestreo. Seminario de Computadores I

  11. Introducción 10 ADC12 • Captura por pulso • La señal SHI es utilizada en este caso para disparar el temporizador de muestreo. • Bits SHTxx de ADC12CTL0 definen período de SAMPCON. • El tiempo total de muestreo es entonces tsample + tsync. Seminario de Computadores I

  12. Introducción 11 ADC12 • Consideraciones del tiempo de captura • El canal se puede modelar como un circuito RC pasabajos: Debe considerarse entonces como tiempo de muestreo: Reemplazando valores típicos, se obtiene un tsample mínimo de 4,33 [us] . Seminario de Computadores I

  13. ADC12 Seminario de Computadores I

  14. Registros 1 ADC12 • Caracteristicas: • 2 registros de configuración • 16 registros de almacenamiento • 3 registros para manejo de interrupciones. • 16 registros de control de conversión Seminario de Computadores I

  15. Registros 2 ADC12 ADC 12 Control Register 0 ADC12CTL0 SHT1x: Nº de ciclos en el periodo de muestreo para los registros desde ADC12MEM8 al ADC12MEM15 SHT0x: Nº de ciclos en el periodo de muestreo para los registros desde ADC12MEM0 al ADC12MEM7 MSC: Muestreo y conversion multiples 0 = se necesita canto positivo de SHI para cada muestreo 1 = se necesita canto positivo de SHI para primer muestreo Seminario de Computadores I

  16. Registros 3 ADC12 ADC 12 Control Register 0 ADC12CTL0 REF2_5V: Generador de voltaje referencia . 0 = 1,5[V] 1 = 2,5[V] REFON: Activa el generador de referencia ADC12ON: Habilita el ADC ADC12OVIE: Habilita la interrupción debido al Overflow en resultados ADC12TOVIE: Habilita la interrupción por TimeOverflow en la conversión ENC: Habilita la conversión ADC12SC: Inicia la conversión Seminario de Computadores I

  17. Registros 4 ADC12 ADC 12 Control Register 1 ADC12CTL1 CSTARTADDx: Indica en que registro de memoria (ADC12MEMx) iniciar la conversión SHSx: Fuente de reloj que inicia todo el ciclo de conversion ISSH: Invertir la señal Sample&Hold Seminario de Computadores I

  18. Registros 5 ADC12 ADC 12 Control Register 1 ADC12CTL1 SHP: Configura el modo del pulso del Sample&Hold. Configura el trigger de la señal de muestreo SAMPCON 0 captura extendida 1 captura por pulso ADC12SSELx: Origen del reloj ADC12CLK ADC12DIVx: Dividir el reloj ADC12CLK Seminario de Computadores I

  19. Registros 6 ADC12 ADC 12 Control Register 1 ADC12CTL1 CONSEQx: Modo de Conversión ADC12BUSY: Indica si el ADC esta ocupado realizando alguna operación 00 = 1 conversión, 1 canal 01 = Secuencia de canales 10 = Repetir un único canal 11 = Repetir secuencia de canales Seminario de Computadores I

  20. Registros 7 ADC12 ADC 12 Conversion Memory Register, ADC12MEMx Se almacenan los resutaldos de la conversión. Se emplean solo los bits 11 al 0 Seminario de Computadores I

  21. Registros 8 ADC12 ADC 12 Conversion Memory Control Register, ADC12MCTLx EOS: Fin de la secuencia SREFx: Seleccionar la referencia INCHx: Seleccionar el canal de entrada Seminario de Computadores I

  22. Registros 9 ADC12 ADC 12 Interrupt Enable Register, ADC12IE Habilita la petición de interrupciones por parte de ADC12IFGx. ADC 12 Interrupt Flag Register, ADC12IFG ADC12IFGx: Se ponen en 1 cuando al registro ADC12MEMx se le guarda una conversión Seminario de Computadores I

  23. Registros 10 ADC12 ADC 12 Interrupt Vector Register, ADC12IV ADC12IVx: Almacena el valor del vector de interrupciones Seminario de Computadores I

  24. ADC12 Seminario de Computadores I

  25. Memoria de conversión Funcionamiento 1 ADC12 • Existen 16 registros de memoria denominados ADC12MEMx. • Cada registro de memoria es asociado a los registros de control ADC12MCTLx. • -SREF indica la referencia a usar. • - INCHx selecciona el canal a convertir. • - EOS indica el termino de una secuencia, en el caso que se - ocupe una. • CSTARTADDx define el primer ADC12MEMx a ocupar en una secuencia. • Cuando un resultado es guardado en un ADC12MEMx, el correspondiente flag es seteado en el registro ADC12IFG. Seminario de Computadores I

  26. Modos de Conversión Funcionamiento 2 ADC12 Los modos de conversión son seteados mediante CONSEQx. Seminario de Computadores I

  27. Canal único, única conversión Funcionamiento 3 ADC12 ADC12 off X=CSTARTADDx ADC12ON ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx SAMPCOM = 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Seminario de Computadores I

  28. Canal único, única conversión Funcionamiento 3 ADC12 ADC12 off X=CSTARTADDx ADC12ON Wait trigger ENC ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx SAMPCOM = SAMPCOM = 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Seminario de Computadores I

  29. Secuencia de canales Funcionamiento 4 ADC12 ADC12 off X=CSTARTADDx EOS.x = 1 ADC12ON ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx MSC = 1 SHP = 1 EOS.x = 0 If x<15 then x = x+1 Else x = 0 SAMPCOM = 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Seminario de Computadores I

  30. Secuencia de canales Funcionamiento 4 ADC12 ADC12 off X=CSTARTADDx EOS.x = 1 ADC12ON Wait trigger ENC ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx SAMPCOM = MSC = 0 O SHP = 0 Y EOS.x = 0 If x<15 then x = x+1 Else x = 0 MSC = 1 SHP = 1 EOS.x = 0 If x<15 then x = x+1 Else x = 0 SAMPCOM = 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Seminario de Computadores I

  31. Repetición de canal único Funcionamiento 5 ADC12 ADC12 off ADC12 off X=CSTARTADDx X=CSTARTADDx ENC = 0 ADC12ON ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx Canal definido en ADC12MCTLx MSC = 1 SHP = 1 ENC = 1 SAMPCOM = 1 x ADC12CLK 1 x ADC12CLK 12 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Conversión Seminario de Computadores I

  32. Repetición de canal único Funcionamiento 5 ADC12 ADC12 off ADC12 off X=CSTARTADDx X=CSTARTADDx ENC = 0 ADC12ON Wait trigger ENC ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx Canal definido en ADC12MCTLx SAMPCOM = MSC = 0 O SHP = 0 Y ENC = 1 MSC = 1 SHP = 1 ENC = 1 SAMPCOM = 1 x ADC12CLK 1 x ADC12CLK 12 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Conversión Seminario de Computadores I

  33. Repetición Secuencia de canales Funcionamiento 6 ADC12 ADC12 off X=CSTARTADDx EOS.x = 1 ENC = 0 ADC12ON ENC = 1 SHSx = 0 ADC12SC = Canal definido en ADC12MCTLx Canal definido en ADC12MCTLx MSC = 1 SHP = 1 ENC = 1 o EOS.x = 0 If EOS.x = 1 then x = CSTARTADDx Else {If x<15 then x = x+1 Else x = 0} SAMPCOM = 1 x ADC12CLK 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Conversión Seminario de Computadores I

  34. Repetición Secuencia de canales Funcionamiento 6 ADC12 ADC12 off X=CSTARTADDx EOS.x = 1 ENC = 0 ADC12ON Wait trigger ENC ENC = 1 SHSx = 0 ADC12SC = SAMPCOM = Canal definido en ADC12MCTLx Canal definido en ADC12MCTLx MSC = 1 SHP = 1 ENC = 1 o EOS.x = 0 If EOS.x = 1 then x = CSTARTADDx Else {If x<15 then x = x+1 Else x = 0} MSC = 1 SHP = 1 ENC = 1 o EOS.x = 0 If EOS.x = 1 then x = CSTARTADDx Else {If x<15 then x = x+1 Else x = 0} SAMPCOM = 1 x ADC12CLK 1 x ADC12CLK 12 x ADC12CLK Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Resultado guardado en ADC12MEMx, ADC12IFGx es seteado Conversión Conversión Seminario de Computadores I

  35. Funcionamiento 7 ADC12 Interrupción de la conversión • (00) Para interrumpir la conversión, se debe resetear el bit ENC haríaterminar inmediatamente la conversión, lo que implicaría que el resultado de la conversión no seria confiable. • (01) Para interrumpir la conversión se debe resetear el bit ENC terminaría la conversión al final de la secuencia. • (10) Para interrumpir la conversión se debe resetear el bit ENC terminaría la conversión al final de ésta. • (11) Las sucesivas conversiones terminan cuando ENC es igual a 0 y EOS = 1, lo que hace terminar la conversión al final de la secuencia. Seminario de Computadores I

  36. Sensor integrado de temperatura Funcionamiento 8 ADC12 • Se debe seleccionar la entrada analoga INCHx=1010. • La temperatura se encuentra relacionada con el voltaje de entrada mediante el siguiente grafico. Vtemp = 0.00355Tempc+0.986 Seminario de Computadores I

  37. Interrupciones Funcionamiento 9 ADC12 • El ADC12 posee 18 recursos de interrupción. • * ADC12IFG0-ADC12IFG15 • * ADC12OV, ADC12MEMx overflow • * ADC12TOV, ADC12 conversion time overflow Seminario de Computadores I

  38. ADC12IV, Vector generador de interrupción Funcionamiento 10 ADC12 • Vector único de interrupciones. • En éste las interrupciones son priorizadas y combinadas. • Las interrupciones ADC12TOV y ADC12OV son reseteadas automáticamente con cualquier acceso a este registro, en el caso que tenga cualquiera de estas la mayor prioridad. • Las interrupciones originadas por ADC12IFGx son seteadas una vez que se hayan leido los datos de los registros de memoria ADC12MEMx correspondiente. • Si otra interrupción queda pendiente después del servicio de interrupción otra interrupción es generada. Seminario de Computadores I

  39. ADC12 Seminario de Computadores I

  40. Inicialización Secuencial Programación 1 ADC12 void ADC_INIT_SIMPLE(void) { P6SEL |= 0x00FF; //8 lsb Puerto 6 para conversor ADC12 P6DIR &= 0xFF00; //8 lsb Puerto 6 como entradas (analogas) ADC12CTL0 &= ~ENC; //deshabilita conversion ADC12CTL0 = SHT1_15 | SHT0_15 | ADC12ON; ADC12CTL1 = CSTARTADD_0 | SHS_0 | SHP | ADC12DIV_7 | ADC12SSEL_2 | CONSEQ_0; ADC12MCTL0 = SREF_0; ADC12IE = 0x00; //Deshabilitadas las interrupciones (bits ADC12IEx) para todos los ADC12MCTLx ADC12CTL0 |= ENC; // habilita conversión } Seminario de Computadores I

  41. Programación 2 ADC12 DetalleInicializaciónSimple ADC12CTL0 = SHT1_15 | SHT0_15 | ADC12ON; //SHT1x = 0x0F => Tiempo de Sample and Hold para canales ADC 8 a 15 = 1024 ciclos ADC12CLK //SHT0x = 0x0F => Tiempo de Sample and Hold para canales ADC 0 a 7 = 1024 ciclos ADC12CLK //MSC no importa, sólo válido para conversiones múltiples o repetitivas //REF2_5V no importa si REFON = 0 //REFON = 0, referencia interna apagada //ADC12ON = 1 => Conversor ADC12 encendido //ADC12OVIE = 0 => NO se utiliza Interrupcion de overflow de memoria del ADC12 //ADC12TOVIE deshabilitado //ENC = 0 => Conversion Deshabilitada, para poder modificar el siguiente registro //ADC12SC = 0 => No se inicia conversión

  42. Programación 3 ADC12 DetalleInicializaciónSimple ADC12CTL1 = CSTARTADD_0 | SHS_0 | SHP | ADC12DIV_7 | ADC12SSEL_2 | CONSEQ_0; //CSTARTADDx = 0 => Conversión dado por los argumentos del registro ADC12MCTL0 y por lo tanto resultado aparece en ADC12MEM0 //SHSx = 0 => Sample and Hold Source = ADC12SC bit //SHP = 1 => Canto de bajada del SHI "NO" detiene el ciclo de "Captura" de la señal de entrada. //ISSH = 0 => Polaridad normal del SHI //ADC12DIVx = 7 => ADC12 clock divider = /8 => ADC12 clock = 1MHz //ADC12SSELx = 2 => ADC12 Clock = MCLK //CONSEQx = 0 => MODO DEL ADC12: Una única conversión, un único canal

  43. Programación 4 ADC12 DetalleInicializaciónSimple ADC12MCTL0 = SREF_0; //EOS no importa, Indica la última conversión en una secuencia cuando modo ADC12 = cíclico o secuencia. //SREF_x = 0 => Referencia de voltaje VR+ = AVcc y VR- = AVss, es decir, VR+ = 3.6[V] y VR- = 0[V] //INCHx = 0 => Parte con canal 0 seleccionado como entrada al ADC12 ADC12IE = 0x00; //Deshabilitadas las interrupciones (bits ADC12IEx) para todos los ADC12MCTLx ADC12CTL0 |= ENC; // habilita conversión }

  44. Conversión Simple Programación 5 ADC12 int conversion(CANAL) { ADC12CTL0 &= ~ENC; //deshabilita conversion para realizar cambios ADC12MCTL0 &= 0xFFF0; //borra INCHx ADC12MCTL0 |= (CANAL & 0x0F); //Selecciona el canal a convertir ADC12CTL0 |= ENC; //habilita conversión ADC12CTL0 |= ADC12SC; //inicia conversión while (ADC12CTL0 & ADC12SC); //espera término de la conversión, o sea espera que bit ADC12SC = 0 return ADC12MEM0; } Seminario de Computadores I

  45. Programación 6 ADC12 Inicialización Secuencial void ADC_INIT_SEQ(void) { P6SEL |= 0x00FF; P6DIR &= 0xFF00; ADC12CTL0 &= ~ENC; //Para poder hacer cambios en los registros ADC12CTL0 = SHT1_15 | SHT0_15 | ADC12ON | MSC; //MSC =1 => Cada conversión se realiza apenas la anterior haya terminado ADC12CTL1 = CSTARTADD_0 | SHS_0 | SHP | ADC12DIV_7 | ADC12SSEL_2 | CONSEQ_1; //CONSEQx = 1 => MODO DEL ADC12: Secuencia de canales. ADC12MCTL0 = SREF_0; ADC12MCTL1 = SREF_0; ADC12MCTL2 = SREF_0; ADC12MCTL3 = SREF_0 | EOS;// último canal de la secuencia ADC12IE = 0x00; ADC12CTL0 |= ENC; // habilita conversión }

  46. Programación 7 ADC12 Conversión Secuencial void CONV_ADC_SEQ(int CH1,CH2,CH3,CH4) { ADC12CTL0 &= ~ENC; ADC12MCTL0 &= 0xFFF0; ADC12MCTL1 &= 0xFFF0; ADC12MCTL2 &= 0xFFF0; ADC12MCTL3 &= 0xFFF0; ADC12MCTL0 |= (CH1 & 0x0F);//Selecciona 1º canal a convertir ADC12MCTL1 |= (CH2 & 0x0F);//Selecciona 2º canal ADC12MCTL2 |= (CD3 & 0x0F);//Selecciona 3º canal ADC12MCTL3 |= (CH4 & 0x0F);//Selecciona 4º canal ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; while (ADC12CTL0 & ADC12SC); ResultadoADC[0]=ADC12MEM0; //Los resultados de la conversión ResultadoADC[1]=ADC12MEM1; //se almacenan en variables globales ResultadoADC[2]=ADC12MEM2; ResultadoADC[3]=ADC12MEM3; }

  47. ¿Preguntas? ADC12 ¿¿¿Preguntas??? “Los verdaderos programadores no hablan de su código.Fue difícil escribirlo, y aún más entenderlo.” Seminario de Computadores I

More Related