UNIVERSIDAD RICARDO PALMAEL TIMER0 DEL 16F84AMicrocontroladoresUNIVERSIDAD TECNOLÒGICA EL PERÙFACULTAD DE INGENIERÍA ELECT...
REGISTROS ASOCIADOS ALTEMPORIZADOR TMR0• TMR0: Registro de 8 bits de lectura/escritura• OPTION: Configura al TMR0 para que...
REGISTRO OPTION (Dirección 81H)• bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit1: Desactivadas0: Activadas• ...
EJEMPLOS DE CONFIGURACIÓN• Configure al PIC16F84 para que el temporizador TMR0, trabaje con lospulsos provenientes de un r...
TEMPORIZADOR TMR0• Registro asociado al Timer0. Se encuentra en la posición 01H de lamemoria RAM. Es el corazón del módulo...
¿QUÉ ES EL PRESCALER?• Divide la frecuencia de reloj de entrada del Timer0, entre valores predefinidos,como se ve en la ta...
¿CÓMO CUENTA EL TMR0?El TMR0 cuenta exclusivamente deforma ascendente, nunca descendente.Si el TMR0 se carga con un valor,...
CÁLCULOS CON EL TMR0• Cuando se carga en el registro TMR0 un valor XXH, él mismocontará: (FFH – XXH) impulsos y el tiempo ...
OTROS EJEMPLOS• Se desea saber: ¿Qué valor debemos cargar en el TMR0, sideseamos obtener una temporización de 10,24 ms, ut...
Démosle valores al Rango del divisor, hasta obtener un valor que seacerque lo más posible al retardo propuesto:Si Prescale...
• Ejemplo. Diga ¿cuánto es la máxima temporización que se puedehallar con el TMR0? Asuma que se está trabajando con un XT....
USO DE REGISTRO AUXILIARPasos:1. Escoger un valor para el prescaler.Un posible criterio es calcular todas las frecuencias ...
CONTINUACIÓN DEL EJEMPLO ANTERIOR• Paso 2. ¿Qué valor debe de tener el registro auxiliar?a) Al tiempo de 4.992 ms, se asoc...
DE LOS CÁLCULOS A LA PROGRAMACIÓN• Realicemos un ejercicio completo: Realice un programa quepermita encender y apagar un l...
DE LOS CÁLCULOS A LADE LOS CÁLCULOS A LAPROGRAMACIÓNPROGRAMACIÓNPaso 2. Debemos deestructurar el programapara que vigile e...
LIST P=16F84AINCLUDE P16F84A.INCORG 00HGOTO INICIOINICIO BSF STATUS,5CLRF TRISAMOVLW B’11010110’MOVWF OPTION_REGBCF STATUS...
Ejercicio. Realiceun programa quepermita encendery apagar un ledcada un segundo.Mediante Timer0y con un osciladorXT.Progra...
21/05/13 18ING. Luis Pacheco Cribillero
¿OTRA FORMA DE HACER LOS CÁLCULOS?• Pero si aún le enredan todas estas fórmulas, para calculartemporizaciones, probemos co...
Próxima SlideShare
Cargando en…5
×

Microcontroladores Registro Timer_0

1.040 visualizaciones

Publicado el

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Microcontroladores Registro Timer_0

  1. 1. UNIVERSIDAD RICARDO PALMAEL TIMER0 DEL 16F84AMicrocontroladoresUNIVERSIDAD TECNOLÒGICA EL PERÙFACULTAD DE INGENIERÍA ELECTRÓNICACIRCUITOS DIGITALES IIMICROCONTROLADORES PICDOCENTE: ING. Luis Pacheco Cribillero
  2. 2. REGISTROS ASOCIADOS ALTEMPORIZADOR TMR0• TMR0: Registro de 8 bits de lectura/escritura• OPTION: Configura al TMR0 para que trabaje comotemporizador ó contador y asigna el valor al prescaler• INTCON: Da información mediante el bit “TOIF”cuando el TMR0 se ha desbordado.• TRISA (PUERTO A): Permite el ingreso de pulsoscuando el TMR0 está configurado como contador porRA421/05/13 2ING. Luis Pacheco Cribillero
  3. 3. REGISTRO OPTION (Dirección 81H)• bit 7, RPBU : Resistencia Pull-up, Puerto B, habilita el bit1: Desactivadas0: Activadas• bit 6, INTEDG: Flanco activo para el control de interrupciones1: Con flanco Ascendente0: Con flanco Descendente• bit 5, TOCS: Fuente de Reloj para TMR01: Pulsos introducidos a través de RA4/T0CK1 (Contador)0: Pulsos de reloj interno Fosc/4 (Temporizador)• bit 4, TOSE: Tipo de flanco en TOCK11: Incremento de TMR0 cada flanco descendente0: Incremento de TMR0 cada flanco ascendente• bit 3, PSA: Bit de asignación del prescaler divisor de frecuencia1: El divisor de frecuencia se asigna al WDT0: El divisor de frecuencia se asigna al TMR0• bit 2-0, PS2:PSO: Rango con el que actúa el divisor de frecuencia.21/05/13 3ING. Luis Pacheco Cribillero
  4. 4. EJEMPLOS DE CONFIGURACIÓN• Configure al PIC16F84 para que el temporizador TMR0, trabaje con lospulsos provenientes de un reloj externo, y el mismo cambie en el flancode subida del pulso externo:• Configure al PIC16F84 para que el TMR0, trabaje con el reloj interno y lafrecuencia del mismo sea dividida por 32:¿Y los demás bits?¿Cómo lo cargo al OPTION?En el primer caso:movlw b’xx11xxxx1’movwf OPTIONEn el segundo caso:movlw b’xx0x0100’movwf OPTIONOPTION_REGOPTION_REG21/05/13 4ING. Luis Pacheco Cribillero
  5. 5. TEMPORIZADOR TMR0• Registro asociado al Timer0. Se encuentra en la posición 01H de lamemoria RAM. Es el corazón del módulo Timer0. Puede ser leído oescrito en cualquier momento. El TMR0 se incrementaráautomáticamente por cada ciclo de instrucción y contará desde 0 (00H)hasta 255 (FFH) (Contador de 8 bits).• Para que opere como temporizador, el bit TOCS (del registro OPTION)debe ser cero (0), el bit PSA= 0 y deben ser cargados los bits PS2 aPS0, según sea el preescaler a utilizar para lograr nuestratemporización.• Para que opere como contador, se usa una entrada de reloj externo en elTMR0 y se deben de cumplir ciertos requisitos para que el reloj externopueda ser sincronizado con el reloj interno (TOSC). Además existe unretardo en el incremento real del TMR0, después de la sincronización. Elbit TOCS= 1. Se debe seleccionar el tipo de flanco que producirá elincremento del TMR0 ( TOSE = 1 ó 0).21/05/13 5ING. Luis Pacheco Cribillero
  6. 6. ¿QUÉ ES EL PRESCALER?• Divide la frecuencia de reloj de entrada del Timer0, entre valores predefinidos,como se ve en la tabla asociada al registro OPTION, 1:32, 1: 64, 1:256, etc.,genera una nueva señal de menor frecuencia a la salida, que será la señal de relojde entrada al registro TMR0.• “Ralentiza” señales de entrada demasiado rápidas para nuestros propósitos.• También existe un postescaler, asociado al perro guardián WDT (Watch DogTimer) del microcontrolador, pero en este caso recibe el nombre de postcaler yaque se usa a la salida del WDT, no pudiendo estar asignado a la vez al Timer0 o alWDT. El preescaler es transparente para el programador, no se puede leer niescribir sobre él, pero se puede seleccionar por software, como ya se ha dicho,mediante el registro OPTION.• Nota: Para evitar un RESET no deseado del sistema, es necesario ejecutar unasecuencia de instrucciones específicas cuando se cambia la asignación delprescaler del TMR0 al WDT. Esta secuencia debe ser seguida, aún cuando el WDTesté inactivo.21/05/13 6ING. Luis Pacheco Cribillero
  7. 7. ¿CÓMO CUENTA EL TMR0?El TMR0 cuenta exclusivamente deforma ascendente, nunca descendente.Si el TMR0 se carga con un valor,éste comenzará a contar desde elvalor cargado hasta que sedesborda (cuando pasa a 00H)00HFFH00H00HFFHValor cargadoEn el TMR000H(28– N10)21/05/13 7ING. Luis Pacheco Cribillero
  8. 8. CÁLCULOS CON EL TMR0• Cuando se carga en el registro TMR0 un valor XXH, él mismocontará: (FFH – XXH) impulsos y el tiempo que tarda en hacerloviene dado por la expresión: Temporización= 4 * TOSC * Valor Real TMR0 * Rango del divisorde Frecuencia Valor Real TMR0 = (28– N10) = (256 – N10) N10= Valor a cargar en el TMR0Ejemplo: Sea un valor a cargar en el TMR0 de 100, un prescalerseleccionado de 1:32 y un oscilador XT. Determine el tiempo enque tardará el TMR0 en desbordarse.Solución: Sea XT = Frecuencia = 4 MHz, T = 0.25 μs.Temporización= 4*0.25 μs* (256 – 100) * 32 = 4.992 ms.21/05/13 8ING. Luis Pacheco Cribillero
  9. 9. OTROS EJEMPLOS• Se desea saber: ¿Qué valor debemos cargar en el TMR0, sideseamos obtener una temporización de 10,24 ms, utilizando unpreescaler de 128 y un cristal XT?Solución:(256 – N10) = = = 80(256 – N10) = 80, despejando N10= (256 – 80) = 176, el valor que debemoscargar en el TMR0 es 176, para que éste cuente desde 176 hasta 256.• Elegir el TMR0, para generar un retraso de 1.5 ms utilizando unoscilador de 10 MHz.Solución: Sea Fosc= 10 MHz, T = 100 ns(256 – N10) = =N10= 256 - (3750/RgoDivisor)RgodivisorTiónTemporizacOSC ∗∗4 12825.0424,10∗∗ smsµRgodivisorTiónTemporizacOSC ∗∗4 RgoDivisornsms∗∗10045.121/05/13 9ING. Luis Pacheco Cribillero
  10. 10. Démosle valores al Rango del divisor, hasta obtener un valor que seacerque lo más posible al retardo propuesto:Si Prescaler= 256, Valor a cargar en el TMR0= 241 (redondeado)Si Prescaler= 128, Valor a cargar en el TMR0= 227 (redondeado)Si Prescaler= 64, Valor a cargar en el TMR0= 197 (redondeado)Si Prescaler= 32, Valor a cargar en el TMR0= 139 (redondeado)Etc…A manera de práctica, realice usted, el cálculo de la Temporización, paracada uno de los valores que se consiguieron en los cálculos anteriores.Escoja uno y justifique. Particularmente parece que el que tiene el rangode divisor de 64, es el mejor.• Nota: En este ejercicio resuelto, usted puede darse cuenta de que nohay un solo resultado para los ejercicios, pero lo que si debe cumplirsees que sea cualquiera que sean los valores que se tomen para loscálculos, estos deben de estar cercanos a la respuesta que se espera deltemporizador que esté diseñando.CONTINUACIÓN EJEMPLO ANTERIOR21/05/13 10ING. Luis Pacheco Cribillero
  11. 11. • Ejemplo. Diga ¿cuánto es la máxima temporización que se puedehallar con el TMR0? Asuma que se está trabajando con un XT.Solución: Tomamos el máximo factor de escala de división todoslos estados que puede contar el TMR0:– Temporización= 4*0.25 μs*(256 )*256 = 65.536 ms.– Este es el máximo valor que podemos conseguir del TMR0.• ¿Cómo hacemos entonces para conseguir valores superiores aéste, tales como 0,5 s; 1 s; 2 s; entre otros?– Esto se puede arreglar si tenemos un contador de mayornúmero de bits. La solución está en extender el Timer0 conun registro (auxiliar) controlado por software.– Dicho registro (auxiliar) contará el número de interrupcionespor desbordamiento que genera el Timer0, de forma de queéste pase por cero, cuando haya pasado el tiempo queestamos calculando.21/05/13 11ING. Luis Pacheco Cribillero
  12. 12. USO DE REGISTRO AUXILIARPasos:1. Escoger un valor para el prescaler.Un posible criterio es calcular todas las frecuencias de prescaler quepodemos obtener con cada divisor posible. Las frecuencias sin decimalesson interesantes al poder encontrar múltiplos de ellas a la salida delTMR0 con mayor facilidad. En general, la elección del valor delprescaler es empírica: depende del problema, la experiencia y sobretodo de la práctica.2. Determinar el valor del Registro Auxiliar, a partir del valor dado porel TMR0.Normalmente viene dado por un múltiplo de la frecuencia, asociada altiempo calculado. Con un ejemplo entenderemos mejor lo que se deseaplantear:Ejemplo: Determine los valores del TMR0 y del Registro Auxiliar paraconseguir una temporización de 1 segundo. Utilice un oscilador XT.Solución: XT= Frecuencia = 4 MHz ; Tosc= 250 ns• Paso 1. Como no se nos ha impuesto que prescaler utilizar ni quetemporización, podemos aleatoria mente escogerlas, como en el ejemplo6. Evaluando cualquiera, cuya temporización del TMR0 se basó en 5 ms,escojamos el prescaler 128 y sustituyamos los valores en la ecuaciónprincipal:– Temporización= 4*250 ns*(256 - 217)*128 = 4.992 ms21/05/13 12ING. Luis Pacheco Cribillero
  13. 13. CONTINUACIÓN DEL EJEMPLO ANTERIOR• Paso 2. ¿Qué valor debe de tener el registro auxiliar?a) Al tiempo de 4.992 ms, se asocia una frecuencia del TMR0 de == 200.3 Hz, redondeando, tomamos este múltiplo:200, Así, tendremos entonces que si multiplicamos 200*4.992ms = 0.998 s, que es un valor bastante cercano a 1 segundo.b) La misma operación pero interpretada de una forma más sencillaes determinar cuantas veces necesitamos al tiempo calculadopara lograr un segundo:La que usted entienda mejor es válida.Nuestro registro auxiliar debe ser de 200!!!Recuerde de que éste registro auxiliar no debe superar 255.Si supera este valor, se debe adicionar un nuevo registroauxiliarms992.4132.200992.41=mssegundo21/05/13 13ING. Luis Pacheco Cribillero
  14. 14. DE LOS CÁLCULOS A LA PROGRAMACIÓN• Realicemos un ejercicio completo: Realice un programa quepermita encender y apagar un led cada 15 ms, mediante eltimer0. Utilice un oscilador XT.21/05/13 14ING. Luis Pacheco Cribillero
  15. 15. DE LOS CÁLCULOS A LADE LOS CÁLCULOS A LAPROGRAMACIÓNPROGRAMACIÓNPaso 2. Debemos deestructurar el programapara que vigile e informecuando el TMR0 se hadesbordado, y el bit que nosda esta información es elTOIF, del RegistroINTCON. Adicional a estodebemos configurar elregistro OPTION para queeste trabaje con elprescaler que hemosseleccionado para nuestroscálculos, así como deasignarlo al TMR0. Así comola rutinaria configuraciónde los puertos.21/05/13 15ING. Luis Pacheco Cribillero
  16. 16. LIST P=16F84AINCLUDE P16F84A.INCORG 00HGOTO INICIOINICIO BSF STATUS,5CLRF TRISAMOVLW B’11010110’MOVWF OPTION_REGBCF STATUS,5CLRF INTCONLEDON BSF PORTA,0CALL RETARDOLEDOFF BCF PORTA,0CALL RETARDOGOTO LEDON;***RUTINA DE RETARDO***RETARDO MOVLW D’139’MOVWF TMR0ESPERA BTFSS INTCON,TOIFGOTO ESPERABCF INTCON,TOIFRETURNENDPaso 3. Programa21/05/13 16ING. Luis Pacheco Cribillero
  17. 17. Ejercicio. Realiceun programa quepermita encendery apagar un ledcada un segundo.Mediante Timer0y con un osciladorXT.Programa PrincipalSubru21/05/13 17ING. Luis Pacheco Cribillero
  18. 18. 21/05/13 18ING. Luis Pacheco Cribillero
  19. 19. ¿OTRA FORMA DE HACER LOS CÁLCULOS?• Pero si aún le enredan todas estas fórmulas, para calculartemporizaciones, probemos con estas tres:Pruebe ahora realizar los mismos cálculos siguiendo el 1, 2, 3…21/05/13 19ING. Luis Pacheco Cribillero¡ GRACIAS !!!...¡ GRACIAS !!!...

×