Post on 06-Jul-2018
8/17/2019 TEMA_07 Manejo Timers
1/68
Tema 7MANEJO BÁSICO DE TIMERS
8/17/2019 TEMA_07 Manejo Timers
2/68
Microcontroladores: Tema 7
2
Reloj
• El microcontrolador es un sistema digitalsecuencial que requiere de una base de
tiempo para transitar por sus estados deoperación (fetch y ejectución).
• La base de tiempo es provista por una
fuente de reloj.• El !"#$ provee un módulo que permite la
selección de m%ltiples fuentes de reloj
8/17/2019 TEMA_07 Manejo Timers
3/68
Microcontroladores: Tema 7
3
Reloj
• El módulo de reloj permite&
' elección por softare de m%ltiples osciladores
' *odo de velocidad dual para minimi+arlatencia durante el inicio del oscilador e,terno
' *onitor de falla de oscilador (-"*)
' empori+ador de inicio de oscilador (/) queasegura la estabilidad del reloj
8/17/2019 TEMA_07 Manejo Timers
4/68
Microcontroladores: Tema 7
4
/sciladores
• Las alternativas de oscilador para el reloj principal son&
8/17/2019 TEMA_07 Manejo Timers
5/68
Microcontroladores: Tema 7
5
/sciladores
8/17/2019 TEMA_07 Manejo Timers
6/68
Microcontroladores: Tema 7
6
/scilador rimario
8/17/2019 TEMA_07 Manejo Timers
7/68
Microcontroladores: Tema 7
7
/scilador ecundario
8/17/2019 TEMA_07 Manejo Timers
8/68
Microcontroladores: Tema 7
8
/scilador !nterno
8/17/2019 TEMA_07 Manejo Timers
9/68
Microcontroladores: Tema 7
9
-uentes e,ternas de reloj
8/17/2019 TEMA_07 Manejo Timers
10/68
Microcontroladores: Tema 7
10
-uentes e,ternas de reloj
8/17/2019 TEMA_07 Manejo Timers
11/68
Microcontroladores: Tema 7
11
La frecuencia a la cual fue configuradoel programa monitor de su tarjeta es de-/" 0 #1*h+ usando cristal e,terno
El tiempo de duración de instrucción escy 0 23-/" 0 4.56usec
8/17/2019 TEMA_07 Manejo Timers
12/68
8/17/2019 TEMA_07 Manejo Timers
13/68
Microcontroladores: Tema 7
13
7uedo incrementar la frecuencia de
operación en mi tarjeta 8
(#5*h+ , 2)3# 0 2$*h+
(#1*h+ ,
8/17/2019 TEMA_07 Manejo Timers
14/68
Microcontroladores: Tema 7
14
ero 9/ lo hagan porque puede afectar lavelocidad de comunicación si es que est=n
operando un enlace con la computadora
8/17/2019 TEMA_07 Manejo Timers
15/68
Microcontroladores: Tema 7
15
-ail safe
Revisar >
8/17/2019 TEMA_07 Manejo Timers
16/68
Microcontroladores: Tema 7
16
imers (empori+adores)
• "uando se desea contar y medir tiempo se puede hacer mediante ciclos de programaya que conocemos cuanto tiempo tarda enejecutarse una instrucción (23-/")
• El conteo de tiempo por ciclos no permite laejecución de otros procesos y es muy
limitado.
8/17/2019 TEMA_07 Manejo Timers
17/68
Microcontroladores: Tema 7
17
imers (empori+adores)
• En un sistema digital el tiempo esrepresentado por la cuenta en un timer.
• Los timers sirven para& ' Registro de tiempo en eventos
' Beneración de interrupciones periódicas
' *edición de anchos de pulso y perCodos
' *edición de ciclos de trabajo y frecuencia ' Beneración de formas de onda
' Referencias de tiempo
' "onteo de eventos
8/17/2019 TEMA_07 Manejo Timers
18/68
Microcontroladores: Tema 7
18
imers (empori+adores)
• El !"#$-26D64 provee
' !*ER 4 configurable de $ y #1 bits
' !*ER # de #1 bits ' !*ER 5 de $ bits
' !*ER < de #1 bits
8/17/2019 TEMA_07 Manejo Timers
19/68
Microcontroladores: Tema 7
19
"antidad de bits en el timer
• La cantidad de bits en el timer indica suresolución o hasta cuanto puede contarantes de desbordarse.
• imer de $ bits contara desde 4,44 hasta4,-- (561 cuentas considerando el 4)
• imer de #1 bits contar= desde 4,4444
hasta 4,---- (166
8/17/2019 TEMA_07 Manejo Timers
20/68
Microcontroladores: Tema 7
20
imer 4
• Es configurable para operar como $ o #1 bits
• e puede seleccionar una fuente interna oe,terna de reloj para e,itarlo
• "uando opera con fuente interna se le llama!*ER: cuando es e,terna "/;9ER
• La fuente de reloj se puede pre@escalar(dividir)
8/17/2019 TEMA_07 Manejo Timers
21/68
Microcontroladores: Tema 7
21
imer4 ($ bits)-;E9E E"?L? ";E9?
8/17/2019 TEMA_07 Manejo Timers
22/68
Microcontroladores: Tema 7
22
imer4 (#1 bits)
Retiene la parte alta ya que el bus de datos
s de $ bits
8/17/2019 TEMA_07 Manejo Timers
23/68
Microcontroladores: Tema 7
23
Registro de control imer4
ᄎ
8/17/2019 TEMA_07 Manejo Timers
24/68
Microcontroladores: Tema 7
24
Registros asociados al imer4
8/17/2019 TEMA_07 Manejo Timers
25/68
Microcontroladores: Tema 7
25
-uncionamiento
• El timer empe+ar= a contar a partir del valor quehaya sido iniciali+ado en el registro *R4
• "ada ciclo de la fuente de reloj: el valor de *R4
se incrementa en #
• "uando la cuenta pasa de 4 a su valor m=,imao(4,-- o 4,----) la bandera *R4!- se enciende.
• La bandera puede ser indagada (polled) o generaruna interrupción
8/17/2019 TEMA_07 Manejo Timers
26/68
Microcontroladores: Tema 7
26
-uncionamiento
00h,01h,02h,……..FDh,FEH,FFH,00h,01h,02h,……..FDh,FEH,FFH,
andera *R4!-
Valor inicial de registro TMR0 = 0x00
25h,26h,27h,.FDh,FEH,FFH,00h,01h,02h,---.FDh,FEH,FFH,
andera *R4!-
Valor inicial de registro TMR0 = 0x25
8/17/2019 TEMA_07 Manejo Timers
27/68
Microcontroladores: Tema 7
27
rogramación del imer4
• Facer una rutina de retardo que utilice el imer 4. Elretardo debe de ser de #44msec y el oscilador delmicrocontrolador es de #1*h+. ?provechar esa rutina
para genenar una seGal de 6 h+ en todo el puerto >16Mhz/4 = 4Mhz
8/17/2019 TEMA_07 Manejo Timers
28/68
Microcontroladores: Tema 7
28
rogramación del imer4• in usar pre@escalador vemos si funciona
• "ada cuenta serCa #32*h+ 0 4.56usec
• Hueremos contar #44ms: entonces 4.#34.56usec 0 244:444cuentas. e pasa del m=,imo en #1 bits que es 166
8/17/2019 TEMA_07 Manejo Timers
29/68
Microcontroladores: Tema 7
29
rogramación del imer4• El pre@escalador divide entre 5:2:$:#1:
8/17/2019 TEMA_07 Manejo Timers
30/68
Microcontroladores: Tema 7
30
"onfiguración registro 4"/9
ᄎ
1 0 0 0 0 0 1 1
!nicia conteo al momento de hacerlo #
8/17/2019 TEMA_07 Manejo Timers
31/68
Microcontroladores: Tema 7
31
"onfiguración registro *R4
• "omo la cantidad a contar es 56:444 ynuestro registro de cuenta permite 166
8/17/2019 TEMA_07 Manejo Timers
32/68
Microcontroladores: Tema 7
32
"onfiguración registro *R4
8/17/2019 TEMA_07 Manejo Timers
33/68
Microcontroladores: Tema 7
33
rogramación
• !niciali+ar el registro *R4 para definir elvalor inicial de la cuenta
• !niciali+ar el registro 4"/9 para definir elcomportamiento del timer
• Esperar por encendido de bandera *R4!-
que indica que se llego al deborde• ;sar la rutina de JdelayK para generar una
seGal cuadrada de 6F+:
8/17/2019 TEMA_07 Manejo Timers
34/68
Microcontroladores: Tema 7
34
rogramación
6F+
4.5
0 # 3 -
8/17/2019 TEMA_07 Manejo Timers
35/68
Microcontroladores: Tema 7
35
rogramación
INCIO
INICIALIZAR
PERTOS
PORTD ! PORTD
DELA" 100m#e$
ARRANCA TIMER
%IN
INICIALIZA TIMER0
DELA"
100m#e$
TMR0I% ! 1 &
TMR0I%!0
N'
8/17/2019 TEMA_07 Manejo Timers
36/68
Microcontroladores: Tema 7
36
rogramación
8/17/2019 TEMA_07 Manejo Timers
37/68
Microcontroladores: Tema 7
37
;so de interrupciones
• e puede implementar el programa anteriorutili+ando interrupciones.
• La !R contendrCa la re@iniciali+ación deltimer y el cambio de estado del puerto.
8/17/2019 TEMA_07 Manejo Timers
38/68
Microcontroladores: Tema 7
38
imer #3<GATE CTL
8/17/2019 TEMA_07 Manejo Timers
39/68
Microcontroladores: Tema 7
39
imer #3<
8/17/2019 TEMA_07 Manejo Timers
40/68
Microcontroladores: Tema 7
40
Registo de "ontrol imer #3<
8/17/2019 TEMA_07 Manejo Timers
41/68
Microcontroladores: Tema 7
41
Registo de "ontrol imer #3<
8/17/2019 TEMA_07 Manejo Timers
42/68
Microcontroladores: Tema 7
42
Registo de "ontrol imer #3<
8/17/2019 TEMA_07 Manejo Timers
43/68
Microcontroladores: Tema 7
43
Registos ?sociados imer #3<
8/17/2019 TEMA_07 Manejo Timers
44/68
Microcontroladores: Tema 7
44
imer 5
8/17/2019 TEMA_07 Manejo Timers
45/68
Microcontroladores: Tema 7
45
imer 5
8/17/2019 TEMA_07 Manejo Timers
46/68
Microcontroladores: Tema 7
46
Registro de "ontrol imer 53231
8/17/2019 TEMA_07 Manejo Timers
47/68
Microcontroladores: Tema 7
47
-uncionamiento
00h,01h,02h,... 32h,00h,01h,02h,... 32h,00h,01h,02h,... 32h,
EH
Valor del registro Prx = 0x32
*R,
8/17/2019 TEMA_07 Manejo Timers
48/68
Microcontroladores: Tema 7
48
Registos ?sociados imer 5
8/17/2019 TEMA_07 Manejo Timers
49/68
Microcontroladores: Tema 7
49
-unciones en libreria timers.h
https&33sites.google.com3site3ucitesm3home3tema@423mplabc#$libraries6#5IAf.pdf
"&MroyectosM*icrocontroladoresME*?4AM!"#$- eripheral Library Felp >ocument.chm
http://c/Proyectos/Microcontroladores/TEMA_07/PIC18F%20Peripheral%20Library%20Help%20Document.chmhttp://c/Proyectos/Microcontroladores/TEMA_07/PIC18F%20Peripheral%20Library%20Help%20Document.chm
8/17/2019 TEMA_07 Manejo Timers
50/68
Microcontroladores: Tema 7
50
-unciones en libreria timers.h
8/17/2019 TEMA_07 Manejo Timers
51/68
Microcontroladores: Tema 7
51
8/17/2019 TEMA_07 Manejo Timers
52/68
Microcontroladores: Tema 7
52
rogramación del imer#3<
• Facer una rutina de retardo que utiliceel imer 4
• El control de gate (arranque) del timerse reali+ar= por programa
8/17/2019 TEMA_07 Manejo Timers
53/68
Microcontroladores: Tema 7
53
imer #3<
16Mhz
4Mhz
8/17/2019 TEMA_07 Manejo Timers
54/68
Microcontroladores: Tema 7
54
imer <• ?l igual que el imer 4: el imer < (#) contar= a
partir del valor inicial del registro de cuenta *R<hasta 4,----
•"uando la cuenta pasa de 4,---- a 4,4444 seencender= la bandera *R
• i deseamos contar una cierta cantidad de";E9? hasta el encendido de la bandera: el
valor a configurar en el registro *R< ser= de& ' *R< 0 166
8/17/2019 TEMA_07 Manejo Timers
55/68
Microcontroladores: Tema 7
55
imer <• El tiempo que tardar= en encenderse la bandera
*R
*
8/17/2019 TEMA_07 Manejo Timers
56/68
Microcontroladores: Tema 7
56
imer <• odemos jugar entonces con la selección de reloj:
rescala y *R< para obtener el valor deseado.
*
• El valor *R
8/17/2019 TEMA_07 Manejo Timers
57/68
Microcontroladores: Tema 7
57
"ontrol del Bate (arranque)
0
Mi t l d T 7
8/17/2019 TEMA_07 Manejo Timers
58/68
Microcontroladores: Tema 7
58
Registo de "ontrol imer #3<
0 0 0 0 0 X X 1
Microcontroladores Tema 7
8/17/2019 TEMA_07 Manejo Timers
59/68
Microcontroladores: Tema 7
59
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
60/68
Microcontroladores: Tema 7
60
rogramación del timer 5
• ?l ejemplo anterior: agregue el codigorequerido para generar una seGal cuadrada en
el puerto R># con una frecuencia de 644h+utili+ando el imer 5 con un mQtodo deinterrupciones.
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
61/68
Microcontroladores: Tema 7
61
rogramación del timer 5
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
62/68
Microcontroladores: Tema 7
62
imer 5• EL imer5 es de $ bits: comien+a a contar de 4
• El valor del registro de cuenta es comparado contrael contenido del registro R5
• "uando ambos registros son iguales: se genera unaseGal que reinicia el contador a 4 para volver aempe+ar
• La seGal de renicio puede ser de nuevo dividida por
un post@escalador.• La division de frecuencia que producen la
combinación de *R5 y R5 es de R5#
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
63/68
Microcontroladores: Tema 7
63
imer 5• El tiempo que tardar= en encenderse la bandera
*R5!- desde el momento de que se arranca eltimer estar= dado por&
*5!- 0 osc N2N rescala N(R5#)Nostscala
• odemos jugar con rescala: R5 y ostscala
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
64/68
Microcontroladores: Tema 7
64
imer 5• ara nuestro problema: la frecuencia a generar
644F+ pero ocupamos generar interrupciones aldoble (#Dh+): vamos a intentar primero con
prescala en un valor intermedio o sea 2
• Hueremos *5!- 0 #3#444 0 #,#4@<
• "omo -os 0 #1,#41 osc 0 #3-osc 0 1.56,#4@$
• >ado lo anterior tenemos&
*5!- 0 osc N2N rescala N(R5#)Nostscala
#,#4@
8/17/2019 TEMA_07 Manejo Timers
65/68
Microcontroladores: Tema 7
65
imer 5*5!- 0 osc N2N rescala N(R5#)Nostescala
#,#4@
8/17/2019 TEMA_07 Manejo Timers
66/68
Microcontroladores: Tema 7
66
Registro de "ontrol imer 53231
0 1 1 1 1 0 1 X
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
67/68
67
Microcontroladores: Tema 7
8/17/2019 TEMA_07 Manejo Timers
68/68