0% encontró este documento útil (0 votos)
66 vistas15 páginas

Clase Timer DigIII

El documento describe el funcionamiento de los módulos Timer/Counter en microcontroladores PIC de Microchip y ARM LPC2148, incluyendo el uso de registros como el Prescale Register y el Timer Counter. Se explica cómo configurar interrupciones, realizar capturas y comparaciones, así como la gestión de interrupciones en el sistema. Además, se presenta una aplicación práctica para medir intervalos de tiempo utilizando sensores ópticos y el Timer Counter.

Cargado por

Marcelo Machado
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
66 vistas15 páginas

Clase Timer DigIII

El documento describe el funcionamiento de los módulos Timer/Counter en microcontroladores PIC de Microchip y ARM LPC2148, incluyendo el uso de registros como el Prescale Register y el Timer Counter. Se explica cómo configurar interrupciones, realizar capturas y comparaciones, así como la gestión de interrupciones en el sistema. Además, se presenta una aplicación práctica para medir intervalos de tiempo utilizando sensores ópticos y el Timer Counter.

Cargado por

Marcelo Machado
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Timer/Counter0 y Timer/counter1

Presale Register PR

Presale Counter PC

Timer counter TC

Puede generar una interrupcin

PC++
La seal de que incrementa al timer es la que proviene del prescaler o prescale counter Un registro que incrementa o decrementa en base a una seal de clock no

PC=PR?
Si

El prescale counter se resetea cada vez que iguala al prescale register y enva la seal para incrementar el TC

TC++ PC=0

PIC de Microchip Recordando cmo trabajamos en PIC de Microchip


Modo Timer/counter Cargar TMR0 Cargar Prescaler Realizar la rutina de interrupcin Decremento Prescaler Bajar bandera de interrupcin Prescaler=0? Return

En la interrupcin
main
Cargar TMR0 a su valor original

Decremento TMR0

TMR0=0?

Disparo interrupcin

PIC de Microchip

ARM LPC2148

Fijar Pclk (PLL+Divisor APV)


Timer/counter CTCR Habilitar timer -reset timer counter/prescale counter TCR Counter

Match/Captura MCR-CCR
PCLK es la seal de clock que reciben los perifricos y puede o no ser la misma seal de clock que recibe el core.(CCLK) Tenemos la capacidad de modificar el clock del core (CCLK) y el PCLK (clock de los perifricos) de forma independiente para cuestiones de ahorro de energa.

Captura
Pin de captura (entrada) Pinsel

Configuracin de la captura (flanco y habilitacin de interrupcin) CCR


Puedo hacer una captura sin generar interrupciones

CR0

Puedo usar funcionalidades del mdulo Timer sin necesidad de generar una interrupcin

CR1
CR2

PIN Registro CAPX.0 CR0 CAPX.1 CR1 CAPX.2 CR2 CAPX.3 CR3

CR3

Timer Counter (TC)

El modo captura consiste en tomar una fotografa del TC y almacenarla en los registros destinados a tal fin. Al hacer una captura del TC puedo o no generar una interrupcin

Aplicacin prctica Este problema puede resolverse de forma muy simple utilizando las entradas de captura. El pndulo se desplazar de un extremo a otro dentro de ciertos lmites. Podemos colocar sensores pticos en cada uno de esos extremos del trayecto, de modo que cuando la masa del pndulo corte el haz de luz este excite la entrada de captura y se capture el valor del TC en ese momento.

Si bien se dispararn ambas capturas, slo la segunda generar una interrupcin. Momento en el cual se calcular el de TC y su correspondiente intervalo de tiempo.

Conexin
Podemos conectar los sensores, por ejemplo a los pines P0.30 y P0.29 para generar capturas diferentes

Por lo tanto tendremos que generar un flanco de subida o bajada, de acuerdo a la configuracin que nos convenga, en el pin P0.30 y P0.29 para que el valor del TC se almacene en CR0 y CR3 respectivamente. Luego, ya con los datos disponibles estaremos en condiciones de hacer los clculos necesarios.

Pin P0.30 CAP0.0 y Pin P0.29 CAP0.3

Match (Comparacin)
Los registros de match se comparan constantemente con el Timer counter (TC). Cada vez que el TC iguala alguno de los registros de Match me permite realizar acciones que no se limitan solo a generar interrupciones

Timer Counter (TC) Disparar una interrupcin MATX.0-MATX.3 Pin=0 Pin=1 Pin= Toggle

=
MR0 MR1

Manipular un Pin Resetear TC Detener el TC y PC

MR2
MR3

Las posibles acciones descritas arriba no son excluyentes. Esto me permite, por ejemplo, Disparar una interrupcin, detener el TC y PC, resetear el TC y manipular un pin de salida.

Pines para captura y match


Pines captura Timer0

Pines Match Timer0


Pines captura Timer1 Pines Match Timer1

Ms de un pin puede desempear una misma funcin CAP0.0

Gestin de interrupciones
Dentro del mdulo Timer tengo 8 fuentes de interrupcin, 4 de captura y 4 de comparacin.

Sin embargo en el bloque de control de interrupciones VIC solo figuran TIMER0 y Timer1 como fuentes de interrupcin Por lo tanto tengo 8 fuentes de interrupcin con una nica salida hacia el VIC de esto se deduce que tendremos que hacer una gestin en la rutina de interrupcin.

Gestin de interrupciones Dentro del mdulo Timer tengo 8 fuentes de interrupcin, 4 de captura y 4 de comparacin. Rutina de servicio de interrupcin (ISR)
si Utilizo una sola fuente de interrupcin del mdulo Timer? no

Realizo la rutina Rutina_de_interrupcin () { }

Pregunto quin interrumpe IR

Realizo la rutina Rutina_de_interrupcin () { }

Bajo las banderas (IR) Limpiamos el registro VICVectAddr (IRQ/no_vectorizadas)

Diagrama Timer/Counter0-1 LPC2148

Generacin de eventos de forma peridica


Nos dedicaremos ahora a generar un Evento de forma peridica. Para lo cual nos valdremos del mdulo timer y particularmente haremos uso de los registros de match. Generaremos una interrupcin y reseteamos el TC.

Configurar mdulo Timer/Counter como Timer (CTCR) Cargar Prescale Register (PR) Cargamos Registro de Match0 (MR0) Configuramos el mdulo Timer/Counter para que interrumpa y resetee TC (MCR) Cargamos La direccin de la interrupcin de ser necesario (VICVectAddrX) Asignamos la prioridad de la interrupcin (VICVectCntlX) Habilitamos la interrupcin (VICIntEnable) Habilitamos el mdulo Timer/Counter para que comience a contar (TCR)

Implementacin C para Keil

Implementacin C para Keil

También podría gustarte