Funcionamiento del CAD

9
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC Página 1 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información PROGRAMAS PARA CONFIGURAR EL CONVERSOR DE ANALÓGICO A DIGITAL Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de los registros del conversor de analógico a digital que posee el microcontrolador ATmega164P, sin utilizar las interrupciones del conversor. .DEF AUX1 = R16 ; .CSEG PROGP: ; PROGRAMACIÓN DEL ADC ; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56 ; ADLAR=0 RESULTADO ALINEADO A LA DERECHA ; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL LDI AUX1,0B11000111 STS ADMUX,AUX1 ; ADEN=1 HABILITACIÓN DEL CONVERSOR ; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN ; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN ; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN ; ADIE=0 HABILITACIÓN DE LA INTERRUPCIÓN ; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2 LDI AUX1,0B11010000 STS ADCSRA,AUX1 ; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN LDI AUX1,0B00000000 STS ADCSRB,AUX1 ; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7 LDI AUX1,0B10000000 STS DIDR0,AUX1 ; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA LAZO: LDS AUX1,ADCSRA SBRS AUX1,ADIF RJMP LAZO ; BORRAR LA BANDERA MANTENIENDO LA VELOCIDAD DE CONVERSIÓN ; INICIA UNA NUEVA CONVERSIÓN LDI AUX1,0B11010000 STS ADCSRA,AUX1 RJMP LAZO ; .EXIT ; FIN DEL MODULO FUENTE NOTA: cuando se está simulando, debe esperar hasta que se encienda la bandera ADIF para que salga del lazo. PROGRAMAS PARA GENERAR INTERRUPCIONES CON EL CAD Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de los registros del conversor de analógico a digital que posee el microcontrolador ATmega164P, utilizando las interrupciones del conversor para iniciar nuevas conversiones.

description

Ejercicios para comprobar el funcionamiento del conversor de analógico a digital

Transcript of Funcionamiento del CAD

Page 1: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 1

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

PROGRAMAS PARA CONFIGURAR EL CONVERSOR DE ANALÓGICO A DIGITAL

Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de los registros del conversor de analógico a digital que posee el microcontrolador ATmega164P, sin utilizar las interrupciones del conversor.

.DEF AUX1 = R16 ; .CSEG PROGP: ; PROGRAMACIÓN DEL ADC ; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56 ; ADLAR=0 RESULTADO ALINEADO A LA DERECHA ; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL LDI AUX1,0B11000111 STS ADMUX,AUX1 ; ADEN=1 HABILITACIÓN DEL CONVERSOR ; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN ; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN ; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN ; ADIE=0 HABILITACIÓN DE LA INTERRUPCIÓN ; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2 LDI AUX1,0B11010000 STS ADCSRA,AUX1 ; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN LDI AUX1,0B00000000 STS ADCSRB,AUX1 ; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7 LDI AUX1,0B10000000 STS DIDR0,AUX1 ; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA LAZO: LDS AUX1,ADCSRA SBRS AUX1,ADIF RJMP LAZO ; BORRAR LA BANDERA MANTENIENDO LA VELOCIDAD DE CONVERSIÓN ; INICIA UNA NUEVA CONVERSIÓN LDI AUX1,0B11010000 STS ADCSRA,AUX1 RJMP LAZO ; .EXIT ; FIN DEL MODULO FUENTE

NOTA: cuando se está simulando, debe esperar hasta que se encienda la bandera ADIF para que salga del lazo.

PROGRAMAS PARA GENERAR INTERRUPCIONES CON EL CAD

Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de los registros del conversor de analógico a digital que posee el microcontrolador ATmega164P, utilizando las interrupciones del conversor para iniciar nuevas conversiones.

Page 2: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 2

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

.DEF AUX1 = R16 ; .CSEG JMP PROGP ; .ORG $30 ; INTERRUPCIÓN DE FIN DE CONVERSIÓN JMP INTADC ; PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 ; PROGRAMACIÓN DEL ADC ; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56 ; ADLAR=0 RESULTADO ALINEADO A LA DERECHA ; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL LDI AUX1,0B11000111 STS ADMUX,AUX1 ; ADEN=1 HABILITACIÓN DEL CONVERSOR ; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN ; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN ; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN ; ADIE=1 HABILITACIÓN DE LA INTERRUPCIÓN ; ADPS2:0=011 FRECUENCIA DEL RELOJ DIVIDA PARA 8 LDI AUX1,0B11011011 STS ADCSRA,AUX1 ; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN LDI AUX1,0B00000000 STS ADCSRB,AUX1 ; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7 LDI AUX1,0B10000000 STS DIDR0,AUX1 ; SEI ; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA LAZO: RJMP LAZO ; INICIO DE CONVERSIÓN MANTENIENDO LA VELOCIDAD DE CONVERSIÓN INTADC: LDI AUX1,0B11011011 STS ADCSRA,AUX1 RETI ; .EXIT ; FIN DEL MODULO FUENTE

PROGRAMAS PARA IMPLEMENTAR UN VOLTÍMETRO DIGITAL

Programa para visualizar mediante el simulador del PROTEUS, el funcionamiento del conversor de analógico a digital para implementar un voltímetro de 0 a 5 voltios, utilizando la entrada ADC7 para la señal analógica y el Timer 1 para generar la temporización de un segundo que se sirve para mostrar el resultado en los display.

.DEF VALORD = R15 ; DÍGITO EN LA CONVERSIÓN HEX A DEC

.DEF AUX1 = R16

.DEF AUX2 = R17

.DEF AUX3 = R18

.DEF VALORH = R19 ; BYTE ALTO LEÍDO DESDE EL CONVERSOR

.DEF VALORL = R20 ; BYTE BAJO LEÍDO DESDE EL CONVERSOR

.DEF VALCOL = R21 ; BYTE ALTO CORREGIDO PARA MOSTRAR

Page 3: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 3

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

.DEF VALCOH = R22 ; BYTE BAJO CORREGIDO PARA MOSTRAR

.DEF AUXI1 = R23 ; .CSEG JMP PROGP .ORG $30 ; INTERRUPCIÓN DE FIN DE CONVERSIÓN JMP INTADC ; PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 ; PROGRAMACIÓN DEL ADC ; REFS1:0=01 VOLTAJE DE REFERENCIA AVCC ; ADLAR=0 RESULTADO ALINEADO A LA DERECHA ; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL LDI AUX1,0B01000111 ; VOLTAJE DE REFERENCIA 5 VOLTIOS STS ADMUX,AUX1 ; ADEN=1 HABILITACIÓN DEL CONVERSOR ; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN ; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN ; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN ; ADIE=1 HABILITACIÓN DE LA INTERRUPCIÓN ; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2 LDI AUX1,0B11001000 STS ADCSRA,AUX1 ; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN LDI AUX1,0B00000000 STS ADCSRB,AUX1 ; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7 LDI AUX1,0B10000000 STS DIDR0,AUX1 ; SEI ; VALOR INICIAL QUE SE MUESTRA LDI VALORH,0x04 LDI VALORL,0x00 ; MOSTRAR EN EL DISPLAY SHOW: MOV VALCOL,VALORL MOV VALCOH,VALORH RCALL CORREC RCALL CONVER RCALL ASEG RCALL SCAN RJMP SHOW ; CORRECCIÓN DEL VALOR BINARIO A LA ESCALA ; Vref= 5 DIVIDIR PARA 200 = DIVIDIR 2 Y RECORRER EL PUNTO CORREC: LSR VALCOH ROR VALCOL RET ; SUBRUTINA DE CONVERSIÓN DE HEXADECIMAL A DECIMAL CONVER: LDI XL,LOW(DIGIT) LDI XH,HIGH(DIGIT) LDI ZL,LOW(TBLPOT<<1) LDI ZH,HIGH(TBLPOT<<1) LDI AUX3,3 CONVER1:LPM AUX1,Z+ LPM AUX2,Z+ CLR VALORD CONVER2:SUB VALCOL,AUX1 SBC VALCOH,AUX2

Page 4: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 4

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

BRCS CONVER3 INC VALORD RJMP CONVER2 CONVER3:ADD VALCOL,AUX1 ADC VALCOH,AUX2 ST X+,VALORD DEC AUX3 BRNE CONVER1 ST X,VALCOL RET ; TABLA DE POTENCIAS DE 10 TBLPOT: .DW 1000,100,10 ; LECTURA DEL VALOR DEL CONVERSOR ; INICIO DE CONVERSIÓN MANTENIENDO LA VELOCIDAD DE CONVERSIÓN INTADC: LDS VALORL,ADCL LDS VALORH,ADCH LDI AUXI1,0B11011000 STS ADCSRA,AUXI1 RETI ; SUBRUTINAS PARA EL DISPLAY .INCLUDE "SUBCC.ASM" ; .EXIT ; FIN DEL MODULO FUENTE

RESULTADOS DE LA SIMULACIÓN

VALOR MEDIDO IGUAL A 0,00 voltios Y MOSTRADO IGUAL A 0,00 voltios

Page 5: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 5

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MEDIDO IGUAL A 1,00 voltios Y MOSTRADO IGUAL A 1,02 voltios

VALOR MEDIDO IGUAL A 2,50 voltios Y MOSTRADO IGUAL A 2,56 voltios

Page 6: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 6

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MEDIDO IGUAL A 4,99 voltios Y MOSTRADO IGUAL A 5,11 voltios

ANÁLISIS DE LA DIFERENCIA ENTRE EL VALOR MEDIDO Y EL MOSTRADO

Se puede observar que existe diferencia entre el valor medido y el mostrado por el programa; esto se debe a que en el procesamiento del valor obtenido por el conversor se ha realizado una aproximación para poder mostrar en el display.

Según la fórmula del valor obtenido en el conversor, para un canal individual es:

Con Vref = 5 voltios y con Vin = 5 voltios se obtiene en el conversor el número 1024 en binario, pero se debe mostrar 5 en decimal; por lo que se debe dividir para 204,8 el número leído desde los registros ADCH/L antes de mostrar en los displays. Para simplificar esta corrección en el programa únicamente se ha divido para 200, de la siguiente forma:

• El número leído se desplaza una posición a la derecha de todos los bits, lo que significa dividir para 2.

• Se transforma de Binario a BCD este nuevo número, obteniendo cuatro dígitos, y.

• Al momento de transformar a siete segmentos el número, se enciende el punto decimal en el antepenúltimo dígito, lo que significa dividir para 100.

Page 7: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 7

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

Se mejora la precisión del voltímetro cambiando el voltaje de referencia a 2,56 voltios; por lo que, con Vin = 2,56 voltios el número leído nuevamente será 1024 que divido para 400 obtenemos exactamente 2,56 para ser mostrado en los displays. La corrección en este caso se modifica, aumentado un desplazamiento más de los bits para realizar la división para 4.

MODIFICACIONES EN EL CÓDIGO DEL PROGRAMA

Cambiar el Voltaje de Referencia en el registro ADMUX.

; PROGRAMACIÓN DEL ADC ; REFS1:0=11 VOLTAJE DE REFERENCIA 2,56 ; ADLAR=0 RESULTADO ALINEADO A LA DERECHA ; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL LDI AUX1,0B11000111 ; VOLTAJE DE REFERENCIA 2,56 VOLT. STS ADMUX,AUX1

Aumentar un desplazamiento de los bits del número leído.

; CORRECCIÓN DEL VALOR BINARIO A LA ESCALA ; Vref= 2,56 DIVIDIR PARA 400 = DIVIDIR 4 Y RECORRER EL PUNTO CORREC: LSR VALCOH ROR VALCOL LSR VALCOH ROR VALCOL RET

NOTA: Estas modificaciones mejoran la precisión del voltímetro, pero el rango del voltaje de entrada queda reducido a valores entre 0 y 2,56 voltios, tal como se puede ver en las pantallas obtenidas del simulador.

1,50 voltios VALOR MEDIDO Y VALOR MOSTRADO

Page 8: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 8

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MEDIDO Y MOSTRADO IGUAL A 2,00 voltios

VALOR MEDIDO IGUAL A 2,50 voltios VALOR MOSTRADO IGUAL A 2,50 voltios

Page 9: Funcionamiento del CAD

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del ADC

Página 9

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MEDIDO IGUAL A 3,00 voltios VALOR MOSTRADO IGUAL A 2,55 voltios. EL CONVERSOR DE ANALÓGICO A DIGITAL ESTA SATURADO