viernes, 22 de julio de 2016

CCP PIC16F887

CCP

"Universidad Nacional Experimental Polit&#233cnica &#8220Antonio Jos&#233 De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.
El módulo CCP (Captura/Comparación/PWM) es un periférico que le permite medir y controlar diferentes eventos.

CARACTERÍSTICAS

- El modo de captura permite el acceso al estado actual de un registro que cambia su valor constantemente.
- El modo de comparación compara constantemente los valores de dos registros. Uno de ellos es el registro del temporizador Timer1. Este circuito también le permite al usuario activar un evento externo después de que haya expirado una cantidad de tiempo predeterminada.
- PWM (modulación por ancho de pulsos) puede generar señales de frecuencia y de ciclo de trabajo variados por uno o más pines de salida.
- El microcontrolador PIC16F887 dispone de dos módulos CCP – CCP1 y CCP2, ambos son idénticos en modo normal de funcionamiento.
- Una parte central es el registro CCPR1 de 16 bits que consiste en los registros CCPR1L y CCPR1H. Se utiliza para capturar y comparar sus valores con los números almacenados en el registro del temporizador Timer1 (TMR1H y TMR1L).
- El módulo CCP1 puede generar señales PWM de frecuencia y de ciclo de trabajo variados.


MÓDULO CCP1

Una parte central de esta parte es un registro CCPR1 de 16 bits que consiste en registros CCPR1L y CCOR1H. Se utiliza para capturar y comparar sus valores con los números almacenados en el registro del temporizador Timer1 (TMR1H y TMR1L).

REGISTRO CCP1CON (REGISTRO DE CONTROL CCP1)


P1M [1:0]: PWM bits de configuracion de salida
If CCP1M[3:2] = 00, 01, 10:
xx = P1A asignado como entrada para Captura/Comparación; P1B, P1C, P1D asignados a sus respectivos puertos
If CCP1M[3:2] = 11:
00 = Salida Unica; modulado por P1A; P1B, P1C, P1D asignados a sus puertos respectivos
01 = salida en directo Puente completo; modualdo por P1D; P1A activo; P1B, P1C inactivos
10 = salida medio puente; modulado por P1A, P1B con control de banda muerta; P1C, P1D asignados a sus respectivos puertos
11 = salida puente completo inversa; modulado por P1B; P1C activo; P1A, P1D inactivos

DC1B[1:0]: PWM bits menos significativos del ciclo de trabajo
modo Captura:
sin usar.
modo Comparación:
sin usar.
modo PWM:
Estos bits son los menos significativos del ciclo de trabajo del PWM. Los 8 bits mas significativos se encuentran en el registro CCPR1L.

CCP1M[3:0]: bits para selecionar el modo del ECCP
0000 = CAPTURA/COMPARACIÓN/PWM apagados (reinicia modulo ECCP)
0001 = sin usar (reservado)
0010 = modo COMPARACIÓN, activa salida cuando hay coinidencia (el bit CCP1IF se activa)
0011 = sin usar (reservado)
0100 = modo Captura, cada flanco de bajada
0101 = modo Captura, cada flanco de subida
0110 = modo Captura, cada 4to flanco de subida
0111 = modo Captura, cada 16avo flanco de subida
1000 = modo Comparación, activa salida cuando hay coincidencia (el bit CCP1IF se activa)
1001 = modo Comparación, limpia la salida cuando hay coincidencia (el bit CCP1IF se activa)
1010 = modo Comparación, genera interrupción de software cuando hay coincidencia (el bit CCP1IF se activa, el pin CCP1 no se ve afectado)
1011 = modo Comparación, activa evento especial (el bit CCP1IF se activa; CCP1 reinicia TMR1 o TMR2
1100 = modo PWM; P1A, P1C activos-alta; P1B, P1D activos-alta
1101 = modo PWM; P1A, P1C activos-alta; P1B, P1D activos-baja
1110 = modo PWM; P1A, P1C activos-baja; P1B, P1D activos-alta
1111 = modo PWM; P1A, P1C activos-baja; P1B, P1D activos-baja


CCP1 EN MODO DE COMPARACIÓN


En este modo, el valor almacenado en el registro CCP1 se compara constantemente al valor almacenado en el registro del temporizador Timer1. Al igualarse los valores, el estado lógico en el pin de salida puede ser cambiado, lo que depende del estado de bitsen el registro de control (CCP1M3 - CCP1M0). El bit de bandera CCP1IF se pone a uno simultáneamente.

Para poner el módulo CCP1 en este modo de funcionamiento, se deben cumplir dos condiciones:
- El pin RC2/CCP1 debe estar configurado como salida.
- El temporizador Timer1 debe estar sincronizado con el relojinterno.

MÓDULO CCP1 EN MODO DE CAPTURA


En este modo, el registro del temporizador Timer1 (que consiste en los TMR1H y TMR1L) se copia al registro CCP1 (que consiste en los CCPR1H y CCPR1L) en las siguientes situaciones:
- Cada flanco ascendente (1 -> 0) en el pin RC2/CCP
- Cada flanco descendente (0 -> 1) en el pin RC2/CCP1
- Cada cuarto flanco ascendente (0 -> 1) en el pin RC2/CCP1
- Cada decimosexto flanco descendente (0 -> 1) en el pin RC2/CCP1.
- Una combinación de cuatro bits (CCP1M3 - CCP1M0) del registro de control determina cuál de estos eventos causará transmisión de dato de 16 bits. Además, se deben cumplir los siguientes requisitos:
El pin RC2/CCP1 debe estar configurado como entrada; y
El Timer1 debe funcionar como temporizador o contador síncrono.

El CCP1 tambien trabaja en modo

PWM

el cual será explicado en otra sección de este blog


MÓDULO CCP2


Con exclusión de los nombres diferentes de los registros y delos bits, este módulo es una muy buena copia del módulo CCP1 puesto en modo normal. La única diferencia significativa entre ellos es el funcionamiento en modo de comparación del módulo CCP2; La diferencia se refiere a la señal de reinicio del temporizador T1. Concretamente, si el convertidor A/D está habilitado, al igualarse los valores de los registros TMR1 y CCPR2, la señal de reinicio del temporizador T1 iniciará automáticamente la conversión A/D. Similar al módulo anterior, este circuito también está bajo el control de los bits del registro de control. Estavez es el registro CCP2CON.


DC2B1, DC2B0- PWM Duty Cycle Least Significant bits (bits menos significativos del ciclo de trabajo de PWM) - Se utilizan sólo en modo PWM y representan dos bits menos significativos de un númerode 10 bits. Este número determina el ciclo de trabajo de la señal PWM. Los demás 8 bits se almacenan en el registro CCPR2L.
CCP2M3 - CCP2M2- CCP2M1 - CCP2M0- CCP2 Mode Select bits (bits de selección de modo del módulo CCP2) determina el modo del módulo CCP2 según la siguiente tabla.



EJEMPLOS PARA DESCARGAR:


ModoCamptura.asm
ModoCaptura(proteus)
ModoCaptura.hex

ModoComparacion.asm
ModoComparacion.hex
ModoComparacion(proteus)
Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com

Modo PWM del CCP del PIC16F887

PWM

"Universidad Nacional Experimental Politécnica “Antonio José De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.

Las señales de frecuencia y de ciclo de trabajo variados tienen una amplia gama de aplicaciones en automatización. Un ejemplo típico es un circuito de control de potencia. Si un cero lógico (0) indica un interruptor abierto y ununo lógico (1) indica un interruptor cerrado, la potencia eléctrica que se transmite a los consumidores será directamente proporcional a la duración del pulso. Esta relación se le denomina Ciclo de Trabajo. El otro ejemplo, común en la práctica, es el uso de señales PWM en un circuito para generar señales de forma de onda arbitraria como una onda sinusoidal. Los dispositivos que funcionan según este principio se utilizan con frecuencia en la práctica como variadores de frecuencia ajustable que controlan motores eléctricos (velocidad, aceleración, desaceleración etc.)


PERÍODO DEL PWM


El período de pulso de salida (T) se determina por el registro PR2 del temporizador Timer2. El período de PWM se puede calcular por la siguiente ecuación:

Período PWM = (PR2 +1) * 4Tosc * Valor de pre-escala del Timer2


Si el período de PWM (T) es conocido, es fácil determinar la frecuencia de señal F, porque estos dos valores están relacionados por la ecuación:
F=1/T

CICLO DE TRABAJO DE PWM


El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. Expresado matemáticamente: D=t/T donde D es el ciclo de trabajo, t es el tiempo en que la función es positiva (ancho del pulso) y T es el período de la función
El ciclo de trabajo de PWM se especifica al utilizar en total 10 bits: los ocho bits más significativos del registro CCPR1L y los dos bits menos significativos adicionales del registro CCP1CON (DC1B1 y DC1B0). El resultado es un número de 10 bits dado por la siguiente fórmula:

Ancho de pulsos = (CCPR1L,DC1B1,DC1B0) * Tosc * Valor de pre-escala del Timer2

La siguiente tabla muestra cómo generar las señales PWM de diferentes frecuencias cuando el microcontrolador utiliza un cristal de cuarzo de 20 MHz (Tosc=50nS).



RESOLUCIÓN DE PWM


La resolución determina el numero de ciclos disponibles dado por un periodo. Una señal PWM no es nada más que una secuencia de pulsos que varían su ciclo de trabajo. Para una frecuencia específica (número de pulsos por segundo), hay un número limitado de combinaciones de ciclos de trabajo. Este número representa una resolución medida en bits. Por ejemplo, si una resolución es de 10 bits estarán disponibles 1024 ciclos de trabajo discretos; si una resolución es de 8 bits estarán disponibles 256 ciclos de trabajo disretos etc. En este microcontrolador la resolución es determinada por el registro PR2. El máximo valor se obtiene al usar el número FFh. El valor de la resolución puede calcularse mediante la siguiente formula:


Es de vital importancia señalar que si el valor de ancho de pulso es mayor que el periodo asignado al PWM, este permanecerá sin cambio.


REGISTRO DE PWM (PWM1CON)


STRC PWM Restart Enable bit (Bit de habilitación del reinicio automático del PWM):
1 - Después de un apagado automático, el módulo PWM se reinicia automáticamente, y el bit ECCPASE del registro ECCPAS se pone a cero.
0 - Para iciar el módulo PWM después de un apagado automático,el bit ECCPASE debe ponerse a cero por software.
PDC6 - PDC0 PWM Delay Count bits (Bits de configuración del tiempo muerto en el modo PWM)- El número binario de 7 dígitos determina el número de ciclos de instrucciones añadidas como tiempo muerto al activar los pines de entrada PWM.


REGISTRO DE CONTROL DE DIRECCIÓN DE PULSO (PSTRCON)


STRSYNC - Steering Sync bit(bit de sincronización de dirección) determina el momento de la dirección de los pulsos de PWM:
1 - La dirección ocurre después de que el registro PSTRCON haya sido cambiado, sólo si se ha completado la forma de onda del PWM.
0 - La dirección ocurre después de que el registro PSTRCON haya sido cambiado. La señal PWM en la salida del pin será cambiada inmediatamente sin reparar en si el ciclo anterior ha sido completado. Este procedimiento es útil cuando es necesario detener la transmisión de una señal PWM del pin.
STRD - Steering Enable bit D (bit D de habilitación de dirección) determina la función del pin P1D.
1 - El pin P1D tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1.
0 - Pin está configurado como entrada/salida general del puerto PORTD.
STRC Steering Enable bit C(bit C de habilitación de dirección) determina la función del pin P1C.
1 - El pin P1C tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1.
0 - Pin está configurado como entrada/salida general del puerto PORTD.
STRB - Steering Enable bit B(bit B de habilitación de dirección) determina la función del pin P1B.
1 - El pin P1B tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1.
0 - Pin está configurado como entrada/salida general del puerto PORTD.
STRA - Steering Enable bit A(bit A de habilitación de dirección) determina la función del pin P1A.
1 - El pin P1A tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1.
0 - Pin está configurado como entrada/salida general del puerto PORTC.

REGISTRO DE CONTROL MEJORADO DE CAPTURA / comparación / PWM apagado automático (ECCPAS)


ECCPASE - ECCP Auto-Shutdown Event Status bit(bit de estado del apagado automático) indica si ha ocurrido el apagado automático del módulo CCP (estado de Apagado):
1 - Módulo CCP está en estado de Apagado.
0 - Módulo CCP funciona normalmente.
ECCPAS2 - ECCPAS0 - ECCP Auto-Shutdown Source Select bits(Bits de selección de la fuente de apagado automático) selecciona la fuente de apagado automático.




PSSAC1, PSSAC0 - Pins P1A, P1C Shutdown State Control bits(Bits de configuración de los pines P1A y P1C en modo de apagado) define el estado lógico de los pines P1A y P1C cuando el módulo CCP está en el estado de apagado.



PSSBD1, PSSBD0 - Pins P1B, P1D Shutdown State Control bits(Bits de configuración de los pines P1B y P1D en modo de apagado) define
el estado lógico de los pines P1B y P1D cuando el módulo CCP está en el estado de apagado.


¿Cómo configurar e iniciar el módulo CCP1 para funcionar en modo PWM?


Para configurar e iniciar el módulo CCP1 para funcionar en modo PWM, siga los siguientes pasos:
- Deshabilitar el pin de salida del CCP1. Deberá estar configurado como entrada.
- Seleccionar el período de señal PWM al introducir el valor en el registro PR2.
- Configurar el módulo CCP1 para funcionar en modo PWM al combinar los bits del registro CCP1CON.
- Ajustar el ciclo de trabajo de señal PWM al introducir el valor en el registro CCPR1L y al utilizar los bits DC1B1 y DC1B0 del registro CCP1CON.

- Configurar e iniciar el temporizador Timer2:

- Poner a cero el bit de bandera de interrupción TMR2IF en el registro PIR1.
- Ajustar el valor de división de frecuencia del temporizador Timer2 por los bits T2CKPS1 y T2CKPS0 del registro T2CON.
- Iniciar el temporizador Timer2 al poner a uno el bit TMR2ON del registro T2CON.
- Habilitar los pines de salida de PWM después de que haya sido acabado un ciclo de PWM.
- Esperar el desbordamiento del temporizador Timer2 (el bit TMR2IF del registro PIR1 se pone a uno).
- Configurar el pin apropiado como salida al poner a cero el bit en el registro TRIS.



EJEMPLOS PARA DESCARGAR:



PWM.asm
PWM.hex
PWM(Proteus)

Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com

jueves, 21 de julio de 2016

Timer1 PIC16F887

Timer1

"Universidad Nacional Experimental Politécnica Antonio José De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.

El timer1 es uno de los temporizadores que posee el pic16f887 que sirve para manejar del modo más eficiente todas las operaciones que involucran al tiempo y al contaje.


CARACTERÍSTICAS


-Es un contador/temporizador de 16 bits
-Leible/ Escribible
-Selección de reloj interno o externo
-Posee un pre-escalador de 3 bits (divisor de frecuencia)
-Oscilador LP opcional
-Funcionamiento síncrono o asíncrono
-Interrupción opcional de desbordamiento de FFFFh a 0000h
-Fuente de reloj para modulo de captura/comparación


FUNCIONAMIENTO


-Contador
Síncrono o Asíncrono
-Temporizador

REGISTROS DE CONTROL



T1GINV- Timer1 Gate Invert bit (Bit inversor de la compuerta del temporizador1) se comporta como un inversor del estado lógico en la compuerta formada por el pin T1G o la salida (C2OUT) del comparador C2. Este bit habilita al temporizador para con par los pulsos cuando la compuerta esté a alto o a bajo.
1 - Temporizador 1 cuenta los pulsos cuando el pin T1G o el bit C2OUT estén a alto (1).
0 - Temporizador 1 cuenta los pulsos cuando el pin T1G o el bit C2OUT estén a bajo (0).

TMR1GE- Timer1 Gate Enable bit (Bit de habilitación de la compuerta del temporizador1) determina si la compuerta formada por elpin T1G o salida del comparador C2 (C2OUT) estará activa o no. Este bit funciona sólo en caso de que el temporizador Timer1 esté encendido (el bit TMR1ON = 1). De lo contrario, este bit se ignora.
1 - Temporizador Timer1 está encendido sólo si la compuerta no está activa.
0 - Compuerta no afecta al temporizador Timer1.

T1CKPS1, T1CKPS0- Timer1 Input Clock Prescale Select bits (Bits de selección del preescalador de señal de reloj del Temporizador1) determina el valor del divisor de frecuen cias asignada al temporizador Timer1.


T1OSCEN- LP Oscillator Enable Control bit (bit de habilitación del oscilador LP del Timer1)
1 - Oscilador LP está habilitado para el reloj del Timer1 (oscilador de bajo consumo y de frecuencia de 32.768 kHz)
0 - Oscilador LP está apagado.

T1SYNC- Timer1 External Clock Input Synchronization Control bit (Bit de control de sincronización de la señal de entrada) habilita la sincronización de la entrada del oscilador LP o de la entradadel pin T1CKI con el reloj interno del microcontrolador. Este bit se ignora al contar los pulsos desde el oscilador principal (el bit TMR1CS = 0).
1 - Entrada de reloj externa no está sincronizada.
0 - Entrada de reloj externa está sincronizada.

TMR1CS- Timer TMR1 Clock Source Select bit (bit de selección de la fuente de reloj del temporizador Timer1)
1 - Cuenta los pulsos por el pin T1CKI (por el flanco ascendente 0-1)
0 - Cuenta los pulsos del reloj interno del microcontrolador

TMR1ON- Timer1 On bit (TMR activo, hace entrar o no en funcionamiento el Timer1).
1 - Habilita el temporizador Timer1.
0 - Deshabilita el temporizador Timer1.

Aspectos a tener en cuenta al momento de poner en funcionamiento el Timer1:

- Como no es posible apagar el pre-escalador, su valor debe estar ajustado a los bits T1CKPS1 y T1CKPS0 del registro T1CON.
- Seleccionar el modo por el bit TMR1CS del registro T1CON. (TMR1CS: 0=la fuente de reloj es oscilador de cuarzo interno, 1= la fuente de reloj es oscilador de cuarzo externo).
- Al configurar el bit T1OSCEN del mismo registro, el oscilador está habilitado y los registros TMR1H y TMR1L se incrementan con cada pulso de reloj. Al poner este bit a 0, se detiene el conteo.
- Al reiniciar los registros del contador o al escribir en ellos, se reinicia el pre-escalador.
- Al llenar ambos registros del temporizador, se configura labandera TMR1IF y el conteo empieza desde cero.



OSCILADOR EXTERNO


Además de un Oscilador interno este microcontrolador posee uno externo de cuarzo LP completamente independiente, capaz de funcionar en el modo de reposo. Simplemente, un circuito anteriormente separado ahora está integrado en el microcontrolador y asignado al temporizador Timer1. El oscilador está habilitado al poner a 1 el bit T1OSCEN del registro T1CON. El bit TMR1CS del mismo registro se utiliza para habilitar que el temporizador Timer1 utilice secuencias de pulsos de ese oscilador.
En la siguiente imagen se puede observar la configuración para el uso de este recurso.


TIMER1 EN MODO CONTADOR


El temporizador Timer1 se pone a funcionar como un contador al poner a 1 el bit TMR1CS. Este bit cuenta los pulsos llevados al pin RC0/T1CKI y se incrementa en el flanco ascendente de la entrada del reloj externo T1CKI. Si el bit de control T1SYNC del registro T1CON se pone a 0, las entradas del reloj externo se sincronizarán en su camino al temporizador Timer1.
Al poner en modo de reposo el microcontrolador que funciona de esta manera, los registros del temporizador Timer1H y TMR1L no serán incrementados aunque los pulsos de reloj aparezcan en los pines de entrada. Como el reloj interno del microcontrolador no funciona en este modo, no hay entradas de reloj que se utilicen para la sincronización. De todas formas, el pre-escalador sigue funcionando siempre que haya pulsos de reloj en los pines, porque es un simple divisor de frecuencias.



TIMER1 EN MODO TEMPORIZADOR


Trabajando en modo temporizador el valor concatenado TMR1H:TMR1L se incrementa con cada ciclo de instrucción (FOSC/4). Para seleccionar este modo, es necesario poner a 0 el bit TMR1CS. Después de eso, el registro de 16 bits será incrementado con cada pulso generado por el oscilador interno. Si se utiliza el cristal de cuarzo de 4 MHZ, el registro será incrementado cada microsegundo. El bit T1SYNC no tiene efecto desde el reloj interno; ya que siempre es síncrono. El oscilador de reloj del microcontrolador no funciona durante el modo de reposo así que el desbordamiento en el registro del temporizador no puede causar interrupción.



EJEMPLOS A DESCARGAR:


TemporizadorTimer1.hex
TemporizadorTimer1.asm
TemporizadorTimer1(Proteus)

ContadorTimer1.asm
ContadorTimer1.hex
ContadorTimer1(Proteus)


VIDEO EXPLICATIVO TIMER1 EN MODO CONTADOR:



Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com

miércoles, 20 de julio de 2016

Timer2 PIC16F887

Timer2

"Universidad Nacional Experimental Politécnica “Antonio José De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.

CARACTERÍSTICAS

-Es un temporizador de 8 bits
-Los registros TMR y PR2 son de lectura y escritura.
-Cuenta con un registro PR2 que marca el valor máximo que puede alcanzar la cuenta del registro TMR2
-pPosee un pre y post-escalador


REGISTRO T2CON (REGISTRO DE CONTROL TIMER2)



TOUTPS3 - TOUTPS3 - TOUTPS3 TOUTPS0- Timer2 Output Postcaler Select bits (bits de selección del rango del divisor del post-escalador para el Timer2) se utilizan para determinar el valor del post-escalador segúnla siguiente tabla:


TMR2ON Timer2 On bit- (bit de activación del TIMR2) hace entrar en funcionamiento el temporizador Timer2.
1 - Habilita el funcionamiento del Timer2.
0 - Deshabilita el funcionamiento del Timer2.
T2CKPS1, T2CKPS0- Timer2 Clock Prescaler bits (selección del rango del divisor del preescalador del Timer2) determina el valor del divisor de frecuencias segun la siguiente tabla:


Al utilizar el temporizador Timer2 hay que saber varios detalles relacionados con sus registros:

- En el momento de encender una fuente de alimentación, el registro PR2 contiene el valor FFh.
- Tanto el pre-escalador como el post-escalador se borran al escribir en el registro TMR2.
- Tanto el pre-escalador como el post-escalador se borran al escribir en el registro T2CON.
- Al producirse cualquier reinicio, como puede anticiparse,tanto el pre-escalador como el post-escalador se borran.
- Los módulos CCP pueden funcionar en muchos modos diferentes, por lo que se consideran los más complicados. Si usted intenta analizar su funcionamiento a base de tablas que describen las funciones de bits, comprenderá mejor de lo qué le se esta hablando. Si utiliza alguno de los módulos CCP, primero seleccione el modo que necesita, analice la figura apropiada y entonces póngase a modificar los bits de registros.

EJEMPLOS A DESCARGAR:


TemporizadorTimer2.asm
TemporizadorTimer2.hex
TemporizadorTimer2(Proteus)
Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com

Timer0 PIC16F887

Timer0

"Universidad Nacional Experimental Politécnica Antonio José De Sucre”.
UNEXPO — V.R. “Luis Caballero Mejías”.

CARACTERISTICAS


- Temporizador/contador de 8 bits.
- Pre-escalador de 8 bits (lo comparte con el temporizador perro guardián WDT).
- Fuente de reloj interna o externa programable.
- Generación de interrupción por desbordamiento.
- Selección del flanco de reloj externo programable.


REGISTRO0 DEL TIMER0(OPTION_REG)


RBPU - PORTB Pull-up enable bit (resistencia Pull Up del puerto PORTB)
0 - Resistencias pull-up del puerto PORTB están deshabilitadas.
1 - Pines del puerto PORTB pueden estar conectados a las resistencias pull-up.
INTEDG - Interrupt Edge Select bit (bit selector de flanco activo de la interrupción externa)
0 - Interrupción por flanco ascendente en el pin INT (0-1).
1 - Interrupción por flanco descendente en el pin INT (1-0).
T0CS - TMR0 Clock Select bit (bit selector de tipo de reloj para el Timer0)
0 - Los pulsos se llevan a la entrada del temporizador/contador Timer0 por el pin RA4.
1 - El temporizador utiliza los pulsos de reloj internos (Fosc/4).
T0SE - TMR0 Source Edge Select bit (bit selector de tipo de flanco)
0 - Incrementa en flanco descendente en el pin TMR0.
1 - Incrementa en flanco ascendente en el pin TMR0.
PSA - Prescaler Assignment bit (bit de asignación del pre-escalador)
0 - Pre-escalador se le asigna al WDT.
1 - Pre-escalador se le asigna al temporizador/contador Timer0.
PS2, PS1, PS0 - Prescaler Rate Select bit (bit selector del valor del divisor de frecuencias)



MODO CONTADOR


El modo contador en el timer 0 consiste en realizar un conteo automático; esto puede ser útil en muchas situaciones en las que se requiera realizar una acción especifica después de cierta cantidad de eventos externos. El contado automático se caracteriza porque suma al registro timer 0 de uno en uno de forma ascendente y hasta llegar a un valor máximo de 256. cabe destacar que el timer no posee la capacidad de contar de manera regresiva, y puede iniciar la cuenta desde cualquier valor menor a 255, siempre y cuando se halla configurado previamente, de lo contrario, siempre iniciara la cuenta desde 0. Luego de que el contador llega a 256 el registro se reinicia, volviendo a 0; en este proceso de reinicio se activa una bandera o bit que indica que el desborde o cuenta máxima ha sucedido, este bit llamado T0IF se encuentra en el registro INTCON de interrupciones el cual se encuentra en el banco 0 de la memoria del pic.



Para activar el modo contador de este timer se debe configurar el bit 5 del OPTION_REG llamado T0CS en 1 ya que establece el modo de operación del timer como contador. Para determinar cuando el contador aumentara la cuenta se debe hacer uso de la pata externa del pic RA4/T0CKI; configurando la misma como entrada mediante el registro TRISA, esto se debe a que mediante esta pata el pic detecta los cambios y por cada cambio que ocurra en ella aumentara a su vez el valor en el contador.
Cuando se habla de cambios, se refiere a la variación del voltaje que percibe la pata del pic (estados), cuando la pata se encuentra en alta (a este le llega 5v directamente), y cuando la pata se encuentra en baja (este tiene 0v conectado), estos son los 2 casos que se presentan como estados. Por lo tanto cuando se cambia de un estado bajo a uno alto el pic lo reconoce y le indica al contador aumentar su cuenta.
¿Pero que sucede si el pic le indica que aumente la cuenta cuando cambia de baja a alta y también cuando cambie de alta a baja? ¿Es posible?: no puesto que el contador simplemente no funcionaria, es por eso que se debe configurar el bit 4 llamado T0SE del registro OPTION-REG, el cual especifica si la cuenta es realizada en flanco de subida (0 lógico) o de bajada (1 lógico). Cuando hay un cambo de baja a alta se conoce como flanco de subida y cuando hay un cambo de alta a baja se conoce como flanco de bajada.


MODO TEMPORIZADOR



El modo temporizador consiste en tener un conteo automático, pero a diferencia del modo contador, el no depende de una frecuencia o evento externo, ya que este utiliza la frecuencia interna del pic. El conteo sucede de la misma manera que en el modo contador, este tampoco puede contar de manera regresiva, y puede iniciar la cuenta desde cualquier valor menor a 255, siempre y cuando se halla configurado previamente, de lo contrario, siempre iniciara la cuenta desde 0.
Luego de que la cuenta llega al máximo que es 256 el registro se reinicia, volviendo a 0, en este proceso de reinicio se activa una bandera o bit que nos indica que el desborde o cuenta máxima ha sucedido, este bit llamado T0IF se encuentra en el registro INTCON de interrupciones el cual se encuentra en el banco 0 de la memoria del pic como se mostró anteriormente.
Para configurar el timer0 en modo temporizador se deben manipular simplemente 4 bits del registro de configuración del timer. Estos son los bits 5, 2, 1 y 0 del registro OPTION-REG, ubicado en el banco 1 de la memoria del pic. Colocando T0CS en 0.


EN RESUMEN



Paso 1: Seleccionar el modo:
El modo de temporizador se selecciona por el bit TOSC del registro OPTION_REG (TOSC: 0=temporizador, 1=contador).
Cuando se asigna el pre-escalador al temporizador/contador se debe poner a cero el bit PSA del registro OPTION_ REG. El valor del divisor de frecuencias se configura al utilizar los bits PS2-PS0 del mismo registro.
Al utilizar una interrupción, los bits GIE y TMR0IE del registro INTCON deben estar a uno.

Paso 2: Medir y contar
Para medir tiempo:
Reiniciar el registro TMR0 o escribir un valor conocido en él.
El tiempo transcurrido(en microsegundos al utilizar el oscilador de 4MHz) se mide al leer el registro TMR0.
El bit de bandera TMR0IF del registro INTCON se pone a uno automáticamente siempre que ocurra el desbordamiento del registro TMR0. Si está habilitada, ocurre una interrupción.
Para contar pulsos:
La polaridad de pulsos a contar en el pin RA4 se selecciona porel bit TOSE del registro OPTION_REG (T0SE: 0=pulsos positivos, 1=pulsos negativos).
Varios pulsos se pueden leer del registro TMR0. El pre-escalador y la interrupción se utilizan de la misma forma que en el modo de temporizador.

EJEMPLOS PARA DESCARGAR:


ContadorExternoTimer0.hex
ContadorInternoTimer0.hex
TemporizadorTimer0.hex

TemporizadorTimer0.asm
ContadorInternoTimer0.asm
ContadorExternoTimer0.asm

ContadorExternoTimer0(proteus)
ContadorInternoTimer0(proteus)
TemporizadorTimer0(Proteus)
Realizado por:
Fedra Castillo exp: 2012103318
Luis Bello exp: 2012103081
Lismar Cardier exp: 2012103001
Contactanos: ana.20753@gmail.com