1 / 24

CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN

INSTITUTO POLITÉCNICO NACIONAL. CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN. ANÁLISIS DEL FUNCIONAMIENTO. DEL RELOJ INTERNO DEL PIC16F84. Ponente. José Luis Oropeza Rodríguez. OBJETIVO.

kareem
Download Presentation

CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN

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. INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN ANÁLISIS DEL FUNCIONAMIENTO DEL RELOJ INTERNO DEL PIC16F84 Ponente José Luis Oropeza Rodríguez

  2. OBJETIVO OBJETIVO. El alumno comprenderá los principales elementos que conforman la estructura interna del reloj o temporizador del PIC16F84. Analizará su principio de funcionamiento y la función del preescalador.

  3. PLANTEAMIENTO DEL PROBLEMA La necesidad de poder conocer la forma en que internamente el parámetro de temporización el PIC16F84 nos permitirá crear aplicaciones que hagan uso de tal elemento, con la eficiencia y robustez que se necesita. Una de las necesidades a cubrir es la de entender el principio de funcionamiento del preescalador, el cual nos permite asignar diferentes internos tanto en el modo TMR0 que en el WDT (Watch Dog Timer).

  4. JUSTIFICACIÓN Las operaciones de pausas, sincronización de tiempo de ejecución y lapsos de tiempo son uno de los criterios necesarios al momento de realizar implantaciones sobre los sistemas basados en microcontroladores. El presente análisis permite conocer la forma en la cual se coadyuvan tales elementos a las aplicaciones del dispositivo.

  5. TIMER 0 Muchos sistemas necesitan un estricto control de los tiempos que duran sus distintas acciones. Esto se puede realizar mediante subrutinas de retardo. Otro procedimiento más eficaz y preciso consiste en la utilización de un timer. Un timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en el que se produce su desbordamiento. Un timer típico se describe de forma simplificada en la siguiente figura. Consiste de un contador ascendente (también podría ser descendente) que, una vez inicializado con un valor, su contenido se incrementa con cada pulso de entrada hasta llegar a su valor máximo b’11….11’, desbordando y volviendo a comenzar desde cero. Carga inicial de contador Contador Ascendente Fin de la cuenta Pulsos de entrada El PIC16F84 dispone de un timer principal denominado Timer 0 o TMR0 que es un contador ascendente de 8 bits. El TMR0 se inicializa con un valor, que se incrementa con cada pulso de entrada hasta su valor máximo b’11111111’; con el siguiente impulso de entrada el contador se desborda pasando a valer b’00000000’, circunstancia que se advierte mediante la activación de una bancera TOIF de fin de cuenta localizada en el registro INTCON

  6. TIMER 0 • Los impulsos aplicados al TMR0 pueden provenir de los pulsos aplicados a la terminal TOCK1 o de la señal de reloj interna (Fosc/4), lo que le permite actuar de dos formas diferentes: • Como contador de los pulsos que le llegan por la terminal RA4/TOCK1 • Como temporizador de tiempos • El actuar de una u otra forma depende del bit TOCS del registro OPTION • Si TOCS=1, el TMR0 actúa como contador • Si TOCS=0, el TMR0actúa como temporizador TMR0 COMO CONTADOR • Cuando el TMR0 trabaja como contador se le introducen los impulsos desde el exterior por la terminal RA4/TOCK1 (TMR0 ExternalClock Input). Su misión es «contar» el número de acontecimientos externos representados por los impulsos que se aplican a la terminal TOCK1. La siguiente figura muestra lo antes mencionado. • El tipo de flanco activo se elige mediante el bit TOSE del registro OPTION • Si TOSE =1, el flanco activo es descendente • Si TOSE =0, el flanco activo es ascendente

  7. DIAGRAMA A BLOQUES DEL TMR0

  8. TMR0 Cuando el TMR0 trabaja como temporizador cuenta los impulsos de Fosc/4. Se usa para determinar intervalos de tiempo concretos. Estos impulsos tienen una duración conocida de un ciclo máquina que es cuatro veces el periodo de la señal de reloj. Para una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1 microsegundo. Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados de 256 que es el valor de desbordamiento. Por ejemplo, para contar cuatro impulsos, se carga el TMR0 con 256-4=252 DIVISOR DE FRECUENCIA En ocasiones es necesario controlar tiempos largos y aumentar la duración de los pulsos que incrementan el TMR0. Para cubrir esta necesidad se dispone de un circuito programable llamado Divisor de frecuencia o Prescaler que, como su nombre lo indica, divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones más largas.

  9. DIVISOR DE FRECUENCIA • En realidad el PIC16F84 dispone de dos temporizadores: • El TMR0, que actúa como temporizador principal • El Watchdog (perro guardián), que vigila que el programa no se «cuelgue». Para ello, cada cierto tiempo comprueba que el programa está ejecutándose normalmente y, si no es así, reinicializa todo el sistema. • El prescalador puede aplicarse a uno de los dos temporizasdores, al TMR0 o al Watchdog. Cuando se asigna al TMR0 los impulsos pasan por el divisor de frecuencia y una vez aumentada su duración se aplican al TMR0.

  10. BITS DE CONFIGURACIÓN DEL TMR0 Para controlar el comportamiento del TMR0 se utilizan algunos bits de los registros OPTION e INTCON. Del registro INTCON El registro INTCON es un registro localizado en la dirección 0Bh del Banco 0 y duplicado en la 8Bh del Banco 1. Contiene los 8 bits que se muestran en la siguiente tabla, de los cuales se utilizará el registro TOIF • TOIF (TMR0 OverflowInterruptFlag bit). Flag de interrupción del TMR0 indica que se ha producido un desbordamiento del Timer 0, que ha pasado de b’11111111’ a b’00000000’ • * TOIF=0. El TMR0 no se ha desbordado • * TOIF=1. El TMR0 se ah desbordado (Debe borrarse por software)

  11. Del registro OPTION • La misión prinicipal del registro OPTION es gobernar el comportamiento del TMR0. Algunos microcontroladores PIC tienen una instrucción denominada también option. • PS2:PS0. (PrescalerRateSelect bits). Bits para seleccionar los valores del Prescaler o rango con el que actúa el dividor de frecuencia. • PSA (PrescalerAssignement bit). Asignación del divisor de frecuencia • PSA=0. El divisor de frecuencia se asigna al TMR0 • PSA=1. El divisor de frecuencia se asigna al Watchdog • TOSE (TMR0 SourceEdgeSelect bit). Selecciona flanco de la señal de entrada del TMR0. • TOSE =0. TMR0 se incrementa en cada flanco ascendente de la señal aplicada a la terminal RA4/TOCKI • TOSE=1. TMR0 se incrementa en cada flanca descendente de la señal aplicada a la terminal Ra4/TOCKI • TOCS (TMR0 ClockSourceSelect bit) Selecciona la fuente de señal del TMR0 • TOCS=0. Pulsos de reloj interno Fosc/4 (TMR0 como temporizador) • TOCS=1. Pulsos introducidos a través de la terminal RA4/TOCKI (TMR0 como contador)

  12. LA GESTIÓN DEL TEMPORIZADOR • El módulo de temporizador / contador tiene las siguientes características: • Un contador / temporizador de 8 bits • De lectura y escritura • Preescalador programable de 8 bits • Selector de reloj interno o externo • Interruptor de sobreflujo de FFh a 00h • Selector para el reloj externo • El modo de temporizador es seleccionado limpiando el bit TOCS (OPTION <5>). En el modo temporizador, el módulo TIMER0 incrementará cada ciclo de instrucción (sin preescalador). Si el registro TMR0 es escrito, el incremento es inhibido para los siguientes dos ciclos de reloj (Fig. 6.2 y 6.3). El usuario puede trabajar sobre esto pero escribiendo un valor ajustado al registro TMR0.

  13. LA GESTIÓN DEL TEMPORIZADOR El modo de contador es seleccionado pero estableciendo el bit TOCS (OPTION <5>). En este modo TMR0 se incrementará ya sea en la caída o bajada de la señal de entrada al pin RA4/TOCK1. La dirección del incremento es determinado por el bit de selección T0, el bit TOSE (OPTION <4>). Limpiando el bit TOSE se selecciona las características de la entrada. El preeescalador es compartido entre el módulo Timer0 y el Watchdog. La asignación del preescalador es asignado por software, por el bit de control PSA (OPTION <3>). Limpiando el bit PSA se asigna el preescalador al módulo del temporizador Timer0. El preescalador no es de lectura o escritura. Cuando el preeescalador es asignado al módulo Timer0, el valor preescalable (1:2, 1:4, ....., 1:256) es seleccionado por software.

  14. LA INTERRUPCIÓN TMR0 La interrupción TMR0 es generada cuando se produce un sobreflujo del registro a contabilizar de FFh a 00h. Este sobreflujo establece el bit T0IF (en INTCON <2>). La interrupción puede ser enmascarada pero limpiando el bit de habilitación T0IE (INTCON <5>). El bit debe ser limpiado por software por el módulo de servicio de interrupción Timer0 antes de rehabilitar esta interrupción. La interrupción TMR0 levanta al microprocesador de la instrucción SLEEP dado que el temporizador esta dashabilitado durante este periodo. USANDO EL TMR0 CON UN RELOJ EXTERNO Cundo un reloj de entrada externo es usado por TMR0, deben de considerarse ciertos requisitos. El requisito del reloj externo es debido a la sincronización de la fase del reloj interno (Tosc). También hay un retardo en el incremento actual del registro TMR0 después de la sincronización.

  15. SINCRONIZACIÓN CON EL RELOJ EXTERNO Cuando ningún preescalador es usado, la entrada del reloj externo es la misma con el preescalador de salida. La sincronización del pin RA4 / TOCK1 con la fase de los relojes internos es realizada pero acompañada de la muestra de la salida del preescalador en los ciclos Q2 y Q4 de los relojes de fase interna. Por lo que, es necesario para el TOCK1 conservarse en alto cuando menos 2 Tosc (un poco más en un circuito RC) y en bajo cuando menos 2Tosc (un poco más en un pequeño retardo en RC). Cuando un preescalador es usado, la entrada del reloj externo es dividida por un tipo de contador asíncrono de tal forma que la salida del preescalador es simétrica. Para el reloj externo conocer el requerimiento de muestreo

  16. SINCRONIZACIÓN CON EL RELOJ EXTERNO Por tanto, es necesario para el TOCK1 tener un período de cuando menos 4Tosc (un poco más para un retardo de RC) dividido por el valor del preeescalador. El único requerimiento en el tiempo de alto a bajo es que no viole el ancho del pulso mínimo que es de 10 ns. RETARDO EN EL INCREMENTO DE TMR0. Dado que la salida del preescalador esta sincronizada con los relojes internos existe un pequeño retardo de tiempo en las oscilaciones del reloj externo que ocurren en el momento en el que el módulo del timer0 es incrementado. La figura 6-5 muestra el retardo de las etapas del reloj externo al incremento del temporizador.

  17. EL PREESCALADOR Un contador de 8 bits se encuentra disponible como un preescalador para el módulo Timer0, o como un postescalador para el temporizador Watchdog (figura 6-6). Nota que existe solo un preescalador disponible el cual es mutuamente exclusivo para los dos temporizadores. Los bits PSA y PS2:PS0 (OPTION <3:0>) determinan la asignación del preescalador y la razón de preescalamiento. Cuando se asigna el preescalador al módulo TIMER0, todas las instrucciones escritas al módulo TIMER0 (por ejemplo, CLRF 1, MOVWF 1, BSF 1, etc.) limpiarán el preescalador. Cuando se asigna al WDT, una instrucción como CLRWDT limpiará el preescalador durante todo el TIMER WATCHDOG. El preescalador no puede ser leído ni escrito de forma directa.

  18. DIAGRAMA DE TIEMPOS DEL TMR0

  19. DIAGRAMA DE TIEMPOS DEL RELOJ EXTERNO DEL TIMER0

  20. DIAGRAMA DE TIEMPOS DEL PREEESCALADOR

  21. EJEMPLOS DE CAMBIOS DEL PREESCALADOR

  22. PARTE EXPERIMENTAL Realice cuando menos dos ejemplos de cada una de las instrucciones del PIC16F8a comentando lo que pretende realizar con cada instrucción y los resultados obtenidos antes y después de la ejecución de la instrucción que se refieran al uso de los temporizadores del PIC. Realice un conjunto de programas para el PIC 16F84 que permita la gestión del preescalador del PIC.

  23. CONCLUSIONES En esta discusión se presento el principio de funcionamiento del Temporizador TMR0 y del Watchdog Timer, analizando cada una de sus características, comprendimos la forma en la cual se llevan a cabo las temporizaciones internas del PIC16F84, y que repercusión tienen estas en la programación del mismo. El uso del preeescalador incrementa de forma significativa los resultados obtenidos hasta estos momentos.

  24. REFERENCIAS BIBLIOGRÁFICAS [1] Manual de operación del PIC16F84 de Microchip

More Related