tema_07 manejo timers

Upload: ricardo-elizalde

Post on 06-Jul-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 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