Propuesta para la configuración microcontrolador PIC18F2550
básica
del
Temporizador
1
del
Por: I.I.E. Miguel Montiel Martínez
[email protected] Resumen Este articulo trata sobre la estructura y configuración esencial del temporizador/contador 1 de un microcontrolador PIC18F2550. Como primer punto, se aborda el concepto de contador y su aplicación inmediata, así como las operaciones con las que se cuenta, enseguida, el punto 2 describe brevemente el funcionamiento del temporizador 1 y esquematiza la técnica de poleo para evaluar el conteo del tiempo; en el apartado 3, son mostrados los registros que intervienen en la configuración del temporizador 1; con el fin de mostrar las ecuaciones que intervienen en el cálculo del temporizado, se coloca el apartado 4, y finalmente en el punto 5, es diseñado un ejemplo de aplicación con fundamento en todos los puntos anteriores, a fin de establecer una propuesta de configuración para el cálculo en los tiempo de retardo de un microcontrolador PIC18F2550 a través de un temporizador de 16 bits.
Palabras clave: PIC18F2550, temporizador, retardo.
Introducción Tanto en la antigüedad como hoy en día, el tiempo y su medición siempre han sido de gran importancia para el ser humano y este hecho se ve reflejado en la religión 1, la industria, el comercio y en la vida cotidiana, ya que en el desarrollo humano, suceden acontecimientos y modos de pensar que forman la historia del mundo(Cabanes, 2005); en consecuencia, es imprescindible que la cuenta del tiempo sea lo más exacta posible. En el ámbito de la electrónica, se han desarrollado componentes que contabilizan una serie de pulsos generados por un cristal de cuarzo, de esta manera, el dispositivo en cuestión, acumula tiempo. Estos elementos reciben el nombre de Temporizadores. Los temporizadores, pueden ser elementos discretos, es decir, son fabricados como circuitos integrados de propósito específico o formar parte de otro componente con una mayor capacidad de integración, tal como lo es un microcontrolador.
1. Los temporizadores del microcontrolador PIC18F2550 El microcontrolador PIC18F2550, al ser un procesador de 8 bits de gama alta, cuenta con tres temporizadores; éstos periféricos, permiten que un programador de firmware para microcontroladores, contabilice eventos externos a través de una interfaz, o que por medio del reloj interno del microcontrolador, se generen tiempos exactos, y esto es por que, los temporizadores con los que cuenta el microcontrolador PIC18F2550, son circuitos digitales denominados contadores, cuyo valor interno, cambia conforme un pulso de reloj (tick) entra en él, ver la Ilustración 1: Esquema de un contador genérico
Ilustración 1: Esquema de un contador genérico Fuente: Microchip (2008) Para generar un retardo cuya duración en tiempo se encuentre bien definido, el programador debe tener en cuenta lo siguiente: •
El tiempo deseado.
•
La frecuencia de oscilación seleccionada para el microcontrolador.
Los temporizadores del microcontrolador PIC18F2550, cuentan con un bit asociado al cual, el fabricante le denomina Bandera de desborde. La función de la bandera de desborde es cambiar a estado alto cuando el contador llega a su valor máximo, y justo antes de que al siguiente ciclo de reloj, el valor almacenado en el mismo se reinicie.
1 Chronos era la personificación del tiempo, de acuerdo a la mitología griega y se encargaba de conducir la rotación de los cielos y el eterno paso del tiempo (Rose & Rose, H. J., 1928).
Las operaciones que se permiten realizar con los registros de conteo de los temporizadores son: •
Conteo.
•
Carga.
•
Encendido/Apagado (Arranque/Paro).
•
Reset o carga con cero.
2. El temporizador 1 El temporizador 1, es un básicamente un contador cuya longitud de palabra es de 16 bits, solo que éste, no puede escribirse de una sola vez, hay que escribir los registros en un orden definido, ya que el temporizador está formado por dos registros: •
El registro TRM1L que corresponde a la parte menos significativa
•
El registro TRM1H que corresponde a la parte más significativa
Este temporizador además, permite al programador configurar un divisor de frecuencias, para generar retardos de tiempo aún mas prologados. Integrado a este temporizador, se tiene una bandera (bit que se ajusta a uno) que indica el fin y reinicio del conteo, denominando a este evento
Ilustración 2: Poleo Timer 1 desborde. Puede utilizarse esta bandera para indicar el fin retardo, siempre y cuando el estado de ésta, se encuentre bajo supervisión, es decir, en modo de poleo. Este modo se muestra en la Ilustración 2: Poleo Timer 1. Fuente: (Mazidi, McKinlay, & Causey, 2008)
3. Registros implicados con el Timer1 En la Tabla 1: Registros asociados al temporizador 1, son indicados los registros necesarios para configurar el temporizador 1, haciendo notar que los nombres de bits sombreados, no intervienen para este esquema.
Nombre INTCON
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
GIE/GIEH
PEIE/GIEL
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
PIR1
-
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
PIE1
-
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
TMR1L
Valores a cargar en el registro menos significativo del temporizador
TMR1H
Valores a cargar en el registro más significativo del temporizador
T1CON IPR1
RD16
T1RUN
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
-
ADIP
RCIP
TXIP
SSPIP
CCP1IP
TMR2IP
TMR1IP
Tabla 1: Registros asociados al temporizador 1
Fuente:(Microchip, 2009) Se puede mencionar que los registros para una rápida configuración de comportamiento de temporización, se realiza a través de los registros T1CON, TMR1L y TMR1H. Los registros INTCON, PIR1, PIE1 e IPR, permiten la configuración y funcionamiento de interrupciones generadas por el temporizador 1.
4. Cálculo del tiempo de retardo Conforme a la Tabla 1: Registros asociados al temporizador 1, se visualiza que el registro contiene los bits denominados T1CKPS1 y T1CKPS0, los cuales, permiten generar la división de frecuencia del reloj principal por uno, dos, cuatro y ocho, que de acuerdo a la Tabla 2: Divisores del Temporizador 1, los valores que pueden ser asignados para T1CKP1 y T1CKPS0 y así obtener “ticks” más amplios, se muestran a continuación: T1CON,
T1CKPS1
T1CKPS0
Divisor
0
0
1
0
1
2
1
0
4
1
1
8
Tabla 2: Divisores del Temporizador 1 Fuente : (Microchip, 2009)
Para una frecuencia FOSC de reloj, el retardo máximo posible con 16 bits, se obtiene de acuerdo a la ecuación (1):
t max=
4⋅65536 ⋅Divisor F osc
(1)
y por consiguiente el tiempo mínimo a obtener o tick es obtenido mediante la ecuación (2):
t min =
Divisor 1 2 4 8
4 ⋅Divisor F osc
Tmin 0.0833333 0.1666667 0.3333333 0.6666667
Tmax 5461.33 10922.67 21845.33 43690.67
(2)
Tiempo microsegundos microsegundos microsegundos microsegundos
Tabla 3: Tiempos estimados para una frecuencia de 48MHz Fuente: (Prieto-Moreno, Gonzalez-Gómez, & Gómez, 2009) Con estas ecuaciones, se permite obtener un rango de valores de temporización, tal y como se indica en la Tabla 3: Tiempos estimados para una frecuencia de 48MHz. Para definir un tiempo de retardo t, es necesario que el temporizador tenga un valor de precarga, el cual, de acuerdo a Prieto-Moreno et. Al (2009), se define con la ecuación (3) y llama a la variable de precarga T1INI.
T1INI =65536−
F osc ⋅t 4⋅Divisor
(3)
Con el fin de obtener el tiempo deseado t, siempre y cuando t tenga valores válidos en el rango mínimo y máximo, determinado por las ecuaciones (1) y (2) (Prieto-Moreno et al., 2009).
5. Configuración del Temporizador 1 para obtener un retardo Para configurar el Temporizador 1 y de esta forma obtener un retardo de tiempo, el programador, tuvo que haber definido, la frecuencia de reloj usada por el sistema, la división de frecuencia deseada y el valor de precarga inicial del temporización. Como ejemplo de lo anterior, a continuación, se presenta el procedimiento matemático requerido para que un microcontrolador que trabaja con un oscilador de cristal a 20MHz, configurado para que internamente, por medio de un elemento de hardware denominado PLL, incremente la frecuencia de reloj de sistema a 48MHz, y con esto sea obtenido un retardo de 1.57 ms (Jung, 2010; RedPIC, 2010).
Usando la ecuación (3) de la sección 4. Cálculo del tiempo de retardo, se obtiene que el valor de precarga para el temporizador es de:
48MHz ⋅(1.57 ms) 4⋅1 T1INI =46696
T1INI =65536−
(4)
Nótese que se ha escogido un divisor de frecuencia por 1, esta decisión es con base en la Tabla 3: Tiempos estimados para una frecuencia de 48MHz, ya que en la columna 1 de ésta, el valor máximo de tiempo generado por este divisor es de 5.4 ms aproximadamente, siendo el divisor por 1, mejor que el calculado por un divisor por dos, y la razón de esto, es porque el “tick” o duración del pulso de menor tiempo, es mayor en el segundo caso que en el primero, de esta manera, se genera la pérdida de resolución en el tiempo deseado. Por lo tanto, con el valor de precarga 46696, teóricamente, es obtenido un tiempo de retardo de 1.57 milésimas de segundo. Observar la siguiente sustitución:
Retardo=65536−
(4)(46696) =1.57×10−3 s 48 MHz
En ella se muestra que el número 65536, representa el número de ciclos para desbordar el temporizador 1 considerando un ciclo completo, el 4, se refiere a los 4 ciclos de reloj que consume un ciclo de instrucción, el valor 46696, indica la precarga del temporizador y finalmente los 48MHz son la frecuencia de reloj del sistema embebido.
6. Conclusiones El microcontrolador PIC18F2550, cuenta con un temporizador de 16 bits, que es capaz de almacenar en formato binario, las oscilaciones de un cristal de cuarzo, con el fin de generar un tiempo de retardo muy bien definido. Para lograr este fin, es necesario tomar en cuenta los siguientes puntos: el valor del cristal de cuarzo a usar, la configuración del reloj interno del sistema del microcontrolador, los registros que interactúan con el temporizador, así como el divisor de frecuencia para el temporizador. Usando herramienta matemática y el conocimiento necesario de la configuración básica del temporizador 1 del microcontrolador PIC18F2550, es posible derivar ecuaciones, que permiten establecer el parámetro precarga. Mediante la asignación del valor de precarga al temporizador 1 del microcontrolador PIC18F2550, teóricamente, es posible obtener un retardo de tiempo. Finalmente cabe agregar que, el interés de acumular estos retardos de tiempo e ir contabilizándolos, estriba en la medición del tiempo, la que de acuerdo a (Cabanes, 2005), esta medición al ser de índole histórico – técnico, facilita que a través de cálculos, sea posible establecer fechas.
7. Bibliografía Cabanes, M. L. (2005). El tiempo y la Humanidad - La medida del tiempo - El tiempo. Biblioteca Cervantes Virtual. Recuperado Septiembre 20, 2011, a partir de http://bib.cervantesvirtual.com/historia/TH/tiempo.shtml Jung, E. (2010, Julio 22). Default config for PIC18F4550 20 Mhz (48 Mhz) | MoP. MoP. Recuperado
Agosto 11, 2011, a partir de http://junif.hu/mop/programok/default_config Mazidi, A., McKinlay, R., & Causey, D. (2008). PIC18 Timer programming in Assembly and C. PIC Microcontroller and Embedded Systems - Using assembly and C for PIC18 (1o ed., págs. 335386). EUA: Pearson Educacion International. Microchip. (2009, Octubre 27). Datasheet PIC18F2550. PIC18F2550. Recuperado Noviembre 3, 2010, a partir de http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010280 Prieto-Moreno, A., Gonzalez-Gómez, J., & Gómez, R. (2009, Junio). Programación del PIC16 en C WikiRobotics. Wikirobotics. Recuperado Abril 2, 2011, a partir de http://www.iearobotics.com/wiki/index.php?title=Programación_del_PIC16_en_C RedPIC. (2010, Agosto 7). Consiguiendo 4 Mhz para los 48 Mhz necesarios en los PIC’s con USB 2.0. PicManía by RedRaven. Recuperado Agosto 11, 2011, a partir de http://picmania.garciacuervo.net/conceptos.php#USB4Mhz Rose, H. J., & Rose, H. J. (1928). A Handbook of Greek Mythology.
THIS DOCUMENT IS LICENSED UNDER THE ATTRIBUTION-SHAREALIKE 2.5 MEXICO LICENSE, AVAILABLE AT HTTP://CREATIVECOMMONS.ORG/LICENSES/BY-SA/2.5/MX/.