Este documento describe cómo usar el temporizador/contador del microcontrolador MSP430G2553 para generar señales PWM de diferentes frecuencias. Explica los modos de cuenta del temporizador, cómo configurar la fuente de reloj, la división de frecuencia y los modos de salida para generar PWM. También cubre el uso del temporizador para mediciones de tiempo usando el modo de captura. Finalmente, detalla los pasos seguidos en la práctica para variar la intensidad de un LED usando PWM.
Timer PIC Los temporizadores o Timers son una de las características más importantes para un programador de sistemas embebidos. Cada aplicación que diseñamos involucrará de alguna manera una aplicación de tiempo, como encender o apagar algún dispositivo después de un intervalo de tiempo específico. A diferencia de simplemente usar el delay_ms() del CCS C, los timers son mucho más versátiles y precisos, dado que con el macro de delay_ms() lo que hacemos es detener la ejecución del PIC, sin embargo con el timer, podemos continuar nuestra ejecución y realizar el conteo o temporización en segundo plano. El microcontrolador PIC18F4550 tiene 4 temporizadores: 1. Timer 0 (8 bits) 2. Timer 1(16 bits) 3. Timer 2(8 bits) 4. Timer 3(16 bits) o configurable como contador
Descripcion de un montaje de un circuito contador ascendente de 00 a 90 con aviso acustico. Este montaje es un tipico circuito práctico para señalizar mediante dos display de 7 segmentos y avisar mediante un zumbador piezoelectrico del turno correspondiente en un establecimiento público.Esta basado en circuitos con puertas TTL.
Instrucciones del procedimiento para la oferta y la gestión conjunta del proceso de admisión a los centros públicos de primer ciclo de educación infantil de Pamplona para el curso 2024-2025.
Un libro sin recetas, para la maestra y el maestro Fase 3.pdfsandradianelly
Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestra y el maestro Fase 3Un libro sin recetas, para la maestr
1. Práctica 2 Ensamblador
Timer(PWM)
Pérez Camacho Jesús Asmeth
Ingeniería en Sistemas Computacionales,
Instituto Tecnológico de Tuxtla Gutiérrez,
Tuxtla Gutiérrez Chiapas
killerMstr1@gmail.com
Abstract—En este documento se recopila toda la información
utilizada para el diseño de la práctica en ensamblador.
I. INTRODUCCIÓN
El timer a es un temporizador/contador el cual utilizaremos
para nuestras aplicaciones con distintos fines ya que con el
podemos medir y generar intervalos de tiempo, utilizarlo como
contador de eventos, generar PWM a distintas frecuencias,
muestrear señales etc.
II. DESARROLLO DE CONTENIDOS
Si tenemos un contador de pulsos al cual le insertamos una
señal cuadrada de cierto periodo conocido, entonces después
de cierto tiempo al consultar la cuenta podremos calcular el
tiempo que ha transcurrido desde que iniciamos la cuenta. En
si este es el principio básico de este periférico.
Fig. 1. Modulo Timer
Podemos ver en el diagrama a bloques del Timer_A que hay
un multiplexor de 4 entradas y una salida el cual es controlado
por TASSELx después de ello hay un divisor de frecuencias
controlado por IDx el cual puede dividir la señal por 2, 4 y 8,
después esta señal ya seleccionada y dividida pasa a alimentar
al contador/temporizador de 16 bits almacenando la cuenta en
el registro llamado TAR, además este contador/temporizador
es controlado por los bits MCx los cuales se encargan de
controlar el modo de cuenta del contador/temporizador.
También podemos ver que tanto al divisor de frecuen-
cia como al contador/temporizador cuentan con un bit mas
llamado TACLR el cual se encarga de resetear los valores
tanto del TAR como del IDx. Por ultimo podemos ver que
la única salida con la que cuenta este modulo es la TAIFG,
es decir que depende como configuremos a este modulo en
conjunto de en que momento será enviada la interrupción a la
CPU. A continuación describiremos los bits específicos antes
mencionados junto con los valores que pueden tomar.
1) TAR: En este modo existe un registro de 16 bits llamado
TAR (Timer A Register) el cual es incrementado o decremen-
tado por cada flanco ascendente de la señal cuadrada del reloj,
es decir que en este registro se almacena la cuenta de pulsos
de periodo conocido de la señal cuadrada que incide en el
contador. Este registro es el mas importante de el timer a el
cual se puede tanto leer como escribir en el.
2) TASSELx e IDx : El contador se puede alimentar de
diferentes fuentes de reloj tanto internas como externas, la
selección de esto se hace mediante los bits llamados TASSELx
(Timer A Source Select) y además estas fuentes pueden ser
divididas por 2, 4, 8 con los birs llamados IDx (Input Divider)
ambos se encuentran en el registro llamado TACTLx (Timer A
Control Register) . Tanto TASSELx como IDx son conjuntos
de 2 bits dentro de este registro. (Para mayor información con
respecto a las fuentes de reloj visitar la sección del sistema
de reloj). TASSELx ocupa las posiciones 8 y 9 del registro de
16 bits TACTL y puede adquirir los siguientes valores.
• 00 TACLK Reloj del Timer_A (Timer_A Clock)
• 01 ACLK Reloj auxiliar (Auxiliary Clock)
• 10 SMCLK Reloj sub principal (Semi Master Clock)
• 11 INCLK No disponible para nuestro caso IDx ocupa
las posiciones 6 y 7 del registro de 16 bits TACTL y puede
adquirir los siguientes valores.
• 00 Frecuencia de entrada/1
• 01 Frecuencia de entrada/2
• 10 Frecuencia de entrada/4
• 11 Frecuencia de entrada/8
3) MCx : El modo de cuenta es controlado por estos dos
bits dependiendo del valor de estos dos bits podemos elegir
2. entre los 4 modos de cuenta disponibles: detenido, ascendente,
continuo, ascendente/descendente. Depende de los modos de
cuenta el momento en el que la interrupción será generada, a
continuación te mostramos una tabla con sus valores, después
de ello su descripción individual mas detallada.
• 00 detenido
• 01 ascendente
• 10 continuo
• 11 ascendente/descendente
A. MODOS DE CUENTA
1) MODO ASCENDENTE : En este modo el conta-
dor/temporizador contara desde cero hasta el valor almacenado
en TACCR0, después de eso la cuenta se reinicia y continua de
nuevo. En la siguiente imagen se puede ver mejor este modo
de cuenta.
Fig. 2. Modo ascendente
La interrupción se genera en el momento en el que la cuenta
en TAR cambia de el valor de TACCR0 a 0. Imaginemos que
tenemos una frecuencia de 4MHZ externa mediante un cristal
de cuarzo conectado en las terminales del puerto dos, con esta
señal alimentaremos a nuestro contador/temporizador, por lo
cual TASSELx debe ser 01, además utilizaremos un divisor
por 4 para obtener una frecuencia de 1MHz y así un periodo
de 1us, para eso IDx debe ser 10.
Lo que deseamos es interrumpir a la CPU cada 1ms por lo
que deben de transcurrir 1000 pulsos de la señal que hemos
configurado para que esto ocurra, para ello cargamos 1000
en TACCR0 y por ultimo iniciaremos la cuenta al poner en
MCx el valor de 01. Lo único que resta es definir la rutina de
servicio a la interrupción además del vector de interrupción
correspondiente para por ejemplo encender y apagar un led
cada 1ms.
2) MODO CONTINUO: En este modo el
contador/temporizador cuenta de manera repetida hasta
el valor máximo permitido el cual es 0xFFFF y después
regresa a cero, así la bandera de interrupción es colocada
cuando la cuenta pasa desde 0xFFFF a 0x0, así podemos
generar interrupciones con periodo de 65535(Tsrc) donde
Tsrc es el periodo de la fuente que seleccionamos con su
respectivo divisor de frecuencia. A continuación una imagen
que ilustra de mejor manera este modo.
Fig. 3. Modo continuo
En el ejemplo anterior este Tsrc es de 1us por tanto con
esas configuraciones se pueden generar interrupciones con
un periodo de 65.535ms. Además de generar estos periodos
podemos hacer uso de los registros TACCR0 y TACCR1, con
ellos podemos generar intervalos de tiempo independientes,
posteriormente veremos como implementar esto para generar
intervalos de tiempo independientes.
3) MODO ASCENDENTE/DESCENDENTE: En este modo
el contador/temporizador cuenta desde cero hasta el valor de
TACCR0 de manera ascendente y después cuenta de manera
descendente hasta cero. Esto nos será útil para la generación
de pulsos simétricos, así el periodo será de el doble del valor
almacenado en TACCR0. A continuación una imagen que
muestra este modo de cuenta.
Fig. 4. Modo ascendente/descendente
En este modo la interrupción se genera cuando la cuenta
pasa de 0x0001 a 0x0000, como podemos ver en todos los
casos la bandera de interrupción TAIFG es generada cuando
la cuenta pasa por cero.
B. TIMER EN CAPTURA
El modo de captura nos servirá para realizar mediciones de
tiempo, como por ejemplo para medir velocidades de computo
o bien para medir periodos de tiempo generados por fuentes
externas. La precisión de la medición depende de muchos
factores como la interferencia que puede generar la CPU o
el hardware con el que se realiza, así como de la fuente de
reloj aplicada además del número de bits involucrados en la
medición.
3. A continuación un diagrama de bloques de un modulo de
captura y comparación, donde te explicaremos los bits que
interfieren en la configuración de este módulo.
Fig. 5. Diagrama de bloques (Modo captura)
1) CAP: El bit CAP (Capture Mode) nos servirá para
seleccionar este modo ya que el modulo en si puede trabajar
en captura o comparación, este ocupa la posición 8 del registro
llamado TACCTLx.
• 0 Modo de comparación
• 1 Modo de captura El grupo de bits llamado CCISx
(Capture Compare Input Select) nos ayudara a seleccionar de
donde provendrá nuestra señal a medir, este esta en los bits
12 y 13 de TACCTLx.
• 00 Bit CCIxA del encapsulado
• 01 Bit CCIxB del encapsulado
• 10 GND
• 11 VCC Nuestro dispositivo solo cuenta con CCI0A y
CCI1A los cuales se ubican en los puertos P1.1 y P1.2, estos
los configuramos para esta función a través del registro P1SEL
poniendo a 1 los bits 1 y 2 de este registro.
2) CMx: Los bits CMx nos ayudaran a seleccionar el flanco
de captura de la señal de entrada, ya sea flaco de bajada, de
subida o ambos. Cuando una captura ocurre el valor del TAR
es copiado en TACCRx y la bandera de interrupción llamada
CCIFG es colocada, estos bits están en las posiciones 14 y 15
de TACCTLx
• 00 No hay captura
• 01 Captura con flanco ascendente
• 10 Captura en flanco descendente
• 11 Captura en ambos flancos
3) CCI: El bit CCI nos ayudara para leer en cualquier
momento el nivel lógico de la entrada, este esta ubicado en la
posición 3 del registro TACCTLx.
4) SCS: El bit llamado SCS nos ayudara a sincronizar la
entrada con el reloj del contador/temporizador.
• 0 Captura asincrona
• 1 Captura síncrona
5) COV: Un sobre flujo lógico es provisto en cada registro
de captura comparación para indicar que una segunda captura
ha ocurrido antes de que el valor de la primera captura sea
leído.
• 0 No ha ocurrido sobre flujo en la captura
• 1 Ocurrió sobre flujo en la captura
Como podemos ver el registro utilizado para la configu-
ración de este modulo aun tiene muchos bits que no hemos
usado, estos bits que no hemos mencionado serán utilizados
para la configuración del modo de comparación.
C. TIMER EN COMPARACION
Este modo es seleccionado cuando CAP=1, este modo lo
usaremos principalmente para generar PWM o interrupciones
a intervalos específicos en el momento en que TAR cuente al
valor de los registros TACCRx. A continuación un diagrama
de bloques de los módulos de comparación y captura.
Fig. 6. Diagrama de módulo de comparación
La unidad de salida esta presente en todo modulo de captura
comparación esta es la que usaremos para generar señales
PWM cada unidad cuenta con ocho modos de operación
que generan diferentes señales de salida, estos modos de
salida serán configurados por el grupo de tres bits llamados
OUTMODx que se encuentran en TACCTLx. A continuación
una lista con los valores que pueden tomar estos tres bits
además de una descripción de la función que cumplen de
acuerdo a cada valor asignado.
000.-Modo Salida. En este modo la salida es igual al
contenido del bit OUTx en este mismo registro
001.-Modo Colocar. La salida pasa a 1 cuando el conta-
dor/temporizador cuenta al valor en TACCRx y permanece
así hasta que el contador/temporizador sea reiniciado u otro
modo de salida sea seleccionado.
010.-Modo Conmutar/Reiniciar.- La salida es conmutada
cuando el contador/temporizador cuenta al valor en TACCRx y
es reiniciada cuando el contador/temporizador cuenta al valor
de TACCR0.
011.- Modo Colocar/Reiniciar.- La salida es puesta a 1
cuando en contador/temporizador cuenta al valor de TACCRx
4. Fig. 7. Modo Ascendente (PWM)
Fig. 8. Modo Continuo (PWM)
y es puesto a 0 cuando el contador/temporizador cuenta al
valor de TACCR0.
100.- Modo Conmutar.- La salida es conmutada cuando el
contador/temporizador cuenta al valor de TACCRx, el periodo
de salida es el doble que el periodo del contador/temporizador
101.- Modo Reiniciar.- La salida es puesta a cero cuando
el contador/temporizador cuenta al valor de TACCRx y per-
manece ahí hasta que otro modo de salida sea seleccionado.
110.- Modo Conmutar/Colocar.- La salida es conmutada
cuando el contador/temporizador cuenta al valor de TACCRx,
es puesta a 1 cuando el contador/temporizador cuenta al valor
en TACCR0
Fig. 9. Modo Ascendente/Descendente (PWM)
111.- Modo Reiniciar/Colocar.- La salida es reiniciada
cuando el contador/temporizador cuenta al valor en TACCRx,
después es puesta a 1 cuando el contador/temporizador cuenta
al valor de TACCR0 A continuación unas imágenes donde
podemos ver como es que esto afecta a la señal de PWM en
la salida según cada modo de cuenta y su respectivo modo de
salida.
A partir de conocer tanto el modo de cuenta como el modo
de salida podremos obtener la señal de PWM que mejor nos
convenga con el periodo y ciclo útil que queramos.
Posteriormente para realizar la práctica se declara los módu-
los a utilizar, se direciona los puertos de salida del pwm y se
afecta a la variable correspondiente, para utilizar el módulo del
timer en este caso se afecto la variable TACCR1 para variar la
intensidad del led y se direcciono el puerto P1.2 como salida
del pwm.
III. CONCLUSIÓN
El modulo del timer del msp430g2553 nos ofrece varias
funciones, una de las funciones se representa en esta práctica,
existen diferentes modos de manejo del PWM y en esta
práctica se utilizado afectado la variable TACCR1, no fue
muy complejo, solo se necesitan declarar los módulos y las
variables a utilizar, en esta práctica solo se utiliza un módulo
pero uniendo todos los módulos del LaunchPad msp430g2553
podremos hacer grandes cosas.
[?]
REFERENCES
[1] http://www.ccs.neu.edu/home/noubir/Courses/SWARM/S09/slides/msp430-
clocks-timers.pdf
[2] http://homepages.ius.edu/RWISMAN/C335/HTML/msp430Timer.HTM
[3] http://web.eng.fiu.edu/watsonh/eel4730/slap113.pdf
[4] https://courses.cs.washington.edu/courses/cse466/11au/calendar/04-
Interrupts-posted.pdf
[5] http://dbindner.freeshell.org/msp430/