16f887 Practicas con los modulos.

Bueno este tema lo abri despues de ver que muy poca gente los esta trabajando y ademas de lo ya publicado no vi alguien que los trabaje en asm. Entonces sin mas preambulos.

El 16f887 es un microcontrolador de la familia 16 a 8bit, que cuenta con unas caracteristicas especiales como son:
-oscilador interno configurable desde 32khz hasta 8mhz con frecuencias distintas seleeccionables por software dentro de este rango incluidas las mencionadas.
-2 comparadores (amplificador operacional) independientes del resto del integrado, bueno con la particuaridad de que C2 comparador 2 puede ser trabajdo con tmr_1.
-Una de las ventajas es que el voltaje de referencia para estos comparadores lo proporciona el circuito integrado internamente o tambien puede ser externo. Con la particularidad de que si se apaga el vref para el comparador este no consume corriente pero sin embargo proporciona un detector de cruce por cero muy util para controlar procesos liados a la corriente AC.
-El CAD es de 10bit y tiene una frecuencia de trabajo independiente o un preescaler por llamarlo asi, para poder tener una mejor conversion y tiempos requeridos minimos.

Yo lo tengo en una tarjeta entrenadora, el proximo paso sera armarle una tarjeta para poder ensayar en protoboard. Tambien pongo mis traducciones de los modulos.
 
9.0 Modulo conversor analogo a digital

El conversor ADC analogo a digital permite la conversion de una señal analoga de entrada a una representacion binaria de 10 bit. Este dispositivo usa entradas analogas, las cuales se multiplexan y se obtiene un circuito seguro. La salida de la muestra analoga y el hold es conectado a la entrada del conversor. El conversor genera 10 bit, resultado binario sucesivo aproximao y guardando el resultado en los registros ADREL y ADRESH.

El voltaje de referencia de el ADC es selecionado por software el cual puede elegirse internamente o externamente. El modulo ADC puede generar una interrupcion sobre una conversion completa. Esta interrupcion puede ser usada para despertar el sistema de un sleep.



9.1 Configuracion ADC

Cuando se configura y usa el ADC las siguientes funciones deben ser consideradas:

* Configuracion de puertos
* Seleccion del canal
* Seleccion de voltaje referencia ADC
* Reloj fuente para conversion ADC
* Control de interrupcion
* Formatear Resultados

9.1.1 Configuracion de puertos

El ADC puede usar para convertir ambos tipos de señal: analoga y digital. Cuando convierte señales analogas, el pin i/o debera ser configurado para analogo por configuracion en los registros TRIS y ANSEL. Mire la correspondiente seccion para mas información.
NOTA: Voltages analogos en cualquier pin que se define como entrada digital puede causar un drenaje de corriente execiva.

9.1.2 Seleccion de canal

El CHS bit de el registro ADCON0 determina cual canal es conectado a la muestra y el circuito hold.

Cuando se cambian los canales un retardo es necesario antes de iniciar la proxima
conversion. Dirijase a la seccion 9.2 "ADC funcionamiento" para mas información.

9.1.3 ADC voltaje de referencia

El VCFG bit del registro ADCON1 provee un control independiente de el voltaje de
referencia positivo y negativo. El voltaje de referencia positivo puede ser VDD o una fuente de voltaje externa. De igual forma el voltaje de referencia negativo puede escojerse como VSS o una fuente de voltaje externa.

9.1.4 Conversion de reloj

La fuente de la conversion de reloj seleccionable por software por los bits de ADCS de el registro ADCON0. Estos cuatro opciones posibles de reloj.
Fosc/2
Fosc/8
Fosc/32
FRC (Oscilador interno dedicado)

El tiempo para completar la conversion de un bit es definida como TAD. Una completa conversion de 10 bit requiere 11 periodos de TAD como es mostrado en la figura 9.2. Para una conversion correcta la apropiada especificacion de TAD debe ser conocida. Mire los requerimientos para A/D conversion en la seccion 17.0 " especificaciones electricas" para mas información. La tabla 9-1 ofrece ejemplos apropiados de seleccion de reloj en conversiones analogas digitales ADC.

NOTA: A no ser usando el FRC, cualquier cambio en la frecuencia del sistema de reloj de conversiones analogas digitales ADC, puede desfavorablemente afectar el resultado de la conversion analoga digital ADC.

Tabla 9-1

ADC PERIODO DE RELOJ FRECUENCIA DEL DISPOSITIVO
Fosc
Adc fuente ADCS<1:0> 20 Mhz 8 Mhz 4 Mhz 1 Mhz
Fosc/2 00 100ns(2) 250ns(2)
Fosc/8 01 400ns(2) 1.0us(2)
Fosc/32 10 1.6us 4.0us
FRC 11 2-6us 2-6us

Legenda:
2 : Estos valores violan el minimo tiempo requerido de TAD

Figura 9-2


9.1.5 Interrupciones

El modulo ADC permite la capacidad de generar una interrupcion sobre una conversion analogo digital completa. La bandera de interrupcion del ADC es el bit ADIF del registro PIR1.La interrupcion ADC se habilita con el bit ADIE del registro PIE1. El bit ADIF debe ser borrado por software.
Nota: El bit ADIF se pone en uno con una conversion completa, a pesar de todo si la interrupcion no esta habilitada.

La interrupcion puede ser generada mientras el dispositivo este trabajando o mientras este en sleep. Si el dispositivo esta en sleep, la interrupcion despertara al micro. Sobre un levantamiento del sleep la siguiente instruccion al sleep es siempre ejecutada. Si el usuario esta intentando despertar de un sleep y resulta en la siguiente linea de codigo al sleep es porque las interrupcion global esta desabilitada. Si la interrupcion global esta habilitada, la instruccion que se atiende es en el vector de interrupcion.

Por favor revise la seccion 14.3 “interrupciones” para mas información.

9.1.6 Formato del resultado

El resultado de 10 bit de la conversion A/D puede ser suministrado en 2 formatos, justificado a la izquierda o justificado a la derecha. El bit ADFM del registro ADCON0 controla el formato de salida. La figura 9.3 muestra los dos formatos de salida.

Figura 9-3: Fomato resultado de la conversion A/D


9.2 ADC operacion

9.2.1 Iniciando la conversion

Para habilitar el modulo ADC, el bit ADON del registro ADCON0 debera ser puesto en 1. Poniendo a 1 el bit GO/DONE del registro ADCON0 iniciara la conversion analogo a digital.

NOTA: El bit GO/DONE no debera ser puesto en 1 mientras esta trabajando el conversor ADC. Revise la seccion 9.2.6 “Procedimiento para conversion ADC”

9.2.2 Completando una conversion

Cuando la conversion esta completa, el modulo ADC reportara:
• Cero en el bit GO/DONE
• Puesta en uno la bandera ADIF
• Actualizar los registros ADRESH:ADRESL con la nueva información del resultado

9.2.3 Finalizando una conversion
Si la conversion debe ser terminada antes de completarse, el bit GO/DONE debe ser puesto a 0 por software. Los registros ADRESH:ADRESL no se actualizaran con la parte completada, estos mantendran la ultima conversion finalizada completa. Adicinalmente un retardo de 2 tad es requerido antes de que otra adquisicion pueda ser iniciada. Seguido de este retardo una entrada de adquisicion es automaticamente iniciada en el canal seleccionado.

NOTA: Un reset obliga a todos los registros a un estado de reset. Asi el modulo ADC es apagado y cualquier conversion pendiente es terminada.

9.2.4 Operacion del modulo ADC durante un sleep

El modulo ADC puede trabajar durante el sleep. Esto requiere que la fuente de reloj de ADC sea la opcion FRC. Cuando la fuente de reloj FRC es seleccionado el ADC espera una instruccion adicional antes de iniciar la conversion. Esto permite que la instruccion de sleep sea ejecutada lo cual puede reducir el ruido en el sistema durante la conversion. Si la interrupcion del ADC esta habilitada el dispositivo puede despertar del sleep cuando la conversion termine. Si la interrupcion del ADC esta desabilitada, el modulo ADC es apagado despues de que la conversion termina, aunque el bit ADON permanece
en 1.
Cuando la fuente de reloj del ADC es algun otro de FRC, una instruccion de sleep causa que la conversion actual se aborte y el modulo ADC se apague, aunque el bit ADON permanece en 1.

9.2.5 Disparo de eventos especiales.

El ECCP disparo de evento especial permite periodicamente las medidas del ADC sin intervencion de software. Cuando este disparo ocurre el bit GO/DONE es puesto en 1 por hardware y el contador del timer 1 es puesto a 0. Usando este evento de disparo especial no se asegura el tiempo apropiado para el ADC. Es esto responsabilidad del usuario asegurar los tiempos requeridos para el ADC. Revise la seccion 11.0 “captura, comparacion y pwm modulos” para mas información.

9.2.6 Procedimiento para la conversion A/D

Este procedimiento es un ejemplo para usar el ADC y operar el modulo A/D

1. Configurar puertos
- Desabilitar controlador de pin (tris)
- Configurar pin como analogo
2. Configurar modulo ADC
- Seleccionar reloj de conversion ADC
- Configurar voltaje de referencia
- Selecionar canal ADC de entrada
- Seleccionar el resultado de formato
- Prender el modulo ADC
3. Configurar interrupcion ADC (opcional)
- Limpiar la bandera de interrupcion ADC
- Habilitar la interrupcion ADC
- Habilitar la interrupcion por perifericos
- Habilitar las interrupciones globales
4. Esperar el tiempo de adquisicion
5. Iniciar conversion colocando en uno el bit GO/DONE
6. Esperar a que se complete la conversion de algun modo como:
- testeando el bit GO/DONE
- Esperando que a interrupcion ADC se active (si esta habilitada)
7. Leer el resultado de ADC
8. Limpiar la bandera de ADC, si la interrupcion ocurrio.

NOTA: La interrupcion global puede estar desabilitada si el usuario intenta despertar de un sleep y resume el comando de codigo.
Revise la seccion 9.3 “A/D requerimientos de adquisicion”

Ejemplo 9.1 A/D conversion


9.2.7 Definicion de registros ADC

Los siguientes registros son usados en la operacion del ADC.
 
8.0 --MODULO COMPARADOR Y VOLTAJE DE REFERENCIA--

El modulo voltaje de referencia proporciona una referencia de voltaje interna para el uso del comparador Las siguientes son sus caracteristicas disponibles:

.Operacion independiente del comparador
.Seleccion de entrada programable
.Salida del comparador disponible interna o externamente.
.Polaridad de salida programable
.Interrupcion al cambio de estado de la salida
.Un cambio de estado en la salida lo despierta de modo sleep
.Apagada de Pwm
.Habilitacion de contador de pulsos para tmr1 ***
.Sincronización de salida a entrada de reloj de Timer1
.SR Latch***
.Referencia de voltaje programable y fija

NOTA: Solo el comparador 2 puede ser sincronizado con el TMR1

8.1 --DESCRIPCION DEL COMPARADOR--

Un unico comparador es mostrado en la figura 8-1 a lo largo con la relacion de los niveles de entrada analoga y la salida digital. Cuando el voltaje análogo en VIN + es menor que el voltaje análogo en VIN-, la salida del comparator se esta en un nivel digital bajo. Cuando el voltaje análogo en VIN +, es mayor que el voltaje análogo en VIN-, la salida del comparator es un nivel alto digital.

8.2 --CONTROL DEL COMPARADOR--

Cada comparator tiene un control separado y el registro de Configuración:

CM1CON0 para el Comparator 1
CM2CON0 para el Comparator 2.

Además, Comparator C2 tiene un segundo registro de control, CM2CON1, para controlar la interacción con Timer1 y simultáneamente la lectura de ambas salidas del comparator. Los registros CM1CON0 y CM2CON0 (mirar Registros 8-1 y 8-2, espectivamente) contienen el control y avisos de Estado para lo siguiente:

. Habilitacion
. Seleccion de entrada
. Seleccion de voltaje referencia
. Seleccion de salida
. Polaridad de la salida

8.2.1 HABILITACION DEL COMPARADOR

El ajuste del bit CxON del registro CMXCON0 permite la operacion del comparador. El clear del bit CXON inutiliza el comparador causando un consumo minimo de corriente.

8.2.2 SELECCION DE LA ENTRADA DEL COMPARADOR

Los bits CXCH <1:0> del registro CMXCON0 dirige uno de cuatro opciones de entrada analogas al comparador. Entrada Invertida.
Nota:
Al usar CXIN+ y CXIN- como entradas analogas debe ser configurado en los registros ANSEL y ANSELH y su correspondiente TRISX. Tambien deben ser puestos para inutilizar a los conductores de Salida.

8.2.3 SELECCION DE LA REFERENCIA PARA EL COMPARADOR

El ajuste del bit CxR del registro de CMXCON0 dirige una referencia de voltaje interna o asigna un pin de entrada análogo a la entrada de no inversión del comparador. Mirar la Sección 8.10" Referencia de Voltaje del Comparador" para más información sobre el módulo de referencia de voltaje interno.

8.2.4 SELECCION DE LA SALIDA DEL COMPARADOR

La salida del comparator puede ser supervisada por lectura del bit CxOUT del registro de CMXCON0 o el bit de MCXOUT del registro de CM2CON1. Para hacer la salida disponible para una conexión externa, las condiciones siguientes deben ser verdaderas:

-El bit CXOE del registro CMXCON0 debe estar en uno.
-El bit correspondiente al tris debe estar en cero como salida.
-El bit CXON del registro CMxCON0 debe estar en uno

NOTA:
1- El bit de CxOE anula el latch de datos de PUERTO. El ajuste del CxON no tiene ningún impacto sobre datos en el puerto .
2- La salida interna del comparador es cargada con cada ciclo de instruccion A no ser que de otra causa no especificada, no cargue las salidas externas.

8.2.5 POLARIDAD DE LA SALIDA DEL COMPARADOR

La inversión de la salida del comparator es funcionalmente equivalente al cambio de las entradas de comparator. La polaridad de la salida del comparator puede ser invertida poniendo a uno el bit CxPOL del registro de CMXCON0. El clear del bit de CxPOL causa una salida no invertida.

8.3 TIEMPO DE RESPUESTA DEL COMPARADOR

La salida comparator es indeterminada por un periodo de tiempo después del cambio de una fuente de entrada o la selección de un nuevo voltaje de referencia. Este período se menciona como el tiempo de respuesta. El tiempo de respuesta del comparator se diferencia del tiempo de colocar el voltaje de referencia. Por lo tanto, cada una de estas causas deben ser consideradas determinando el tiempo de respuesta total a un cambio de entrada del comparador. Mirar la hoja de datos específicos del Modulo Referencia de Voltaje en la Sección 17.0" Datos específicos Eléctricos " para más detalles.

8.4 INTERRUPCION POR OPERACION DEL COMPARADOR

La interrupcion por comparacion puede ocurrir siempre que haya un cambio de estado en la salida del comparador. Los cambios son reconocidos mediante un circuito de desajuste que consiste en dos LATCH y una puerta OR exclusiva (mirar Figuras(Cifras) 8-2 y 8-3). Cada latch es actualizado con el nivel de salida del comparador, cuando el registro CMxCON0 es leido. Este LATCH conserva el valor hasta la siguiente lectura del registro de CMXCON0 o la presencia de un reset. Otro LATCH del circuito de desajuste es actualizado con cada reloj de sistema Q1. Una condición de desajuste ocurrirá cuando la salida del comparador cambie de estado, es cronometrado por el segundo LATCH sobre el ciclo de reloj de Q1.

En este punto los dos LATCH de desajuste tienen los niveles de salida de que son expuestos por la compuerta or-exclusivo y alimentados al trazado de circuito interrumpir. La condición de desajuste persiste hasta que el registro de CMXCON0 es leído o la salida del comparador vuelva a su estado anterior.

NOTA:
1- Una operacion de escritura en CMxCON0 tambien limpiara la condicion de desajuste porque toda escritura incluye una operacion de lectura.
2- La interrupcion del comparador operara correctamente independiente del estado de CxOE

La interrupcion del comparador se activara por el borde del tiempo de desajuste y no en
el preciso momento en que ocurre el desajuste. Esto quiere decir que la bandera de
interrupcion puede ser reinicializada sin el paso de lectura o escritura en CMxCON0.
Cuando los registros de desajuste son limpiados, una interrupcion ocurrirá sobre la
vuelta del comparator al estado anterior, de otra manera la interrupcion no será generada.
El software tendrá que mantener la información sobre el estado de la salida comparator,
leyendo el registro de CMXCON0, o el registro de CM2CON1, para determinar el cambio real
que ha ocurrido.
El bit CxIF del registro de PIR2 es la bandera de interrupcion del comparador.
Este bit debe ser reinicializado por software . Ya que es también posible escribir 'un 1'
a este registro, y generar una interrupcion.
El bit CxIE del registro PIE2 Y EL PEIE y los bits GIE del registro INTCON deben ser
activados para permitir la interrupcion por comparator. Si cualquiera de estos bits son
limpiados, la interrupcion no ocurrira, aunque el bit CxIF del registro e PIR2 todavía
sea puesto a 1.
NOTA:
1- Si un cambio del registro de CMXCON0 (CxOUT) ocurre cuando una operación de lectura
está siendo ejecutada (el principio del ciclo Q2), entonces el CxIF del registro de PIR2
interrumpe la bandera pero no puede ser ejecutada la interrupcion.
2- Cuando se establece primero el uso de un comparador en particular, el trazado al que
tiende el modulo comparador es inestable hasta esperar el tiempo necesario. Toma aproximadamente 1uS para el uso del comparador entre aparicion de bandera a otra bandera.

8.10 VOLTAJE DE REFERENCIA

El modulo de voltaje de referencia proporciona un voltaje interno para uso del comparador. Entre sus caracteristicas estan:

. Operacion independiente del comparador
. Dos gamas de voltaje de 16 niveles cada una
. Salida swicheada a vss
. Radiometria con VDD
. Referencia fija de 0.6 V

El registro de VRCON (Se registra 8-5) controla el módulo de referencia de voltaje mostrado en la Figura(el Número) 8-8. La fuente de voltaje es seleccionable durante ambos finales de la red de 16 resistencisa de conexión. El bit VRSS del registro VRCON selecciona la fuente de voltaje interna o externa. El PIC16F882/883/884/886/887 permite a la señal de CVREF ser la salida al pin RA2 DE PORTA.

8.10.1 OPERACION INDEPENDIENTE

El voltaje de referencia es independiente de la configuracion del comparador. El bit VREN de VRCON habilitara el voltaje de referencia.

8.10.2 SELECCION DEL VOLTAJE DE SALIDA

El voltaje de referencia tiene 2 gamas con 16 niveles en cada una. La seleccion de gama es controlada por el bit VRR del registro VRCON. Los 16 niveles son configurados con los bit VR <3:0> del registro VRCON. El voltaje de referencia es determinado por la siguiente ecuacion:

VRR 1 (low range):
CVREF = (VR<3:0>/24) x VLADDER

VRR 0 (high range):
CVREF = (VLADDER/4) + (VR<3:0> VLADDER/32)

VLADDER = VDD = or ([VREF+] - [VREF-]) or VREF+

La gama full de VSS A VDD no puede ser realizada(comprendida) debido a la construcción del módulo. Mirar la Figura(el Número) 8-8.

8.10.3 SALIDA SWITCHEADA A VSS

El voltaje de salida CVREF puede ser puesto a Vss para evitar el consumo de electricidad. Se activa con el clear del bit FVREN del registro de VRCON. Esto permite al comparator descubrir un cruce por cero mientras no consume la corriente del módulo adicional CVREF.

8.10.4 RADIOMETRIA CON VDD

El voltaje de referencia es sacado de vdd por lo tanto los cambios de salida de CVREF son flutuaciones en VDD. La exactitud probada absoluta del modulo voltaje de referencia, puede ser encontrada en la seccion 17.0 '' Datos electricos especificos''

8.10.5 REFERENCIA FIJA DE 0.6 V

La referencia de voltaje fija es independiente de VDD, con un voltaje de salida nominal de 0.6V. Pueden permitir esta referencia poniendo el bit FVREN del registro de SRCON 'a 1'. Siempre permiten esta referencia cuando el oscilador HFINTOSC este activo.

8.10.6 PERIODO DE ESTABILIZACION DE VOLTAJE DE REFERENCIA

Cuando el módulo de voltaje referencia fijo es permitido, esto requerirá algún tiempo para su amplificador y asi generar la referencia. El programa de usuario debe incluir una
pequeña rutina de retraso para permitir al módulo el tiempo necesario. Mirar la Sección 17.0 " Datos específicos Eléctricos " para la exigencia de retraso mínima.

8.10.7 SELECCION DEL VOLTAJE DE REFERENCIA

Los multiplexores sobre la salida del módulo de voltaje de referencia permiten la selección del CVREF o de la referencia de voltaje fija para el empleo por el comparador. El ajuste del bit C1VREN del registro VRCON permite a la corriente fluir en el divisor de voltaje CVREF y selecciona el voltaje CVREF para el empleo por C1. El clear del bit C1VREN selecciona el voltaje fijo para el empleo por C1.El ajuste del bit C2VREN del registro VRCONpermite a la corriente fluir en el divisor de voltaje CVREF y selecciona el voltaje CVREF para el empleo por C2. El clear del bit C2VREN selecciona el voltaje fijo para el empleo por C2.

Cuando tanto bits de el C1VREN como C2VREN son limpiados, el flujo corriente en el divisor de voltaje CVREF es incapacitado(inutilizado) reduciendo al mínimo el desagüe de poder del voltaje en el pin.
 
Atrás
Arriba