practica 2 ensamblador - jesus asmeth perez camacho.pdf

Upload: jesus-asmeth-perez-camacho

Post on 01-Mar-2016

63 views

Category:

Documents


0 download

TRANSCRIPT

  • Prctica 2 EnsambladorTimer(PWM)Prez Camacho Jess Asmeth

    Ingeniera en Sistemas Computacionales,Instituto Tecnolgico de Tuxtla Gutirrez,

    Tuxtla Gutirrez [email protected]

    AbstractEn este documento se recopila toda la informacinutilizada para el diseo de la prctica en ensamblador.

    I. INTRODUCCIN

    El timer a es un temporizador/contador el cual utilizaremospara nuestras aplicaciones con distintos fines ya que con elpodemos medir y generar intervalos de tiempo, utilizarlo comocontador de eventos, generar PWM a distintas frecuencias,muestrear seales etc.

    II. DESARROLLO DE CONTENIDOS

    Si tenemos un contador de pulsos al cual le insertamos unaseal cuadrada de cierto periodo conocido, entonces despusde cierto tiempo al consultar la cuenta podremos calcular eltiempo que ha transcurrido desde que iniciamos la cuenta. Ensi este es el principio bsico de este perifrico.

    Fig. 1. Modulo Timer

    Podemos ver en el diagrama a bloques del Timer_A que hayun multiplexor de 4 entradas y una salida el cual es controladopor TASSELx despus de ello hay un divisor de frecuenciascontrolado por IDx el cual puede dividir la seal por 2, 4 y 8,despus esta seal ya seleccionada y dividida pasa a alimentar

    al contador/temporizador de 16 bits almacenando la cuenta enel registro llamado TAR, adems este contador/temporizadores controlado por los bits MCx los cuales se encargan decontrolar el modo de cuenta del contador/temporizador.

    Tambin podemos ver que tanto al divisor de frecuen-cia como al contador/temporizador cuentan con un bit masllamado TACLR el cual se encarga de resetear los valorestanto del TAR como del IDx. Por ultimo podemos ver quela nica salida con la que cuenta este modulo es la TAIFG,es decir que depende como configuremos a este modulo enconjunto de en que momento ser enviada la interrupcin a laCPU. A continuacin describiremos los bits especficos antesmencionados junto con los valores que pueden tomar.

    1) TAR: En este modo existe un registro de 16 bits llamadoTAR (Timer A Register) el cual es incrementado o decremen-tado por cada flanco ascendente de la seal cuadrada del reloj,es decir que en este registro se almacena la cuenta de pulsosde periodo conocido de la seal cuadrada que incide en elcontador. Este registro es el mas importante de el timer a elcual se puede tanto leer como escribir en el.

    2) TASSELx e IDx : El contador se puede alimentar dediferentes fuentes de reloj tanto internas como externas, laseleccin de esto se hace mediante los bits llamados TASSELx(Timer A Source Select) y adems estas fuentes pueden serdivididas por 2, 4, 8 con los birs llamados IDx (Input Divider)ambos se encuentran en el registro llamado TACTLx (Timer AControl Register) . Tanto TASSELx como IDx son conjuntosde 2 bits dentro de este registro. (Para mayor informacin conrespecto a las fuentes de reloj visitar la seccin del sistemade reloj). TASSELx ocupa las posiciones 8 y 9 del registro de16 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 puedeadquirir los siguientes valores.

    00 Frecuencia de entrada/1 01 Frecuencia de entrada/2 10 Frecuencia de entrada/4 11 Frecuencia de entrada/83) MCx : El modo de cuenta es controlado por estos dos

    bits dependiendo del valor de estos dos bits podemos elegir

  • entre los 4 modos de cuenta disponibles: detenido, ascendente,continuo, ascendente/descendente. Depende de los modos decuenta el momento en el que la interrupcin ser generada, acontinuacin te mostramos una tabla con sus valores, despusde ello su descripcin 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 almacenadoen TACCR0, despus de eso la cuenta se reinicia y continua denuevo. En la siguiente imagen se puede ver mejor este modode cuenta.

    Fig. 2. Modo ascendente

    La interrupcin se genera en el momento en el que la cuentaen TAR cambia de el valor de TACCR0 a 0. Imaginemos quetenemos una frecuencia de 4MHZ externa mediante un cristalde cuarzo conectado en las terminales del puerto dos, con estaseal alimentaremos a nuestro contador/temporizador, por locual TASSELx debe ser 01, adems utilizaremos un divisorpor 4 para obtener una frecuencia de 1MHz y as un periodode 1us, para eso IDx debe ser 10.

    Lo que deseamos es interrumpir a la CPU cada 1ms por loque deben de transcurrir 1000 pulsos de la seal que hemosconfigurado para que esto ocurra, para ello cargamos 1000en TACCR0 y por ultimo iniciaremos la cuenta al poner enMCx el valor de 01. Lo nico que resta es definir la rutina deservicio a la interrupcin adems del vector de interrupcincorrespondiente para por ejemplo encender y apagar un ledcada 1ms.

    2) MODO CONTINUO: En este modo elcontador/temporizador cuenta de manera repetida hastael valor mximo permitido el cual es 0xFFFF y despusregresa a cero, as la bandera de interrupcin es colocadacuando la cuenta pasa desde 0xFFFF a 0x0, as podemosgenerar interrupciones con periodo de 65535(Tsrc) dondeTsrc es el periodo de la fuente que seleccionamos con surespectivo divisor de frecuencia. A continuacin una imagenque ilustra de mejor manera este modo.

    Fig. 3. Modo continuo

    En el ejemplo anterior este Tsrc es de 1us por tanto conesas configuraciones se pueden generar interrupciones conun periodo de 65.535ms. Adems de generar estos periodospodemos hacer uso de los registros TACCR0 y TACCR1, conellos podemos generar intervalos de tiempo independientes,posteriormente veremos como implementar esto para generarintervalos de tiempo independientes.

    3) MODO ASCENDENTE/DESCENDENTE: En este modoel contador/temporizador cuenta desde cero hasta el valor deTACCR0 de manera ascendente y despus cuenta de maneradescendente hasta cero. Esto nos ser til para la generacinde pulsos simtricos, as el periodo ser de el doble del valoralmacenado en TACCR0. A continuacin una imagen quemuestra este modo de cuenta.

    Fig. 4. Modo ascendente/descendente

    En este modo la interrupcin se genera cuando la cuentapasa de 0x0001 a 0x0000, como podemos ver en todos loscasos la bandera de interrupcin TAIFG es generada cuandola cuenta pasa por cero.

    B. TIMER EN CAPTURA

    El modo de captura nos servir para realizar mediciones detiempo, como por ejemplo para medir velocidades de computoo bien para medir periodos de tiempo generados por fuentesexternas. La precisin de la medicin depende de muchosfactores como la interferencia que puede generar la CPU oel hardware con el que se realiza, as como de la fuente dereloj aplicada adems del nmero de bits involucrados en lamedicin.

  • A continuacin un diagrama de bloques de un modulo decaptura y comparacin, donde te explicaremos los bits queinterfieren en la configuracin de este mdulo.

    Fig. 5. Diagrama de bloques (Modo captura)

    1) CAP: El bit CAP (Capture Mode) nos servir paraseleccionar este modo ya que el modulo en si puede trabajaren captura o comparacin, este ocupa la posicin 8 del registrollamado TACCTLx.

    0 Modo de comparacin 1 Modo de captura El grupo de bits llamado CCISx

    (Capture Compare Input Select) nos ayudara a seleccionar dedonde provendr nuestra seal a medir, este esta en los bits12 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, estoslos configuramos para esta funcin a travs del registro P1SELponiendo a 1 los bits 1 y 2 de este registro.

    2) CMx: Los bits CMx nos ayudaran a seleccionar el flancode captura de la seal de entrada, ya sea flaco de bajada, desubida o ambos. Cuando una captura ocurre el valor del TARes copiado en TACCRx y la bandera de interrupcin llamadaCCIFG es colocada, estos bits estn en las posiciones 14 y 15de TACCTLx

    00 No hay captura 01 Captura con flanco ascendente 10 Captura en flanco descendente 11 Captura en ambos flancos3) CCI: El bit CCI nos ayudara para leer en cualquier

    momento el nivel lgico de la entrada, este esta ubicado en laposicin 3 del registro TACCTLx.

    4) SCS: El bit llamado SCS nos ayudara a sincronizar laentrada con el reloj del contador/temporizador.

    0 Captura asincrona 1 Captura sncrona

    5) COV: Un sobre flujo lgico es provisto en cada registrode captura comparacin para indicar que una segunda capturaha ocurrido antes de que el valor de la primera captura sealedo.

    0 No ha ocurrido sobre flujo en la captura 1 Ocurri sobre flujo en la capturaComo podemos ver el registro utilizado para la configu-

    racin de este modulo aun tiene muchos bits que no hemosusado, estos bits que no hemos mencionado sern utilizadospara la configuracin del modo de comparacin.

    C. TIMER EN COMPARACION

    Este modo es seleccionado cuando CAP=1, este modo lousaremos principalmente para generar PWM o interrupcionesa intervalos especficos en el momento en que TAR cuente alvalor de los registros TACCRx. A continuacin un diagramade bloques de los mdulos de comparacin y captura.

    Fig. 6. Diagrama de mdulo de comparacin

    La unidad de salida esta presente en todo modulo de capturacomparacin esta es la que usaremos para generar sealesPWM cada unidad cuenta con ocho modos de operacinque generan diferentes seales de salida, estos modos desalida sern configurados por el grupo de tres bits llamadosOUTMODx que se encuentran en TACCTLx. A continuacinuna lista con los valores que pueden tomar estos tres bitsadems de una descripcin de la funcin que cumplen deacuerdo a cada valor asignado.

    000.-Modo Salida. En este modo la salida es igual alcontenido 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 permaneceas hasta que el contador/temporizador sea reiniciado u otromodo de salida sea seleccionado.

    010.-Modo Conmutar/Reiniciar.- La salida es conmutadacuando el contador/temporizador cuenta al valor en TACCRx yes reiniciada cuando el contador/temporizador cuenta al valorde TACCR0.

    011.- Modo Colocar/Reiniciar.- La salida es puesta a 1cuando en contador/temporizador cuenta al valor de TACCRx

  • Fig. 7. Modo Ascendente (PWM)

    Fig. 8. Modo Continuo (PWM)

    y es puesto a 0 cuando el contador/temporizador cuenta alvalor de TACCR0.

    100.- Modo Conmutar.- La salida es conmutada cuando elcontador/temporizador cuenta al valor de TACCRx, el periodode salida es el doble que el periodo del contador/temporizador

    101.- Modo Reiniciar.- La salida es puesta a cero cuandoel 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 conmutadacuando el contador/temporizador cuenta al valor de TACCRx,es puesta a 1 cuando el contador/temporizador cuenta al valoren TACCR0

    Fig. 9. Modo Ascendente/Descendente (PWM)

    111.- Modo Reiniciar/Colocar.- La salida es reiniciadacuando el contador/temporizador cuenta al valor en TACCRx,despus es puesta a 1 cuando el contador/temporizador cuentaal valor de TACCR0 A continuacin unas imgenes dondepodemos ver como es que esto afecta a la seal de PWM enla salida segn cada modo de cuenta y su respectivo modo desalida.

    A partir de conocer tanto el modo de cuenta como el modode salida podremos obtener la seal de PWM que mejor nosconvenga con el periodo y ciclo til que queramos.

    Posteriormente para realizar la prctica se declara los mdu-los a utilizar, se direciona los puertos de salida del pwm y seafecta a la variable correspondiente, para utilizar el mdulo deltimer en este caso se afecto la variable TACCR1 para variar laintensidad del led y se direcciono el puerto P1.2 como salidadel pwm.

    III. CONCLUSINEl modulo del timer del msp430g2553 nos ofrece varias

    funciones, una de las funciones se representa en esta prctica,existen diferentes modos de manejo del PWM y en estaprctica se utilizado afectado la variable TACCR1, no fuemuy complejo, solo se necesitan declarar los mdulos y lasvariables a utilizar, en esta prctica solo se utiliza un mdulopero uniendo todos los mdulos del LaunchPad msp430g2553podremos 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/

  • https://www.youtube.com/watch?v=oOWDnlvPUUA

    Fig. 10. Resultados de la prctica

    https://www.youtube.com/watch?v=oOWDnlvPUUA

    I IntroduccinII DESARROLLO DE CONTENIDOSII-1 TARII-2 TASSELx e IDx II-3 MCx

    II-A MODOS DE CUENTAII-A1 MODO ASCENDENTE II-A2 MODO CONTINUOII-A3 MODO ASCENDENTE/DESCENDENTE

    II-B TIMER EN CAPTURA II-B1 CAPII-B2 CMxII-B3 CCIII-B4 SCSII-B5 COV

    II-C TIMER EN COMPARACION

    III ConclusinReferences