Upload
reynosodi
View
213
Download
0
Embed Size (px)
Citation preview
8/16/2019 MM-Apuntes de Clase 5.pdf
1/11
Curso: Microcontroladores y Microprogramación – Clases Prácticas
1
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
2
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
3
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
4
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
5
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
6
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
7
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
8
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
9
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