MM-Apuntes de Clase 5.pdf

Embed Size (px)

Citation preview

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    1/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    El Timer 0

    Características

      Temporizador/contador de 8 bits

     

    Permite lectura y escritura  Pre-escalador programable de 8 bits

      Fuente de reloj seleccionable externa o interna  Puede producir interrupción por desbordamiento (Cambio de FFh a 00h)

      Flanco seleccionable para el reloj externo

    Esquema Descriptivo

    Registro OPTION_REG

    T0CS  –  Selección de la señal de reloj del timer 01 –  Los pulsos para el timer 0 ingresan por el pin RA4.0 - Reloj interno (Fosc/4).T0SE  –  Selección del flanco de la señal en el pin1 –  Flanco de bajada en el pin0 - Flanco de subida en el pin

    PSA  –  Bit de asignación de pre-escalador1 –  El pre-escalador se asigna al wathdog0 - El pre-escalador se asigna al timer 0PS2, PS1, PS0  –  Selección del factor de pre-escalamiento

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    2/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    Generación de señal periódica con Timer 0 por consulta

    #INCLUDE P16F877A.INCCALL INITCCALL INIT_TMR0

    BUCLECLRF TMR0

    ESPERAR_DESBORDEBANKSEL INTCONBTFSS INTCON, T0IFGOTO ESPERAR_DESBORDE

     MOVLW 0XFFXORWF PORTCBCF INTCON, T0IFGOTO BUCLE

    INITCBANKSEL TRISCCLRF TRISCBANKSEL PORTCCLRF PORTC

    RETURNINIT_TMR0

    BANKSEL TMR0CLRF TMR0CLRF INTCONBANKSEL OPTION_REG

     MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2 MOVWF OPTION_REGRETURN

    END

    El intervalo generado T se halla con la fórmulaT = N*M*(4/Fosc)

    N – 

     Número de incrementos del Timer 01/M –  Valor del pre-escaladorFosc - Frecuencia de reloj del microcontrolador.El valor inicial del timer 0 es: VI = 256 –  N.

    Generación de señal periódica con Timer 0 por interrupción

    #INCLUDE P16F877A.INCGOTO PROGRAMAORG 0X0004GOTO INTERRUPCION

    PROGRAMACALL INITCCALL INIT_TMR0CALL INIT_INT

    BUCLEGOTO BUCLE

    INTERRUPCION

    BANKSEL TMR0CLRF TMR0

     MOVLW 0XFFBANKSEL PORTCXORWF PORTCBANKSEL INTCONBCF INTCON, T0IFRETFIE

    INITCBANKSEL TRISCCLRF TRISCBANKSEL PORTCCLRF PORTCRETURN

    INIT_TMR0BANKSEL TMR0CLRF TMR0CLRF INTCONBANKSEL OPTION_REG

     MOVLW 0xC0 ; Reloj interno con pre-escalador 1:2 MOVWF OPTION_REGRETURN

    INIT_INTBANKSEL INTCONBSF INTCON, T0IEBSF INTCON, GIERETURN

    END 

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    3/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    El Timer 1

    Características

      Temporizador/contador de 16 bits

      Permite lectura y escritura 

    Fuente de reloj seleccionable externa o interna

      Puede producir interrupción por desbordamiento (Cambio de FFFFh a 0000h)

      Se puede reinicializar desde los módulos CCP

    Registro contador de 16 bits

    Modos de operación

    • Con reloj interno• Con reloj externo• Con reloj externo y circuito oscilador

    Temporizador Contador 

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    4/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    Esquema Descriptivo

    Registro T1CON

    T1CKPS1, T1CKPS0 –  Bits de selección del factor de pre-escalamiento del timer 1.

    T1OSCEN –  Bit de habilitación del oscilador del timer 11 –  Oscilador habilitado.0 –  Oscilador Inhabilitado./T1SYNC –  Bit de selección de sincronización de la señal de reloj externa del Timer 1.Cuando TMR1CS = 1:

    1 –  No sincronizar.0 - Sincronizar.Cuando TMR1CS=0, este bit es ignorado.TMR1CS –  Bit de selección de la fuente de la señal de reloj del Timer 1.1 –  Cuenta los pulsos en el pin T1CKI (en el flanco de subida)0 –  Cuenta los pulsos del reloj interno del microcontrolador.TMR1ON –  Bit de arranque del Timer1.1 –  Arranca el Timer 1.0 –  Detiene al Timer 1.

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    5/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    Ejemplo de Aplicación del Timer1 como Temporizador

    #INCLUDE P16F877A.INCCALL INITCCALL INIT_TMR1

    BUCLECALL BORRAR_TIMER

    ESPERAR_DESBORDE

    BANKSEL PIR1BTFSS PIR1, TMR1IFGOTO ESPERAR_DESBORDECALL INVERTIR_SALIDACALL BORRAR_BANDERAGOTO BUCLE

    INITCBANKSEL TRISCCLRF TRISCBANKSEL PORTCCLRF PORTCRETURN

    INIT_TMR1BANKSEL TMR1HCLRF TMR1HCLRF TMR1L MOVLW 0x30 ; Reloj internoBANKSEL T1CON ;Pre-escalador MOVWF T1CON ; 1:8BSF T1CON,TMR1ON;ArranqueRETURN

    INVERTIR_SALIDA MOVLW 0XFFBANKSEL PORTCXORWF PORTCRETURN

    BORRAR_TIMER

    BANKSEL TMR1HCLRF TMR1HCLRF TMR1LRETURN

    BORRAR_BANDERABANKSEL PIR1BCF PIR1, TMR1IFRETURN

    END

    El intervalo generado T se halla con la fórmulaT = N*M*(4/Fosc)N –  Número de incrementos del Timer 11/M –  Valor del pre-escaladorFosc - Frecuencia de reloj del microcontrolador.El valor inicial del timer 0 es: VI = 65536 –  N.

    Lectura del Timer 1 en corrida libre

    ; Todas las interrupciones están inhabilitadas MOVF TMR1H, W ; Leer el byte alto MOVWF TMPH ; MOVF TMR1L, W ; Leer el byte bajo  MOVWF TMPL ; MOVF TMR1H, W ; Leer el byte alto

    SUBWF TMPH, W ; SustraerBTFSC STATUS,Z ; ¿Diferencia no es 0? GOTO CONTINUE ; Buena lectura de 16 bits 

    ; TMR1L ha generado acarreo entre las lecturas del byte alto y bajo.; La nueva lectura será correcta.

     MOVF TMR1H, W ; Leer byte alto  MOVWF TMPH ; MOVF TMR1L, W ; Leer byte bajo  MOVWF TMPL ;

    ; Si se requiere, se vuelven a habilitar las interrupcionesCONTINUE ; Continuación del código

    Escritura del Timer 1 en corrida libre

    Primero se borra TMR1L para asegurar que hay muchos ciclos de reloj antes de quese genere acarreo al registro TMR1H. Luego, se carga TMR1H, y finalmente se cargaTMR1L.; Todas las interrupciones están inhabilitadas

    CLRF TMR1L ; Borrar byte bajo  MOVLW HI_BYTE ; Cargar byte alto en TMR1H  MOVWF TMR1H, F ; MOVLW LO_BYTE ; Cargar byte bajo en TMR1L  MOVWF TMR1H, F ;

    ; Si se requiere, se vuelven a habilitar las interrupcionesCONTINUE ; Continuación del código

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    6/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    El Timer 2

    El Timer 2 es de 8 bits con pre-escalador, post-escalador y un registro de periodo.Cuando en el pre-escalador y post-escalador se colocan los valores máximos, elintervalo de tiempo generado es el mismo que el de un timer de 16 bits.

    T2CON register

    TOUTPS3 - TOUTPS0  –  Bits de selección del factor del post-escalamiento del Timer2

    TMR2ON –  Bit de arranque del Timer2.

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    7/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    1 –  Timer 2 arrancado.0 - Timer 2 parado.T2CKPS1, T2CKPS0 - Bits de selección del factor del pre-escalamiento del Timer2

    El Módulo CCP1

    CCPR1H CCPR1L - Registro de 16 bits

      Registro de 16 bits de captura  Registro de 16 bits de comparación

     

    Registro de ciclo de trabajo de señal PWM

    CCP1CON Register

    DC1B1, DC1B0 –  Bits menos significativos del ciclo de trabajo (número de 10 bits).

    CCP1M3 - CCP1M0 –  Bits de selección del modo del módulo CCP1.

    CCP1M3 - CCP1M0 Modo

    0000 Módulo CCPx inhabilitado (Resetea al módulo)0100 Modo captura, cada flanco de bajada

    0101 Modo captura, cada flanco de subida0110 Modo captura, cada 4to flanco de subida0111 Modo captura, cada 16avo flanco de subida

    1000Modo comparación, inicializa el pin CCP en nivel bajo, en laigualdad de la comparación setea el pin CCP (CCPIF es seteado)

    1001Modo comparación, inicializa el pin CCP en nivel alto, en la igualdadde la comparación resetea el pin CCP (CCPIF es seteado)

    1010Modo comparación, Genera interrupción en la igualdad de lacomparación (CCPIF es seteado, el pin CCP no es afectado)

    1011Modo comparación, Disparador de Evento Especial (CCPIF esseteado)

    11xx Modo PWM

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    8/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    Modo Captura

    Modo Comparación

    Disparador de

    Evento Especial

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    9/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    Modo PWM

    No se puede usar el post-escalador del timer 2.

    Periodo PWM

    TPWM = [(PR2) + 1] • 4 • TOSC • M

    (PR2) –  Valor del registro de periodo

    TOSC  –  Periodo de la señal de reloj del microcontrolador

    1/M - Valor del pre-escalador de TMR2

    Ciclo de Trabajo PWM

    CTPWM = CT•TOSC•M

    CT - (CCPR1L:CCP1CON) –  Contenido de CCPR1L y los bits 5 y 4 de CCP1CON

    TOSC  –  Periodo de la señal de reloj del microcontrolador

    Ejemplo de generación de las señales de la tabla para fosc=4MHz

    Pin Periodo Ciclo de Trabajo Timer a usar Pre-escalador Con Interrupción

    17 3.6 mS 25% Timer 2 y módulo CCP 1/16 No

    20 80 mS 50% Timer 0 1/256 Si30 100 mS 50% Timer 1 1/1 Si

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    10/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    10 

    Para el periodo de la señal PWM:

    2 =

    4 ∙ ∙  − 1 = 224 

    El valor inicial decimal calculado para PR2

    es: 224 

    Para el ancho de pulso de la señal PWM:

    =

    ∙  = 225 = 11100001 

    El valor inicial decimal calculado para

    CCPR1L es: 56 Los dos bits menos significativos son: 01 

    Para el Timer 0:

    = ∙

    4 ∙   = 156.25 ≈ 157 

    VI=256-157=99El valor inicial decimal calculado es: 99 

    Para el Timer 1:

    = ∙

    4 ∙   = 50000 

    VI=65536-50000=15536El valor inicial decimal calculado es: 15536 

  • 8/16/2019 MM-Apuntes de Clase 5.pdf

    11/11

    Curso: Microcontroladores y Microprogramación  – Clases Prácticas

    11