Está en la página 1de 111

2.1.

Microcontrolador MSP430_4794

La familia MSP430 de microcontroladores de Texas Instruments de ultra bajo consumo de potencia, consta de varios dispositivos con diferentes conjuntos de perifricos orientados para diferentes aplicaciones. La tecnologa, combinada con cinco modos de bajo consumo se ha optimizado para lograr una mayor vida til de la batera en aplicaciones de medicin porttiles. El dispositivo cuenta con una CPU con una tecnologa RISC (Reduced Instruction Set Computer) de 16-bit, registros de 16-bits, y generadores de constantes que contribuyen a la mxima eficiencia del cdigo. El oscilador controlado digitalmente (DCO) permite pasar de los modos de bajo consumo al modo activo en menos de 6s. Las series MSP430F47xx estn dirigidas a contadores elctricos monofsicos con tres o cuatro convertidores A / D de 16-bit sigma-delta. Cada canal tiene un par de entrada diferencial y ganancia de entrada programables. Tienen un alto rendimiento, ideal para su uso en mediciones de precisin. En la siguiente figura se puede observar como est organizada la arquitectura de los microcontroladores de esta familia, cuyas funciones y componentes se explicarn a continuacin.

Figura Error! No hay texto con el estilo especificado en el documento. .1 Arquitectura del microcontrolador MSP430_4794.

1.1.1.

Espacio de direcciones

Los MSP430 tienen una arquitectura de Von Neumann, de un espacio de direcciones compartido con los registros de funciones especiales (SFRs), los perifricos, la memoria RAM, y la memoria Flash/ROM tal como queda ilustrado en la tabla 2.1. Los datos pueden ser accedidos como bytes o como palabras. Memoria Main: Vector de interrupcin Main: Memoria de cdigo Memoria con posibilidad de proteccin Memoria de arranque RAM Perifricos Tamao Flash Flash Tamao Flash ROM Tamao 16-bit 8-bit 8-bit SFR 60KB 0FFFFh to 0FFE0h 0FFFFh to 01100h 256 Byte 010FFh to 01000h 1KB 0FFFh to 0C00h 2.5KB 0BFFh to 0200h 01FFh to 0100h 0FFh to 010h 0Fh to 00h

Tabla Error! No hay texto con el estilo especificado en el documento..1 Distribucin de memoria.

Flash/ROM Esta memoria puede ser programada a travs del puerto JTAG utilizando el bootstrap loader (BSL- cargador de inicializacin). Tiene una capacidad de 60 KB y las direcciones comprenden desde 0FFFFh hasta 0FFE0h para el vector de interrupcin y del 0FFFFh hasta 01100h para el cdigo de memoria. A parte dispone de 256 Bytes para memoria de informacin comprendiendo los espacios desde 010FFh hasta 01000h y de 1 KB para la memoria de arranque siendo sus espacios de direcciones los que van desde 0FFFh a 0C00h. Perifricos Estn conectados a la CPU mediante los buses de datos, direcciones y buses de control de la CPU, pudiendo ser manejados utilizando todas las instrucciones. Para los perifricos de 16 bit estn reservados los espacios de memoria comprendidos entre 01FFh a 0100h y para los de 8 bit del 0FFh al 010h. RAM Este tipo de memoria cuenta con 2.5 KB y sus espacios de memoria van desde 0BFFh al 0200h. Registros de funciones especiales (SFRs) Algunas funciones para los perifricos se configuran en los SFRs. stos estn localizados en los ltimos 16 bytes de los espacios de direcciones. Las direcciones van desde 0Fh hasta 00h.

1.1.2.

System resets, Interrupts and Operating modes

1.1.2.1. System resets and Initialization La circuitera de reinicio del sistema que se muestra en la figura 2.2 es la que pone en funcionamiento tanto la seal de Power-On Reset (POR) como la de PowerUp Clear (PUC). Diferentes eventos activan estas seales de puesta a cero y existen diferentes condiciones iniciales en funcin de la seal que se genere. El POR es un mecanismo de reinicio del sistema que slo se genera con los siguientes eventos: El arranque del microcontrolador. Una nivel bajo en el pin /NMI cuando se configura en el modo de reset. Un nivel bajo generado por SVS cuando PORON=1.

PUC siempre se genera cuando POR se ha generado, pero no sucede a la inversa. Los siguientes eventos activan el PUC: La existencia de la seal de POR. La expiracin del temporizador Watchdog, slo en modo Watchdog. Una violacin en la clave de seguridad del Watchdog timer. Una violacin en la clave de seguridad de la memoria flash.

Figura Error! No hay texto con el estilo especificado en el documento..2 Esquema de los mecanismos Power-On Reset y Power-Up Clear

CONDICIONES INICIALES DEL DISPOSITIVO DESPUS DEL RESET El pin /NMI se ajusta en el modo reset.

Los pines de entrada y salida estn ajustados en el modo de entrada por defecto. Los distintos perifricos y registros se inicializan como se describe en sus apartados correspondientes. El registro de estado o Status Register (SR) se reinicia. El temporizador Watchdog se inicia en el modo de Watchdog. El Program Counter (PC) se carga con la direccin contenida en la posicin del vector de puesta a cero (0FFFEh). La ejecucin de la CPU comienza en esa direccin.

INICIALIZACIN DEL SOFTWARE Despus del reinicio del sistema, el software de usuario debe inicializar el microcontrolador MSP430 para los requerimientos de la aplicacin. Por consiguiente suceder: La inicializacin de Stack Pointer (SP), normalmente al mximo de RAM. La inicializacin del Watchdog a los requisitos de la aplicacin. Configuracin de los mdulos perifricos a los requisitos de la aplicacin.

1.1.2.2. Interrupciones Las prioridades de las interrupciones se fijan y definen por la disposicin de los mdulos conectados en cadena como aparece en la figura 2.3. El mdulo ms cercano al CPU/NMIRS tiene la mayor prioridad. Las prioridades de las interrupciones determinan que interrupcin ser efectiva cuando ms de una estn pendientes al mismo tiempo. Existen tres tipos de interrupciones: System reset. (Non)-maskable NMI. Maskable.

Figura Error! No hay texto con el estilo especificado en el documento..3 Esquema de prioridad de las interrupciones.

1.1.2.2.1. (Non)-Maskable Interrupts (NMI) Las interrupciones NMI no estn enmascaradas por el bit GIE (General interrupt enable), si no que se habilitan por bits de interrupciones individuales (ACCVIE, NMIIE, OFIE). Cuando una interrupcin NMI se acepta, todos los bits de habilitacin de interrupciones NMI se ponen a cero automticamente. La ejecucin del programa empieza en la direccin del vector de la interrupcin NMI almacenada, en 0FFFCh. El software de usuario debe poner a 1 los bits de habilitacin de interrupciones NMI para que aquellas interrupciones vuelvan a ser habilitadas. En la figura 2.4 se muestra la forma de originar las NMI.

Figura Error! No hay texto con el estilo especificado en el documento..4 Diagrama de bloques de los orgenes de las NMI.

Una interrupcin NMI puede ser generada por tres vas distintas: Cuando el pin /NMI es configurado en el modo NMI.

El fallo de un oscilador. Una violacin de acceso a la memoria flash. RESET/NMI PIN

En el arranque, el pin pines del pin el pin

/NMI se configura en el modo reset. La funcin de los

/NMI se selecciona en el Watchdog Control Register (WDTCTL). Si el /NMI siga en su estado bajo. Cuando ste cambia a su estado alto, la CPU

/NMI se pone a 1 en la funcin reset, la CPU se mantiene en reset mientras

inicia la ejecucin del programa en la direccin de la palabra guardada en el vector de reset, 0FFFEh. Si el pin /NMI se configura por el software de usuario en la funcin NMI, un

flanco de seal seleccionado por el bit WDTNMIES genera una interrupcin NMI si el bit NMIIE est a 1. El /NMI apunta a NMIIFG que tambin est a 1. FALLO DEL OSCILADOR La seal de fallo del oscilador advierte de una condicin de error posible con el cristal de cuarzo. El fallo de oscilador puede ser habilitado para generar una interrupcin NMI por la configuracin del bit OFIE. El flag OFIFG puede ser comprobado por la rutina de servicio de interrupcin NMI para averiguar si el fallo del oscilador origin el NMI. El PUC puede disparar un fallo del oscilador, porque el PUC cambie el LFXT1 al modo LF, as mismo desactivando el modo HF. La seal de PUC tambin desactiva el oscilador XT2. VIOLACIN DE ACCESO A LA MEMORIA FLASH El flag ACCVIFG se pone a 1 cuando ocurre una violacin de acceso al flash. El Flash Access Violation puede ser habilitado para generar una interrupcin NMI configurando el bit ACCVIE. El flag ACCVIFG puede entonces comprobarse por la rutina de servicio de interrupcin NMI para averiguar si la violacin de acceso a la flash provoc el NMI.

1.1.2.2.2. Maskable Interrupts Las interrupciones enmascarables son ocasionadas por los perifricos con capacidad de interrupcin incluyendo el desbordamiento del temporizador Watchdog en el modo de intervalo temporizador. Cada fuente de interrupcin enmascarable puede ser deshabilitada individualmente por su correspondiente bit de habilitacin de interrupcin, o pueden deshabilitarse todas las interrupciones enmascarables por el bit de habilitacin de interrupcin general (GIE) en el registro de estado SR. 1.1.2.2.3. Procesamiento de las Interrupciones Cuando se realiza un peticin de interrupcin por un perifrico y el bit de habilitacin de interrupcin de ese perifrico y el bit GIE estn a 1, se llama a la rutina de servicio de interrupcin apropiada. Aprobacin de las Interrupciones El perodo de latencia de una interrupcin son seis ciclos, empezando por la aceptacin del requerimiento de una interrupcin y durando hasta el inicio de la ejecucin de la primera instruccin de la rutina de servicio de la interrupcin como se muestra en la figura 2.5. La lgica de la interrupcin se ejecutara de la siguiente manera: 1) Cualquier instruccin que se est ejecutando se finalizar. 2) El contador de programa PC, que apunta a la siguiente instruccin, se salva su valor en la pila para ejecutarse despus a partir de la instruccin siguiente a la ltima ejecutada. 3) El valor del registro de estado SR se guarda tambin en la pila. 4) La interrupcin ms prioritaria es elegida si existen ms de una interrupcin al mismo tiempo durante la ltima instruccin y estn pendientes de servicio. 5) El marcador de solicitud de interrupcin restablece automticamente los marcadores de fuente nica. 6) El registro de estado SR se pone a 0 quedando tan solo el valor de SCG0, que permanece igual. Esto termina cualquier modo de bajo consumo. Debido a que el bit GIE = 0, interrupciones posteriores se desactivan. 7) El contenido del vector de interrupcin se carga en el PC y el programa continua con la rutina de servicio de interrupciones en esa direccin.

Figura Error! No hay texto con el estilo especificado en el documento..5 Rutina de servicio de interrupcin.

Retorno de Interrupcin La rutina de tratamiento de interrupciones termina con la siguiente instruccin: RETI (Return froman interrupt service routine) El retorno de interrupcin necesita 5 ciclos para ejecutar las acciones siguientes y que se muestran en la figura 2.6: 1) El SR con todos sus ajustes previos aparece de la pila. Todos los ajustes previos del GIE, CPUOFF, etc., entran ahora en vigor, sin tener en cuenta los ajustes utilizados en la rutina de servicio de interrupcin. 2) El PC aparece de la pila y empieza su ejecucin en el punto en el que fue interrumpido.

Figura Error! No hay texto con el estilo especificado en el documento..6 Funcionamiento del retorno de interrupcin

1.1.2.2.4. Vectores de interrupcin Los vectores de interrupcin y las direcciones de inicio de encendido estn localizadas en el rango de direcciones de 0FFFFh hasta 0FFE0h como se describe en la tabla 2.1. Un vector es programado por el usuario con la direccin de 16-bit de la correspondiente rutina de servicio de interrupcin. Algunos dispositivos pueden contener ms vectores de interrupcin.
Fuente de Interrupcin Power-Up External Reset Watchdog Flash Memory PC OutofRange (Ver nota 4) NMI Oscillator Fault Flash Memory Access Violation Timer_B3 Timer_B3 Comparator_A Watchdog Timer USCI_A0/B0 Receive Flags de Interrupcin PORIFG RSTIFG WDTIFG KEYV (Ver nota 1) NMIIFG (Ver notas 1 y 3) OFIFG (Ver notas 1 y 3) ACCVIFG (Ver notas 1 y 3) TBCCR0 CCIFG (Ver nota 2) TBCCR1 to TBCCR2 CCIFGs TBIFG (Ver notas 1 y 2) CAIFG WDTIFG UCA0RXIFG, UCB0RXIFG (Ver nota 1 y 5) UCA0TXIFG, UCB0TXIFG (Ver nota 1 y 6) SD16CCTLx SD16OVIFG, SD16CCTLx SD16IFG (Ver notas 1 y 2) TACCR0 CCIFG (Ver nota 2) TACCR1 y TACCR2 CCIFGs, TAIFG (Ver notas 1 y 2) P1IFG.0 to P1IFG.7 (Ver notas 1 y 2) UCA1RXIFG, UCB1RXIFG (Ver notas 1 y 2) UCA1TXIFG, UCB1TXIFG (Ver notas 1 y 2) P2IFG.0 to P2IFG.7 (Ver notas 1 y 2) BTIFG Tipo de Interrupcin Direccin Prioridad

Reset

0FFFEh

15, highest

NMI

0FFFCh

14

Enmascarada Enmascarada Enmascarada Enmascarada Enmascarada

0FFFAh 0FFF8h 0FFF6h 0FFF4h 0FFF2h

13 12 11 10 9

USCI_A0/B0 Transmit

Enmascarada

0FFF0h

SD16_A

Enmascarada

0FFEEh

Timer_A3 Timer_A3 I/O Port P1 (Eight Flags) USCI_A1/B1 Receive

Enmascarada Enmascarada Enmascarada Enmascarada

0FFECh 0FFEAh 0FFE8h 0FFE6h

6 5 4 3

USCI_A1/B1 Transmit I/O Port P2 (Eight Flags) Basic Timer1

Enmascarada Enmascarada Enmascarada

0FFE4h 0FFE2h 0FFE0h

2 1 0, lowest

Tabla Error! No hay texto con el estilo especificado en el documento..2 Fuentes, marcadores y vectores de interrupcin.

Nota 1: Flags de fuentes mltiples. Nota 2: Los flags de interrupcin estn en los mdulos. Nota 3: El bit individual de interrupcin habilitada puede desactivar un evento de interrupcin, pero no pueden hacerlo las GIE. Nota 4: El reset se ejecuta si la CPU intenta obtener instrucciones del rango de direcciones del mdulo de registro de memoria (0h a 01FFh). Nota 5: En el modo SPI: UCB0RXIFG. En el modo I2C: UCALIFG, UCNACKIFG, ICSTTIFG, UCSTPIFG en el registro UCB0STAT. Nota 6: En el modo UART/SPI : UCB0TXIFG. En el modo I2C : UCB0RXIFG, UCB0TXIFG. Nota 7: En el modo SPI : UCB1RXIFG. En el modo I2C : UCALIFG, UCNACKIFG, ICSTTIFG, UCSTPIFG en el registro UCB1STAT. Nota 8: En el modo UART/SPI : UCB1TXIFG. En el modo I2C : UCB1RXIFG, UCB1TXIFG.

1.1.2.2.5. Registros de funciones especiales (SFRs) Algunos mdulos habilitan bits, las interrupciones habilitan bits, y los marcadores de interrupcin se encuentran en los SFRs. stos estn localizados en el rango de direcciones ms pequeos y estn implementados en formato byte. Deben ser accedidos utilizando instrucciones del tipo byte. La mayora de las interrupciones y de los bits de los mdulos de habilitacin se recogen en los espacios de memoria ms bajos. Los bits de registros de funciones especiales que no estn asignados a un propsito funcional no estn fsicamente en el dispositivo. Esta disposicin provee un sencillo acceso del software. Habilitacin de interrupciones 1 y 2

WDTIE Interrupcin del temporizador Watchdog habilitada. Inactiva si el modo Watchdog est seleccionado. Activa si el temporizador est configurado en el modo de intervalo. OFIE Habilitacin de fallo del oscilador. NMIIE Habilitacin de interrupcin NMI. ACCVIE Habilitacin de violacin de acceso a la flash.

UCA0RXIE USCI_A0 habilitacin de interrupcin de recepcin. UCA0TXIE USCI_A0 habilitacin de interrupcin transmisin. UCB0RXIE USCI_B0 habilitacin de interrupcin de recepcin. UCB0TXIE USCI_B0 habilitacin de interrupcin de transmisin. BTIE Habilitacin de interrupcin de temporizador bsico.

Registros 1 y 2 del flag de interrupcin

WDTIFG Puesta a 1 ante desbordamiento del temporizador Watchdog o violacin de la clave de seguridad. Puesta a 0 al encender Vcc o en condicin de /NMI. reset en el modo reset del pin OFIFG Puesta a 1 del flag en fallo del oscilador. PORIFG Puesta a 0 externa del flag de interrupcin. Puesta a 1 en condicin de reset en el modo reset del pin /NMI. Puesta a 0 al encender Vcc. RSTIFG flag de interrupcin de encendido. Puesta a 1 al encender Vcc. NMIIFG Puesta a 1 a travs del pin /NMI.

UCA0RXIFG USCI_A0 flag de interrupcin para recepcin. UCA0TXIFG USCI_A0 flag de interrupcin para transmisin. UCB0RXIFG USCI_B0 flag de interrupcin para recepcin. UCB0TXIFG USCI_B0 flag de interrupcin para transmisin. BTIFG flag de interrupcin del temporizador bsico.

Leyenda: rw-0 Bit de lectura y escritura. Se pone 0 con el PUC. rw-1 Bit de lectura y escritura. Se pone a 1 con el PUC. rw-(0) Bit de lectura y escritura. Se pone a 0 con el POR. rw-(1) Bit de lectura y escritura. Se pone a 1 con el POR.

1.1.2.3. Modos de funcionamiento El microcontrolador MSP430 tiene un modo activo de funcionamiento y cinco modos de seleccin de programa de bajo consumo. Un evento de interrupcin puede despertar el dispositivo de cualquiera de los modos de bajo consumo, atendiendo a la solicitud y restaurando de nuevo al modo de bajo consumo en el retorno del programa de la interrupcin. Los cinco modos de bajo consumo se configuran con los bits CPUOFF, OSCOFF, SCG0 y SCG1 en el registro de estado. La ventaja de incluir estos bits de control de los modos de funcionamiento en el SR, es que el modo de funcionamiento presente se almacena en la pila durante la rutina de servicio de interrupcin. El flujo de programa vuelve al modo de funcionamiento anterior si el valor del SR guardado no se altera durante la rutina de servicio de interrupcin. El flujo de programa puede ser devuelto a un modo de funcionamiento diferente mediante la manipulacin del valor del SR de la pila dentro de la rutina de servicio de interrupcin. Se puede acceder con cualquier instruccin al bit de control de modos de funcionamiento y a la pila. Al ajustar cualquiera de los bits de control de modos de funcionamiento, el modo elegido entra en vigor inmediatamente. Los perifricos que funcionan con algn reloj desactivado, se desactivan hasta que se vuelve a activar el reloj. Los perifricos tambin se pueden desactivar con su ajuste individual del registro de control. Todos los puertos de entrada y salida y los registros de memoria RAM permanecen invariables. La reactivacin se habilita a travs de todas las habilitaciones de interrupcin. Los modos de funcionamiento son los siguientes:

Active mode (AM) Todos los relojes se activan.

Low-power mode 0 (LPM0) La CPU se desactiva. El reloj de sub-sistema (SMCLK) y auxiliar (ACLK) permanecen activos. El reloj maestro se desactiva. El control de bucle del modulo FLL+ permanece activo.

Low-power mode 1 (LPM1) La CPU se desactiva. El control de bucle del modulo FLL+ se desactiva. El reloj de sub-sistema (SMCLK) y auxiliar (ACLK) permanecen activos. El reloj maestro se desactiva.

Low-power mode 2 (LPM2) La CPU se desactiva. El reloj maestro (MCLK), el control de bucle del modulo FLL+ y la fuente de oscilador controlado digitalmente (DCOCLK) se desactivan. El generador dc DCO permanece activo. El ACLK permanece activo.

Low-power mode 3(LPM3) La CPU se desactiva. El MCLK, el control de bucle FLL+ y el DCOCLK se desactivan. El generador dc DCO se desactiva. El ACLK permanece activo.

Low-power mode 4 (LPM4) La CPU se desactiva. El ACLK se desactiva. El MCLK, el control de bucle FLL+ y el DCOCLK se desactivan. El generador dc DCO se desactiva. El reloj de cuarzo se para.

Figura Error! No hay texto con el estilo especificado en el documento..7 Modos de funcionamiento

1.1.3.

CPU

La CPU MSP430 tiene una arquitectura RISC de 16-bit que es muy transparente para la aplicacin. Todas las operaciones, a parte de las instrucciones de flujo del programa que son 27, se llevan a cabo como operaciones de registro en conjunto con siete modos de direccionamiento para el operando de la fuente y cuatro modos de direccionamiento para el operando de destino.

Figura Error! No hay texto con el estilo especificado en el documento..8 Diagrama de bloques de la CPU.

1.1.3.1. Registros La CPU est integrada con 16 registros de 16-bit que facilitan la reduccin del tiempo de ejecucin de instrucciones. El tiempo de ejecucin de la operacin registro a registro es un ciclo del reloj de la CPU. Cuatro de los registros, R0 a R3, se dedican como contador de programa, puntero de pila, registro de estado, y un generador constante, respectivamente. Los registros restantes son de uso general. Los perifricos estn conectados a la CPU a partir de datos, direccin y control de los buses, y se puede manejar con todas las instrucciones. CONTADOR DE PROGRAMA (PC) El contador de programa de 16-bit (PC/R0) apunta a la siguiente instruccin que se va a ejecutar. Cada instruccin utiliza un nmero par de bits y consecuentemente se incrementa el PC. STACK POINTER (SP) La CPU utiliza el Stack Pointer (SP/R1) para almacenar las direcciones de retorno de las llamadas de subrutinas e interrupciones. Utiliza una combinacin de predecremento y postincremento. Adems se puede usar mediante software todas las instrucciones y modos de direccionamiento. REGISTRO DE ESTADO (SR) El registro de estado (SR/R2), utilizado como una fuente o registro de destino, puede ser utilizado en el modo de registro nicamente con instrucciones de palabra. El resto de combinaciones de modos de direccionamiento se utilizan para apoyar el generador constante. GENERADOR CONSTANTE DE REGISTROS (CG1 Y CG2) Las seis constantes comnmente ms usadas se forman por los generadores de registros R2 y R3, sin necesitar una palabra de 16-bit adicional del cdigo de programa. Las constantes son seleccionadas con el modo de direccionamiento del registro de origen (As Addressing source). REGISTROS DE PROPSITO GENERAL Son doce los registros de propsito general, R4 a R15. Todos se pueden utilizar como registros de datos, punteros de direccin, o valores de ndice, y pueden ser accedidos mediante instrucciones de byte o de palabra.

1.1.3.2. Modos de direccionamiento Existen siete modos de direccionamiento para el operando de origen y cuatro modos para el de destino que pueden direccionar todo el espacio de direcciones sin excepciones. La siguiente tabla muestra los distintos operandos de los modos de direccionamiento de origen y destino. stos se explicarn con ms detalle a continuacin segn se explica en el manual, cada modo de direccionamiento se explicar mediante una tabla sacada del mismo manual.

Tabla Error! No hay texto con el estilo especificado en el documento. .3 Modos de direccionamiento.

1) Modo de Registro(directo) Como bien se expresa en la tabla esta operacin mueve el contenido del registro R10 al registro R11.

Tabla Error! No hay texto con el estilo especificado en el documento..4 Register mode.

2) Modo Indexado En este caso el contenido que se mueve es el perteneciente al espacio de memoria de la suma del registro indicado y la cantidad especificada delante. El Program Counter se incrementa automticamente.

Tabla Error! No hay texto con el estilo especificado en el documento..5 Indexed mode.

3) Modo Simblico Mueve el contenido del espacio de memoria de origen EDE, contenido del PC + X, hasta el espacio de memoria de destino TONI, contenido del PC + Y. El Program Counter se incrementa automticamente.

Tabla Error! No hay texto con el estilo especificado en el documento..6 Symbolic mode.

4) Modo Absoluto Mueve el contenido del espacio de memoria de origen EDE al espacio de memoria de destino TONI. El PC se incrementa automticamente.

Tabla Error! No hay texto con el estilo especificado en el documento..7 Absolute mode.

5) Modo Indirecto Mueve el contenido del espacio de memoria de origen, contenido del registro R10, al espacio de destino, contenido del registro R11.

Tabla Error! No hay texto con el estilo especificado en el documento. .8 Indirect mode.

6) Modo Indirecto con Autoincremento Mueve el contenido del espacio de memoria de origen contenido en el registro R10, al espacio de memoria de destino.

Tabla Error! No hay texto con el estilo especificado en el documento..9 Indirect autoincrement mode.

7) Modo Inmediato

Tabla Error! No hay texto con el estilo especificado en el documento. .10 Immediate mode.

1.1.3.3. Conjunto de instrucciones El conjunto completo de instrucciones de los MSP430 consisten de 27 instrucciones comunes y 24 instrucciones emuladas. Las instrucciones comunes son aquellas que tienen un nico cdigo de operacin decodificado por la CPU. Las instrucciones emuladas hacen un cdigo ms sencillo para leer y escribir, pero no tienen un cdigo de funcionamiento por s mismas, en su lugar son reemplazados automticamente por el ensamblador con una instruccin comn equivalente. Hay tres formatos para las instrucciones comunes: Double-operand, Single-operand y Jump. Todas las instrucciones Double-operand y Single-operand pueden ser del tipo Byte o del tipo Word mediante las extensiones .B o .W. Las instrucciones de palabras son utilizadas para acceder a datos de palabra o perifricos de palabra. Si no se utiliza ninguna extensin, se entiende que la instruccin ser de palabra. El origen y el destino de una instruccin se definen con los siguientes campos: src dst As El operando de origen definido por As y S-reg. El operando de destino definido por Ad y D-reg. Los bits de direccionamiento responsables por el modo de direccionamiento utilizado en el origen (src). El registro de funcionamiento utilizado en el origen (src). Los bits de direccionamiento responsables por el modo de direccionamiento utilizado en el destino (dst). El registro de funcionamiento utilizado en el destino (dst).

S-reg Ad

D-reg

En la siguiente tabla se muestran las 51 instrucciones entre las cuales se pueden distinguir las 27 principales y las 24 emuladas, stas ltimas marcadas con . Las instrucciones Double-operand son aquellas que pueden utilizarse tanto en el origen como en el destino, las Single-operand son aquellas que solo pueden usarse en el origen o en el destino, mientras que las instrucciones Jump son aquellas que saltan de registro.
Mnemonic ADC(.B) ADD(.B) ADDC(.B) AND(.B) BIC(.B) BIS(.B) BIT(.B) BR CALL S-Reg, D-Reg dst src,dst src,dst src,dst src,dst src,dst src,dst dst dst Description Add C to destination Add source to destination Add source and C to destination AND source and destination Clear bits in destination Set bits in destination Test bits in destination Branch to destination Call destination Operation dst + C dst src + dst dst src + dst + C dst src .and. dst dst .not.src .and. dst dst src .or. dst dst src .and. dst dst PC PC+2 stack, dst PC

CLR(.B) CLRC CLRN CLRZ CMP(.B)

dst src,dst dst src,dst dst

Clear destination Clear C Clear N Clear Z Compare source and destination Add C decimally to destination Add source and C decimally to dst. Decrement destination Double-decrement destination Disable interrupts Enable interrupts Increment destination Double-increment destination Invert destination Jump if C set/Jump if higher or same Jump if equal/Jump if Z set Jump if greater or equal Jump if less Jump Jump if N set Jump if C not set/Jump if lower Jump if not equal/Jump if Z not set Move source to destination No operation Pop item from stack to destination Push source onto stack Return from subroutine Return from interrupt Rotate left arithmetically Rotate left through C Rotate right arithmetically Rotate right through C Subtract not(C) from destination Set C Set N Set Z Subtract source from destination Subtract source and not(C) from dst. Swap bytes Extend sign Test destination Exclusive OR source and destination

DADC(.B) dst DADD(.B) DEC(.B) DECD(.B) DINT EINT INC(.B) INCD(.B) INV(.B) JC/JHS JEQ/JZ JGE JL JMP JN JNC/JLO JNE/JNZ MOV(.B) NOP POP(.B) PUSH(.B) RET RETI RLA(.B) RLC(.B) RRA(.B) RRC(.B) SBC(.B) SETC SETN SETZ SUB(.B) SUBC(.B) SWPB SXT TST(.B) XOR(.B) dst dst dst label label label label label label label label src,dst dst src dst dst dst dst dst src,dst src,dst dst dst dst src,dst dst src,dst src,dst src,dst src,dst src,dst src,dst dst Dst Dst src,dst

0 dst 0C 0N 0Z dst src dst + C dst (decimally) src + dst + C dst (decimally) dst 1 dst dst 2 dst 0 GIE 1 GIE dst +1 dst dst+2 dst .not.dst dst

PC + 2 x offset PC

src dst @SP dst, SP+2 SP SP 2 SP, src @SP @SP PC, SP + 2 SP

@SP dst, SP+2 SP SP 2 SP, src @SP @SP PC, SP + 2 SP @SP dst, SP+2 SP SP 2 SP, src @SP @SP PC, SP + 2 SP

dst + 0FFFFh + 1 src .xor. dst dst

Tabla Error! No hay texto con el estilo especificado en el documento. .11 Conjunto de instrucciones. Emulated instruction

1.1.4.

FLL+ Mdulo de reloj

El reloj de sistema est diseado especialmente para aplicaciones con alimentacin por pilas o bateras. La generacin de reloj corre a cargo del mdulo FLL (Bucle de enganche de frecuencia) que incluye las posibilidades de usar un reloj de cuarzo de baja frecuencia de 32 KHz, un oscilador interno controlado digitalmente (DCO), y un reloj de cuarzo de alta frecuencia de 8 MHz (XT1) ms otro de 16 MHz (XT2). Un reloj auxiliar de baja frecuencia (ACLK) se obtiene a partir de un reloj de cuarzo de 32KHz. El microcontrolador integra un oscilador controlado digitalmente de gran velocidad (DCO) que puede generar el reloj maestro (MCLK) utilizado por la CPU y los perifricos de alta velocidad. Segn su diseo, el DCO se activa y estabiliza en menos de 6 s. ste microcontrolador aprovecha muy bien el rendimiento de su tecnologa cambiando de un estado de bajo consumo al estado activo en el que los osciladores pueden funcionar al mximo. En consecuencia el reloj de sistema se caracteriza por los siguientes efectos: Reloj auxiliar de baja frecuencia > Bajo consumo de potencia en modo standby. Reloj maestro de alta velocidad > Alto rendimiento en el procesado de la seal y aumenta el consumo de potencia.

El mdulo de reloj de bucle de enganche de frecuencia (FLL+) mantiene bajo el coste y el ultra bajo consumo. Utiliza tres seales internas de reloj, el usuario puede elegir el mejor balance de rendimiento y bajo consumo. El FLL opera en conjunto con un modulador digital y estabiliza la frecuencia del oscilador interno controlado digitalmente (DCO) a un mltiplo programable de la frecuencia del reloj de cuarzo LFXT1. El mdulo FLL+ se puede configurar para funcionar sin la necesidad de componentes externos, con uno o dos osciladores de cuarzo externos, o con resonadores, bajo el control total del software. El mdulo de reloj FLL+ incluye varias fuentes de reloj: LFXT1CLK: Oscilador de baja frecuencia/alta frecuencia que se puede usar bien con un reloj de cuarzo de baja frecuencia de 32768-Hz, bien con cuarzos normales o con resonadores en el rango de frecuencias de 450-Hz a 8-MHz. XT2CLK: Oscilador opcional de alta frecuencia que se puede usar con cuarzos normales, resonadores o fuentes de reloj externas en el rango de frecuencias de 450-HZ hasta 16-MHz. DCOCLK: Oscilador controlado digitalmente con caractersticas de tipo RC, estabilizado por el FLL. VLOCLK: Oscilador interno de bajo consumo y baja frecuencia, con una frecuencia tpica de 12-KHz.

Cuatro seales de reloj estn disponibles del mdulo FLL+:

ACLK: Reloj auxiliar. El reloj auxiliar es seleccionable va software como LFXT1CLK o VLOCLK como fuente de reloj. El ACLK es seleccionable va software para mdulos de perifricos individuales. ACLK/n: Salida separadora del ACLK. El ACLK/n es la seal de ACLK dividida por 1, 2, 4 u 8 y slo se usa externamente. MCLK: Reloj maestro. El MCLK es seleccionable va software como LFXT1CLK, VLOCLK, XT2CLK (si est disponible) o DCOCLK. EL MCLK se puede dividir por 1, 2, 4 u 8 sin el bloque del FLL. Se usa para la CPU y el sistema. SMCLK: Reloj del sub sistema. El SMCLK es seleccionable va software como XT2CLK (si est disponible) o como DCOCLK. Se selecciona para mdulos de perifricos individuales.

El diagrama de bloques del funcionamiento del mdulo de reloj FLL+ se puede ver en la siguiente figura.

Figura Error! No hay texto con el estilo especificado en el documento..9 Diagrama de bloques del mdulo FLL+.

1.1.4.1. Funcionamiento del mdulo de reloj FLL+ Despus de un PUC, el MCLK y el SMCLK se originan del DCOCLK a 32 veces la frecuencia del ACLK. Cuando se usa un cuarzo de 32768-Hz para el MCLK, el SMCLK y el ACLK se estabilizan a 1.048576-MHz. Los bits de control del registro de estado SCG0, SCG1, CPUOFF y OSCOFF configuran los modos de funcionamiento del MSP430 y activan o desactivan los componentes del mdulo de reloj FLL+. Los registros SCFQCTL, SCFI0, SCFI1, FLL_CTL0, y FLL_CTL1 configuran el mdulo de reloj FLL+. ste puede ser configurado o reconfigurado en cualquier momento por el software durante la ejecucin del programa.

1.1.4.2. Oscilador interno de muy bajo consumo y baja frecuencia El VLO proporciona una frecuencia tpica de 12-KHz sin la necesidad de un cuarzo. La fuente de reloj VLOCLK se elige ajustando LFXT1Sx = 10 cuando XTS_FLL = 0. El bit OSCOFF desactiva el VLO para LPM4. Los osciladores de cuarzo LFXT1 se desactivan cuando el VLO se selecciona, reduciendo el consumo de corriente. El VLO no consume energa cuando no se est usando. 1.1.4.3. Oscilador LFXT1 ste oscilador admite un consumo muy bajo de corriente utilizando un reloj de cuarzo de 32768-Hz en el modo LF (XTS_FLL = 0). Un reloj de cuarzo conecta a XIN y XOUT con los componentes externos. ste oscilador admite cristales de alta velocidad o resonadores cuando en el modo HF, XTS_FLL = 1. El cristal de alta velocidad o el resonador conecta a XIN y XOUT. LFXT1 se debe usar con una seal de reloj externa conectada al pin XIN cuando XTS_FLL = 1. El rango de frecuencia de entrada va de 1-Hz a 8-MHz. Cuando la frecuencia de entrada est por debajo de 450-KHz, el bit de XT1OF se debe poner a 1 para prevenir que la CPU se sincronice por una frecuencia externa. Los bits de seleccin de software XCAPxPF configura la capacitancia de carga provista internamente para el cristal LFXT1. El pin interno de capacitancia ms el pin de capacidad parsita de 2-pF se combinan en serie para formar la capacidad de carga. La capacidad de carga se puede elegir como 1, 6, 8 o 10-pF. Se pueden aadir condensadores externos adicionales si son necesarios. El software puede desactivar LFXT1 mediante el ajuste de OSCOFF si esta seal no origina el MCLK (SELM 3 o CPUOFF = 1) 1.1.4.4. Oscilador secundario (XT2) Algunos dispositivos tienen un segundo oscilador de cuarzo, XT2. ste origina la seal de reloj XT2CLK y sus caractersticas son idnticas al LFXT1 en el modo HF, exceptuando que el XT2 no tiene condensadores de carga interna. El condensador de carga requerido para el cuarzo de alta frecuencia o el resonador debe ser proporcionado externamente. El bit XT2OFF desactiva el oscilador XT2 si la seal XT2CLK no se usa para el reloj maestro MCLK (SELMx 2 o CPUOFF = 1)y el reloj de sub sistema SMCLK (SELS = 0 o SMCLKOFF = 1). El XT2 se debe usar con una seal de reloj externa en el pin XT2IN. Cuando es usado con una seal externa, la frecuencia externa debe cumplir los parmetros de la hoja de caractersticas para el XT2.

Si slo hay un reloj de cuarzo en el sistema, ste debera estar conectado al LFXT1. Usando slo el XT2 causa un flag de error del LFOF para permanecer a 1, no permitiendo que OFIFG se ponga a 0. 1.1.4.5. Oscilador controlado digitalmente (DCO) El DCO es un oscilador en anillo con caractersticas tipo RC. Su frecuencia se estabiliza por el FLL a un mltiplo de la seal de reloj ACLK, los ltimos 7 bits del registro SCFQCTL. El bit DCOPLUS ajusta la frecuencia fDCOCLK a fDCO o fDCO/D. Los bits FLLDx configuran los divisores, D, a 1, 2, 4 u 8. Por defecto DCOPLUS = 0 y D = 2, proporcionando una frecuencia de reloj de fDCO/2 para fDCOCLK. Los factores (N + 1) y D ajustan la frecuencia de DCOCLK. DCOPLUS = 0: fDCOCLK = (N + 1) x f ACLK DCOPLUS = 1: fDCOCLK = D x (N + 1) x fACLK El rango de frecuencias de fDCO se seleccionan con los bits FNx como se muestra en la tabla 2.11. El usuario debe asegurarse que el MCLK no sobrepasa el mximo de frecuencia de funcionamiento.
FN_8 0 0 0 0 1 FN_4 0 0 0 1 X FN_3 0 0 1 X X FN_2 0 1 X X X Typical fDCO range 0.65 to 6.1 1.3 to 12.1 2 to 17.9 2.8 to 26.6 4.2 to 46

Tabla Error! No hay texto con el estilo especificado en el documento..12 Rango de frecuencias de los bits de control DCO

1.1.4.6. Bucle de enganche de frecuencia (FLL) La FLL cuenta continuamente arriba y abajo un integrador de frecuencia de 10bit. La salida del integrador de frecuencia que conduce el DCO puede ser leda en SCFI1 y SCFI0 (System Clock Frequency Integrator 1 and 2). La cuenta se ajusta +1 o -1 a cada perodo de ACLK. Cinco de los bits del integrador, los bits 7-3 del SCFI1, ajustan el tap de frecuencia del DCO. 29 taps se implementan para el DCO (Las 28, 29, 30 y 31 son equivalentes), y cada uno es aproximadamente un 10% mayor que el anterior. El modulador mezcla dos frecuencias del DCO adyacentes para producir taps fraccionales. Los bits 2-0 del SCFI1 y los bits 1-0 del SCFI0 son para el modulador. El DCO empieza en el tap ms bajo despus de un PUC o cuando SCFI1 o SCFI0 estn a 0.

1.1.4.7. Modulador DCO El modulador mezcla dos frecuencias del DCO adyacentes para producir una frecuencia intermedia efectiva y propagar la energa del reloj, reduciendo la interferencia electromagntica (EMI). El modulador mezcla las dos frecuencias adyacentes a travs de los 32 ciclos de reloj del DCOCLK. El error de la frecuencia efectiva es 0 cada 32 ciclos del DCOCLK y no se acumulan. Los ajustes del modulador y el control del DCO se controlan automticamente por el hardware del FLL. 1.1.4.8. Desactivando el hardware del FLL y el modulador El FLL se desactiva cuando el bit del registro de estado SCG0 = 1. Cuando el FLL se desactiva, el DCO se ejecuta en el tap previamente seleccionado y el DCOCLK no se estabiliza automticamente. El modulador DCO se desactiva cuando el SCFQ_M = 1. Cuando el DCO es desactivado, el DCOCLK se ajusta al tap ms cercano disponible del DCO. 1.1.4.9. Registros del mdulo de reloj FLL+
Register System clock control System clock frequency integrator 0 System clock frequency integrator 1 FLL+ control register 0 FLL+ control register 1 FLL+ control register 2 SFR interrupt enable register 1 SFR interrupt flag register 1 Short Form SCFQCTL SCFI0 SCFI1 FLL_CTL0 FLL_CTL1 FLL_CTL2 IE1 IFG1 Register Type Read/write Read/write Read/write Read/write Read/write Read/write Read/write Read/write Address 052h 050h 051h 053h 054h 055h 000h 002h Initial State 01Fh with PUC 040h with PUC Reset with PUC 003h with PUC Reset with PUC Reset with PUC Reset with PUC Reset with PUC

Tabla Error! No hay texto con el estilo especificado en el documento. .13 Registros FLL+

En la tabla 2.12 se pueden ver los 8 registros del mdulo de reloj FLL+ que a continuacin se explicarn detalladamente. SCFQCTL, registro de control del reloj del sistema

SCFQ_M

Bit-7

Modulacin, activa o desactiva la modulacin. 0 Modulacin activada 1 Modulacin desactivada

Bits

Multiplicador, estos bits ajustan el valor de multiplicacin

6-0

para el DCO. N debe ser > 0 o resultan impredecibles operaciones. Cuando DCOPLUS = 0: fDCOCLK = (N + 1) fcrystal Cuando DCOPLUS = 1: fDCOCLK = D x (N + 1) fcrystal

SCFI0, registro 0 del integrador de frecuencia del reloj de sistema

FLLDx

Bits 7-6

Divisor de bucle FLL+. Estos bits dividen fDCOCLK entre el bucle de realimentacin FLL+. Esto resulta en un multiplicador adicional para los bits del multiplicador.
00 01 10 11 /1 /2 /4 /8

FN_x

Bits 5-2

Control del rango de frecuencia de DCO. Selecciona el rango de operacin de fDCO.


0000 0001 001x 01xx 1xxx 0.65 to 6.1 MHz 1.3 to 12.1 MHz 2 to 17.9 MHz 2.8 to 26.6 MHz 4.2 to 46 MHz

MODx (LSBs)

Bits 1-0

ltimos bits significativos del modulador. El bit 0 es el modulador LSB. Estos bits afectan al patrn del modulador. Todos los bits MODx se modifican automticamente por el FLL+.

SCFI0, registro 0 del integrador de frecuencia del reloj de sistema

DCOx

Bits 7-3

Estos bits seleccionan el tap del DCO y son modificados automticamente por el FLL+.

MODx (MSBs)

Bits 1-0

Bits ms significativos del modulador. El bit 2 es el modulador MSB. Estos bits afectan al patrn del modulador. Todos los bits MODx se modifican automticamente por el FLL+.

FLL_CTL0, registro de control 0 del FLL+

DCOPLUS

Bits-7

Pre-divisor de salida del DCO. Este bit selecciona si la salida del DCO es pre-dividido antes de originar la seal MCLK o SMCLK. La tasa de divisin se elige con el bit FLL_D. 0 La salida del DCO se divide 1 La salida del DCO no se divide

XTS_FLL

Bit-6

Seleccin del modo LFTX1 0 Modo de baja frecuencia 1 Modo de alta frecuencia

XCAPxPF

Bits 5-4

Oscilador de seleccin de condensador. Estos bits eligen la capacidad efectiva vista para el LFTX1 o resonador. Se debe poner a 00 si el modo de alta frecuencia est seleccionado para LFTX1 con XTS_FLL =1. 00 ~1 pF 01 ~6 pF 10 ~8 pF 11 ~10 pF

XT2OF

Bit-3

Fallo del oscilador XT2. 0 Sin condicin de fallo 1 Condicin de fallo

XT1OF

Bit-2

Fallo del oscilador de alta frecuencia LFTX1 0 Sin condicin de fallo 1 Condicin de fallo

LFOF

Bit-1

Fallo del oscilador de baja frecuencia LFTX1 0 Sin condicin de fallo 1 Condicin de fallo

DCOF

Bit-0

Fallo del oscilador DCO 0 Sin condicin de fallo 1 Condicin de fallo

FLL_CTL1, registro de control 1 del FLL+

LFXT1DIG

Bit-7

Selecciona la fuente del reloj digital externo. ste bit activa la entrada de un reloj digital externo en XIN en el modo de baja frecuencia (XTS_FLL = 0) 0 Entrada de cristal de cuarzo seleccionada 1 Entrada de reloj digital seleccionada SMCLK apagado. ste bit apaga el SMCLK. 0 SMCLK encendido 1 SMCLK apagado XT2 apagado. ste bit apaga el oscilador XT2. 0 XT2 encendido 1 XT2 apagado si no se usa por el MCLK o el SMCLK Selecciona el MCLK. ste bit elige la fuente del MCLK. 00 01 10 11 DCOCLK DCOCLK XT2CLK LFXT1CLK

SMCLKOFF

Bit-6

XT2OFF

Bit-5

SELMx

Bits 4-3

SELS

Bit-2

Selecciona el SMCLK. ste bit elige la fuente del SMCLK. 0 DCOCLK 1 XT2CLK Divisor del ACLK. 00 01 10 11 /1 /2 /4 /8

FLL_DIVx

Bits 1-0

FLL_CTL2, registro de control 2 del FLL+

XT2Sx

Bits 7-6

Selector del rango de frecuencias del XT2. 00 01 10 11 0.4 1-MHz cuarzo o resonador 1 3-MHz cuarzo o resonador 3 16-MHz cuarzo o resonador Fuente de reloj digital externa de 0.4 16-MHz

Reserved

Bits 5-0

Reservado.

IE1, registro de control habilitado 1

OFIE

Bits 7-2 Bit-1

stos bits se pueden utilizar para otros mdulos. Interrupcin habilitada de fallo del oscilador. ste bit habilita la interrupcin OFIFG. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 Interrupcin habilitada ste bit se puede utilizar para otros mdulos.

Bit-0

IFG1, registro de flag de interrupcin 1

OFIFG

Bits 7-2 Bit-1

stos bits se pueden utilizar para otros mdulos. Flag de interrupcin de fallo del oscilador. ste bit habilita la interrupcin OFIFG. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 No hay interrupcin pendiente 1 Interrupcin pendiente ste bit se puede utilizar para otros mdulos.

Bit-0

1.1.5.

Controlador de memoria flash

Los microcontroladores MSP430 tienen una memoria flash programable y direccionable por bit, byte o palabra. El mdulo de memoria flash tiene un controlador integrado que controla las operaciones de programacin y borrado. El controlador tiene cuatro registros, un generador de sincronizacin y un generador de tensin que abastece las tensiones de programa y borrado.

Figura Error! No hay texto con el estilo especificado en el documento..10 Diagrama de bloques del mdulo de memoria flash.

1.1.5.1. SEGMENTACIN DE LA MEMORIA FLASH Este tipo de microcontroladores tienen un array de memoria flash. Toda la memoria flash est particionada en segmentos. Se pueden escribir bits, bytes o palabras en la memoria flash, pero el segmento es el tamao ms pequeo de memoria flash que se puede borrar. La memoria flash est particionada en dos secciones, la memoria principal y la memoria de informacin. No hay diferencias en el funcionamiento de stas dos secciones. Tanto cdigo como datos se pueden localizar en cada seccin. Las diferencias entre estas secciones de memoria son el tamao de los segmentos y las direcciones fsicas. La memoria de informacin tiene cuatro segmentos de 64-bytes (A - D), mientras que la memoria principal tiene 60-KB divididos en 120 segmentos de 512-bytes que a su vez se dividen en bloques de 64-bytes.

Los segmentos de la memoria flash principal se podrn borrar todos en un solo paso o cada uno individualmente. Con los segmentos de la memoria de informacin (A-D) se puede hacer lo mismo, con la particularidad de que el segmento A puede contener datos de calibracin. ste segmento est protegido contra la programacin o el borrado, aunque puede ser desbloqueado, no es aconsejable si no se quieren perder los datos de calibracin. El bloqueo se permite a travs del bit LOCKA que cuando LOCKA = 1 no se puede escribir ni borrar y as toda la memoria de informacin se protege durante un borrado masivo. 1.1.5.2. FUNCIONAMIENTO DE LA MEMORIA FLASH El modo por defecto de la memoria flash es el modo de lectura, en ste modo la memoria no se borra ni se escribe sobre ella. El generador de sincronizacin y el generador de tensin estn apagados, y la memoria funciona como igual que una ROM. La memoria flash de los microcontroladores MSP430 es programable dentro del sistema (ISP- in-system programmable) sin necesidad de tensin externa. La CPU puede programar su propia memoria flash. Los modos de escritura y borrado se seleccionan con los bits: BLKWRT Escritura de Byte/word WRT Escritura de bloque GMERAS Borrado de segmento MERAS Borrado masivo (todos los segmentos de la memoria principal) ERASE Borrado de todo (todos los segmentos)

Est prohibido escribir o leer en la memoria flash mientras se est procediendo a la programacin o borrado de sta. Si la ejecucin de la CPU es requerida durante la escritura o borrado, el cdigo para ser ejecutado debe estar en la memoria RAM. 1.1.5.2.1. Generador de temporizacin Las operaciones de escritura y borrado se controlan con el generador de temporizacin como se muestra en el diagrama de bloques de la figura 2.11. La frecuencia de funcionamiento del generador, fFTG, debe estar en el rango de entre 257-KHz y 476-KHz.

Figura Error! No hay texto con el estilo especificado en el documento..11 Diagrama de bloques del generador de sincronizacin

El generador de sincronizacin puede ser originado de ACLK, SMCLK o MCLK. La fuente de reloj seleccionada se tiene que dividir usando los bits FNx para coincidir con los requerimientos de frecuencia de fFTG. Si fFTG se desva de la especificacin durante la escritura o el borrado, los resultados pueden ser impredecibles.

1.1.5.2.2. Borrado de la memoria flash El nivel de borrado de un bit de la memoria flash es 1. Cada bit se puede borrar de 1 a 0 individualmente pero para reprogramar de 0 a 1 requiere un ciclo de borrado. La cantidad ms pequea de flash que se puede borrar es un segmento. Los modos de borrado se seleccionan con los bits MERAS y ERASE, tal como la tabla 2.14 detalla. Un ciclo de borrado se puede iniciar desde dentro de la memoria flash o desde la RAM.
MERAS 0 1 1 ERASE 1 0 1 Modo de borrado Borrado de un segmento Borrado masivo (todos los segmentos de la memoria principal) Borra toda la flash (Segmentos de la memoria principal y de informacin)

Tabla Error! No hay texto con el estilo especificado en el documento. .14 Modos de borrado.

1.1.5.2.3. Escritura en la memoria flash Los modos de escritura se seleccionan por los bits WRT y BLKWRT como muestra la tabla 2.15.
WRT 0 1 BLKWRT 1 1 Modo de escritura Escritura de byte/Word Escritura de un bloque

Tabla Error! No hay texto con el estilo especificado en el documento..15 Modos de escritura.

Ambos modos utilizan una secuencia de instrucciones de escritura individual, pero utilizando la escritura en bloques es aproximadamente el doble de rpido que en el otro modo, porque el generador de tensin se mantiene en el bloque completo de escritura. Cualquier instruccin que modifique un destino se puede usar para modificar una localizacin flash bien en el modo byte/word o en el modo de bloque. Una palabra de flash no debe escribirse ms de dos veces entre borrados. El bit BUSY se pone a 1 mientras una operacin de escritura est activa y se pone a 0 cuando sta ha terminado. Si la operacin de escritura se inicia desde la RAM, la CPU no debe acceder a la flash mientras BUSY = 1. Si no una violacin de acceso puede ocurrir, ACCVIFG se pone a 1 y la escritura en la flash es impredecible. La operacin de escritura tambin se puede iniciar desde la RAM o desde dentro de la misma flash.

1.1.5.2.4. Acceso a la memoria flash durante la escritura o el borrado Como ya se ha dicho, cuando se ha iniciado una operacin de escritura o borrado desde la memoria RAM y mientras BUSY = 1, la CPU no debe leer ni escribir a o desde cualquier ubicacin de la memoria flash. Si no una violacin de acceso ocurre, y el resultado es impredecible. Adems si una escritura en flash se intenta con WRT= 0, el flag de interrupcin ACCVIFG se pone a 1 y la memoria flash no se ve afectada. Cuando una operacin de borrado o escritura se inicia desde dentro de la memoria flash, el controlador flash devuelve el cdigo de operacin 03FFFh a la CPU en la siguiente recopilacin de instruccin. El cdigo de operacin 03FFFh es la instruccin JMP PC. Esto ocasiona que la CPU entre en un bucle hasta que finalice la operacin en la flash. Cuando la operacin termina y BUSY = 0, el controlador flash permite a la CPU recopilar el adecuado cdigo de operacin y reanudar la ejecucin del programa.

1.1.5.2.5. Configuracin y acceso al controlador de la memoria flash Los registros FCTLx son registros de 16-bit de lectura/escritura protegidos por contrasea. Cualquier acceso de lectura o escritura debe usar instrucciones de palabra y los accesos de escritura deben incluir la contrasea de escritura 0A5h en el byte ms alto. Cualquier escritura en cualquiera de los registros FCTLx con otro valor que no sea 0A5h en el byte ms alto es una violacin de la calve de seguridad, lo que pone a 1 el flag KEYV y dispara un PUC reinicio del sistema. Cualquier lectura de cualquiera de los registros FCTLx lee 096h en el byte ms alto.

Cualquier escritura a FCTL1 durante una operacin de borrado o escritura de byte/word es una violacin de acceso y pone a 1 ACCVIFG. Escribir en FCTL1 est permitido en el modo de escritura de bloque cuando WAIT = 1, pero sera una violacin de acceso cuando WAIT = 0 y pondra a 1 ACCVIFG. Cualquier escritura a FCTL2 cuando BUSY = 1 es una violacin de acceso. Cualquier registro de FCTLx se debe leer cuando BUSY = 1.

1.1.5.2.6. Interrupciones del controlador de memoria flash El controlador de memoria flash tiene dos fuentes de interrupcin, KEYV y ACCVIFG. ste ltimo se pone a 1 cuando ocurre una violacin de acceso. Cuando el bit ACCVIE se vuelve a habilitar despus de un borrado o escritura de la flash, la activacin del flag ACCVIFG genera una solicitud de interrupcin. ACCVIFG origina el vector de interrupcin NMI, por lo que no es necesario para el GIE que se ponga a 1 para que ACCVIFG solicite una interrupcin. ACCVIFG se puede comprobar por software para determinar si hay una violacin de acceso. ACCVIFG se debe reiniciar por software. El flag de violacin de clave KEYV se pone a 1 cuando cualquiera de los registros de control de la flash se escriben con una contrasea incorrecta. Cuando esto ocurre se genera un PUC reiniciando el dispositivo.

1.1.5.2.7. Programando dispositivos de memoria flash Hay tres opciones de programacin del dispositivo flash de los MSP430. Todas admiten la programacin ISP: Programando mediante JTAG Los dispositivos MSP430 se pueden programar mediante el puerto JTAG. El interfaz JTAG requiere cuatro seales, tierra, y opcionalmente Vcc y /NMI. El puerto JTAG protegido con un fusible. Quemando el fusible completamente se deshabilita este puerto y es irreversible. Programando mediante el Bootstrap loader Todos los dispositivos flash de los MSP430 contienen un bootstrap loader. El BSL permite al usuario leer o programar la memoria flash o la RAM usando un interfaz en serie UART. El acceso a la memoria flash a travs del BSL est protegido por una contrasea de 256-bit definida por el usuario.

Programando mediante una solucin personalizada La habilidad de la CPU de los MSP430 de escribir en su propia memoria flash permite programar in-system y una programacin personalizada externa. El usuario puede elegir suministrar los datos al MSP430 a travs de cualquier medio disponible. El software desarrollado por el usuario puede recibir los datos y programar la memoria flash. Porque este tipo de solucin est desarrollada por el usuario, puede ser completamente personalizada para arreglar las necesidades de aplicacin de la programacin, borrado o la actualizacin de la memoria flash.

1.1.5.3. Registros de la memoria flash

Tabla Error! No hay texto con el estilo especificado en el documento. .16 Registros de la memoria flash

FCTL1, registro de control 1 de la memoria flash

FRKEY/FWKEY BLKWRT

WRT

Reserved

Bits Contrasea FCTLx. Siempre se lee como 096h. Debe ser 15-8 escrita como 0A5h o se genera un PUC . Bit-7 Modo de escritura de bloque. WRT se debe poner a 1 en este modo. BLKWRT se reinicia automticamente cuando EMEX est a 1. 0 Modo de escritura de bloque desactivado. 1 Modo de escritura de bloque activado. Bit-6 Escritura. ste bit se usa en cualquier modo de escritura. Se reinicia automticamente cuando EMEX est a 1. 0 Modo de escritura desactivado 1 Modo de escritura activado Bit-5 Bit reservado. Siempre se lee como 0.

EEIEX

EEI

MERAS ERASE Reserved

Bit-4 Habilita la interrupcin de salida de emergencia. Ajustando este bit se habilita una interrupcin que causa una salida de emergencia de una operacin flash cuando GIE = 1. Este bit se reinicia automticamente cuando EMEX est a 1. 0 Interrupcin de salida desactivado 1 Interrupcin de salida activado Bit-3 Habilita la interrupcin de borrado. Ajustando este bit permite que el borrado de un segmento sea interrumpido por una solicitud de interrupcin. Despus que esta solicitud es atendida, el ciclo de borrado se reanuda. 0 Interrupciones durante el borrado de segmentos desactivada 1 Interrupciones durante el borrado de segmentos activada Bit-2 Borrado masivo y borrado. MERAS y ERASE se usan conjuntamente para seleccionar el modo de borrado. Estos bits Bit-1 se reinician automticamente cuando EMEX est a 1 o la operacin de borrado finaliza. Bit-0 Bit reservado. Siempre se lee como 0.

FCTL2, registro de control 2 de la memoria flash

FRKEY/FWKEY FSSELx

FNx

Bits Contrasea FCTLx. Siempre se lee como 096h. Debe ser 15-8 escrita como 0A5h o se genera un PUC . Bits Selecciona la fuente de reloj del controlador flash. 7-6 00 ACLK 01 MCLK 10 SMCLK 11 SMCLK Bits Divisor de reloj del controlador flash. Estos seis bits 5-0 seleccionan el divisor para el reloj del controlador flash. El valor del divisor es FNx +1. Por ejemplo, cuando FNx = 00h, el divisor es 1. Cuando FNx = 03Fh, el divisor es 64.

FCTL3, registro de control 3 de la memoria flash

FRKEY/ FWKEY FAIL

Bits 15-8 Bit-7

LOCKA

Bit-6

EMEX

Bit-5

LOCK

Bit-4

WAIT

Bit-3

ACCVIFG

Bit-2

KEYV

Bit-1

BUSY

Bit-0

Contrasea FCTLx. Siempre se lee como 096h. Debe ser escrita como 0A5h o se genera un PUC . Fallo de funcionamiento. ste bit se pone a 1 si la fuente de reloj fFTG o si la operacin flash es abortada por una interrupcin cuando EEIEX = 1. FAIL se debe reiniciar mediante software. 0 No hay fallo 1 Hay fallo Segmento A y memoria de informacin bloqueados. 0 Segmento A desbloqueado y toda la memoria de informacin se borra durante el borrado masivo 1 Segmento A bloqueado y toda la memoria de informacin est protegida del borrado durante el borrado masivo Salida de emergencia. 0 No hay salida de emergencia 1 Hay salida de emergencia Bloqueo. ste bit desbloquea la memoria flash para escribir o borrar. Se puede ajustar en cualquier momento durante una operacin de borrado o escritura de byte/word y la operacin se completa normalmente. En el modo de escritura de bloque, si LOCK se pone a 1 mientras que BLKWRT = WAIT = 1, BLKWRT y WAIT se reinician y el modo finaliza normalmente. 0 Desbloqueado 1 Bloqueado Espera. Indica que se est empezando a escribir en la memoria flash. 0 La flash no est preparada para la siguiente escritura de byte/word 1 La flash est preparada para la siguiente escritura de byte/word Flag de interrupcin de violacin de acceso. 0 No hay interrupcin pendiente 1 Interrupcin pendiente Violacin de la clave de seguridad flash. ste bit indica que una contrasea incorrecta en FCTLx fue escrita en cualquier registro de control flash y genera un PUC cuando est a 1. Se debe reiniciar con software. 0 La contrasea de FCTLx se escribi correctamente 1 La contrasea de FCTLx se escribi incorrectamente Ocupado. ste bit indica el estado del generador de reloj de la memoria flash. 0 No ocupado 1 Ocupado

FCTL4, registro de control 4 de la memoria flash

FRKEY/FWKEY Reserved MRG1

Bits 15-8 Bits 7-6 Bit-5

Contrasea FCTLx. Siempre se lee como 096h. Debe ser escrita como 0A5h o se genera un PUC . Reservado. Siempre se lee como 0.

MRG0

Reserved

Modo de lectura marginal 1. ste bit se pone a 0 si la CPU empieza la ejecucin desde la memoria flash. Si MRG1 y MRG0 estn a 1, el primero est activo y el otro se ignora. 0 Modo de lectura marginal 1 desactivado 1 Modo de lectura marginal 1 activado Bit-4 Modo de lectura marginal 0. ste bit se pone a 0 si la CPU empieza la ejecucin desde la memoria flash. Si MRG1 y MRG0 estn a 1, el primero est activo y el otro se ignora. 0 Modo de lectura marginal 0 desactivado 1 Modo de lectura marginal 0 activado Bits Reservado. Siempre se lee como 0. 3-0

IE1, registro de interrupcin habilitada 1

ACCVIE

Bits Estos bits se deben usar por otros modulos. 7-6 4-0 Bit-5 Interrupcin habilitada de violacin de acceso a la memoria flash. ste bit habilita la interrupcin ACCVIFG. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 No hay interrupcin pendiente 1 Interrupcin pendiente

1.1.6.

Supervisor del suministro de tensin

El supervisor del suministro de tensin (SVS) se usa para monitorizar la alimentacin de tensin AVCC o una tensin externa. El SVS se puede configurar para poner a 1 un flag o generar un reinicio de POR cuando la tensin de alimentacin o la tensin externa cae por debajo del umbral establecido por el usuario. Las caractersticas del SVS incluyen: Monitorizacin de AVCC. Generacin de POR elegible. Salida del comparador SVS accesible por software. Condicin de baja tensin descargada y accesible por software. 14 umbrales de nivel seleccionables. Canal externo para monitorizar la tensin externa.

Figura Error! No hay texto con el estilo especificado en el documento..12 Diagrama de bloques del SVS

1.1.6.1. Funcionamiento del SVS Como se ha dicho antes, el SVS detecta si la tensin de AVCC cae por debajo de un nivel elegido. Puede ser configurado para proporcionar un POR o poner a 1 un flag hay una bajada de tensin. El SVS se desactiva despus de un brownout reset para conservar el consumo de corriente. Los bits VLDx se usan para activar o desactivar el SVS y elegir uno de los 14 niveles umbral (V(SVS_IT)) para la comparacin con AVCC. El SVS est apagado cuando VLDx = 0 y est encendido cuando VLDx > 0. El bit SVSON no enciende el SVS. En cambio, refleja el estado de encendido/apagado del SVS y puede usarse para determinar cuando est encendido el SVS. Cuando VLDx = 1111, el canal externo SVSIN se selecciona. La tensin en SVSIN se compara con un nivel interno de aproximadamente 1.2 V. 1.1.6.2. Rango de funcionamiento del SVS Cada nivel SVS tiene histresis para reducir la sensibilidad a pequeas variaciones de tensin de alimentacin cuando AVCC est cerca del umbral. Podemos ver el funcionamiento del SVS y del SVS/brownout en la siguiente figura.

Figura Error! No hay texto con el estilo especificado en el documento. .13 Funcionamiento del SVS

1.1.6.3. Registros SVS

VLDx

Bits 7-4

Deteccin del nivel de tensin. stos bits encienden el SVS y seleccionan el umbral nominal SVS de nivel de tensin.
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 SVS est apagado 1.9 V 2.1 V 2.2 V 2.3 V 2.4 V 2.5 V 2.65 V 2.8 V 2.9 V 3.05 3.2 V 3.35 V 3.5 V 3.7 V Compara la tensin externa de entrada SVSIN a 1.2 V

PORON

SVSON

Bit-3 POR encendido. ste bit habilita el flag SVSFG para originar un POR. 0 SVSFG no origina un POR 1 SVSFG origina un POR Bit-2 SVS encendido. Refleja el estado de funcionamiento de

SVSOP

SVSFG

SVS. SVS se enciende con VLDx > 0. 0 SVS apagado 1 SVS encendido Bit-1 Salida del SVS. ste bit refleja el valor de la salida del comparador SVS. 0 La salida del comparador SVS es baja 1 La salida del comparador SVS es alta Bit-0 Flag SVS. Indica la condicin de baja tensin. SVSFG permanece a 1 despus de una condicin de baja tensin hasta que se reinicie por software. 0 No existe condicin de baja tensin 1 Presente una condicin de baja tensin

1.1.7.

Entradas y salidas digitales

El microcontrolador MSP430F4794 tiene implementados nueve puertos de 8-bits de entrada y/o salida digital, desde P1 a P5 y de P7 a P10. Cada pin I/O se puede configurar individualmente como entrada o salida digital, y se puede escribir en cada lnea I/O o leer de ella individualmente. En todos y cada de uno de los 8 bits de los puertos P1 y P2 se admiten interrupciones. stas pueden ser habilitadas y configuradas para proveer una interrupcin en flanco de subida o de bajada de una seal de entrada. 1.1.7.1. Funcionamiento de las entradas/salidas digitales Las entradas/salidas digitales se configuran con el software de usuario. Cada registro de puerto es un registro de 8-bits y se accede con instrucciones de byte. Los registros de los puertos P7/P8 y P9/P10 estn dispuestos de tal forma que los dos puertos se pueden direccionar como un puerto de 16-bits. La combinacin P7/P8 se conoce como PA y a la combinacin P9/P10 como PB. Por ejemplo, para escribir en P7SEL y en P8SEL a la vez, una palabra se escribira en PASEL.

Registro de entrada, PxIN Cada bit en cada registro PxIN refleja el valor de la seal de entrada en el pin correspondiente I/O cuando se configura como tal. Bit = 0, la entrada es baja Bit = 1, la entrada es alta Registro de salida, PxOUT Cada bit en cada registro PxOUT refleja el valor de la seal de salida en el pin correspondiente I/O cuando se configura como tal y en la direccin de salida. Bit = 0, la salida es baja Bit = 1, la salida es alta Registro de direccin, PxDIR Cada bit en cada registro PxDIR selecciona la direccin del pin correspondiente de entrada/salida, independientemente de la funcin seleccionada por el pin. Los bits PxDIR para los pins de entrada/salida que se seleccionan para funciones de otros mdulos se deben poner a 1 como es requerido por la otra funcin. Bit = 0, el pin del puerto correspondiente se cambia a direccin de entrada Bit = 1, el pin del puerto correspondiente se cambia a direccin de salida

Registro de habilitacin de resistencia pullup/pulldown, PxREN Este microcontrolador tiene en todos los puertos una resistencia programable pullup/pulldown. Cada bit en cada registro PxREN habilita o deshabilita la resistencia correspondiente a su pin de entrada/salida. El bit correspondiente en el registro PxOUT est conectado a VCC o a masa. Bit = 0, Resistencia pullup/pulldown deshabilitada Bit = 1, Resistencia pullup/pulldown habilitada Registro de seleccin de funcin, PxSEL A menudo los pines de los puertos estn multiplexados con otras funciones de perifricos. Cada bit PxSEL se usa para elegir la funcin que tendr el pin correspondiente al puerto de entrada/salida o a la funcin de perifrico. Bit = 0, Funcin de entrada/salida seleccionada para el pin Bit = 1, Funcin del perifrico seleccionada para el pin Ajustando PxSELx = 1 no se pone a 1 automticamente la direccin del pin. Es necesario configurar el bit PxDIRx para que otras funciones de perifricos tomen la direccin necesaria. Interrupciones de P1 y P2 Cada pin de los puertos P1 y P2 admite interrupciones, configuradas con los registros PxIFG, PxIE y PxIES. Todos los pines del puerto P1 originan un vector simple de interrupcin, y todos los pines del puerto P2 originan a su vez un vector diferente de interrupcin. El registro PxIFG se puede comprobar para determinar el origen de una interrupcin de P1 o P2. I. Registros del flag de interrupcin, P1IFG y P2IFG

Cada bit PxIFGx es el flag de interrupcin del pin correspondiente de entrada/salida y se pone a 1 cuando el flanco de la seal de entrada seleccionado ocurre en dicho pin. Todos los flags de interrupcin PxIFGx solicitan una interrupcin cuando sus correspondientes bits, el PxIE y el bit GIE estn a 1. Cada flag PxIFGx se debe reiniciar por software. Por software se puede incluso poner a 1 cada flag PxIFGx, proporcionando una manera de generar una interrupcin iniciada por software. Bit = 0, no hay interrupcin pendiente Bit = 1, hay interrupcin perndiente

Slo las transiciones en los niveles no estticos ocasionan interrupciones. Si cualquier flag PxIFGx llega a ponerse a 1 durante una rutina de servicio de interrupcin Px o si se pone a 1 despus de que se ejecute la instruccin RETI de una rutina de servicio de interrupcin Px, el estado lgico 1 del flag PxIFGx genera otra interrupcin. Esto asegura que cada transicin sea reconocida. II. Registro de seleccin de flanco de interrupcin, P1IES y P2IES

Cada bit PxIES selecciona el flanco de interrupcin para el correspondiente pin entrada/salida. Bit = 0, el flag PxIFGx se pone a 1 con la transicin del estado bajo al alto Bit = 1, el flag PxIFGx se pone a 1 con la transicin del estado alto al bajo III. Habilitacin de interrupcin, P1IE y P2IE

Cada bit PxIE habilita el flag de interrupcin PxIFG asociado. Bit = 0, la interrupcin est deshabilitada Bit = 1, la interrupcin est habilitada

1.1.8.

Temporizador Watchdog

El temporizador Watchdog (WDT) es un temporizador de control de 16-bit que puede usarse como Watchdog o como temporizador de intervalos. La principal funcin de ste modulo WDT es llevar a cabo el reinicio controlado del sistema despus de que se haya producido un problema en el software. Si el intervalo de tiempo seleccionado expira, se genera un reinicio del sistema. Si la funcin de Watchdog no se necesita en una aplicacin, el mdulo se puede configurar como un temporizador de intervalos y puede generar interrupciones en los intervalos de tiempo seleccionados. Las caractersticas del temporizador Watchdog son: Cuatro intervalos de tiempo seleccionables por software Modo de Watchdog Modo de intervalos El acceso al control WDT est protegido por contrasea Control de la funcin del pin /NMI

Fuente de reloj seleccionable Se puede detener para ahorrar energa Caracterstica de reloj a prueba de fallos en WDT+

Figura Error! No hay texto con el estilo especificado en el documento..14 Diagrama de bloques del temporizador Watchdog

1.1.8.1. Funcionamiento del Watchdog timer Para configurar el WDT como Watchdog o como temporizador de intervalos se debe utilizar el registro WDTCTL. ste registro tambin contiene bits de control para configurar el pin /NMI. WDTCTL es un registro de lectura/escritura de 16bit protegido por contrasea. Cualquier acceso de lectura/escritura debe usa instrucciones de palabra y los accesos de escritura deben incluir la contrasea de escritura 05Ah en el byte ms alto. Cualquier escritura en el registro WDTCTL diferente a 05Ah en el byte ms alto es una violacin de la clave de seguridad y dispara un PUC. Cualquier lectura en el registro WDTCTL se lee como 069h en el byte superior. El reloj contador WDT+ debera ser ms pequeo o igual que la frecuencia de sistema (MCLK). El reloj contador Watchdog El reloj contador del Watchdog (WDTCNT) es un contador de 16-bit que no es directamente accesible por software. El WDTCNT y los intervalos de tiempo seleccionados se controlan a travs del registro de control del temporizador Watchdog WDTCTL. El WDTCNT puede ser generado por la seales de reloj ACLK o SMCLK. La fuente de reloj se selecciona con el bit WDTSSEL. Modo de Watchdog Despus de una condicin de PUC, el mdulo WDT se configura en el modo de Watchdog con un intervalo inicial de ciclo de reinicio de 32768 usando DCOCLK. El usuario debe instalar, halt, o poner a 0 el WDT antes que termine el intervalo inicial de reinicio, o se genere otro PUC. Cuando el WDT se configura para funcionar en el modo Watchdog, desencadena un PUC bien sea por la escritura de una contrasea incorrecta en WDTCTL o que expire el intervalo de tiempo seleccionado. Un PUC reinicia el WDT a su condicin por defecto y configura el pin /NMI en el modo reset. Modo de temporizador de intervalo Ajustando el bit WDTTMSEL a 1 selecciona el modo de temporizador de intervalo. ste modo se puede usar para proporcionar interrupciones peridicas. En el modo de temporizador de intervalo, el flag WDTIFG se pone a 1 cuando expira el intervalo de tiempo seleccionado. El PUC no se genera en este modo cuando expira el intervalo de tiempo y el WDTIFG y el bit de habilitacin WDTIE permanecen invariables. Cuando el bit WDTIE y el bit GIE estn a 1, el flag WDTIFG llama a una interrupcin. El flag de interrupcin WDTIFG se reinicia automticamente cuando la llamada a la interrupcin es atendida, o debe ser reiniciado por software.

Interrupciones del temporizador WDT El WDT utiliza dos bits del SFR para el control de interrupciones. El flag de interrupcin, WDTIFG ubicado en IFG1.0, y la habilitacin de interrupcin, WDTIE ubicado en IE1.0. Cuando se utiliza el WDT en modo Watchdog, el flag WDTIFG genera un reinicio del vector de interrupcin. WDTIFG se puede utilizar por la rutina de servicio de interrupcin para determinar si el WDT caus que el dispositivo reiniciara. Si el flag est a 1, significa que el WDT inici la condicin de reset, ya sea por la expiracin del tiempo o por una violacin de la clave de seguridad. Si en caso contrario WDTIFG est a 0 la condicin de reset la caus una fuente diferente. Cuando se utiliza el WDT en modo de temporizador de intervalo, el flag WDIFG se pone a 1 despus de seleccionar el intervalo de tiempo y solicitar una interrupcin del temporizador de intervalo si el WDTIE y el GIE estn a 1. El vector de interrupcin del temporizador de intervalo es diferente del vector de reset utilizado en el modo Watchdog. En el modo de intervalo, el flag WDTIFG se reinicia automticamente cuando la interrupcin se atiende o puede ser reiniciado por software. Mejoras del WDT+ El mdulo WDT+ proporciona una funcionalidad mejorada sobre el WDT. ste mdulo proporciona una caracterstica de sincronizacin a prueba de fallos para asegurar que el reloj para el WDT+ no se puede desactivar mientras est en modo Watchdog. Esto quiere decir que los modos de bajo consumo se pueden ver afectados por la eleccin del reloj WDT+. Por ejemplo, si ACLK es la fuente de reloj del WDT+,LPM4 no est disponible, porque el WDT+ impide al ACLK de ser deshabilitado. Adems, si ACLK o SMCLK fallan mientras generan el WDT+, la fuente de reloj de ste cambia automticamente por MCLK. En este caso, si MCLK se genera con un cristal de cuarzo y ste falla, la caracterstica a prueba de fallos del FLL+ activa el DCO y lo utiliza como fuente para el MCLK. Cuando el WDT+ se utiliza en modo de temporizador de intervalo, no hay caracterstica a prueba de fallos para la fuente de reloj. Funcionamiento en modos de bajo consumo

Los dispositivos de MSP430 tienen varios modos de bajo consumo que pueden disponer de diferentes seales de reloj. Los requisitos de las aplicaciones del usuario y el tipo de sincronizacin utilizado determinan como el WDT se debe configurar. Por ejemplo, no se debe configurar en modo Watchdog con SMCLK como fuente de reloj si se quiere usar LPM3, porque SMCLK no est activo en LPM3 y entonces no funcionara WDT. Si WDT+ se genera desde SMCLK, ste permanece habilitado durante LPM3, lo cual incrementa el consumo de corriente en el modo LPM3. Cuando el temporizador Watchdog no es necesario, el bit WDTHOLD se puede utilizar para mantener WDTCNT, reduciendo el consumo de energa. 1.1.8.2. Registros del temporizador Watchdog

Tabla Error! No hay texto con el estilo especificado en el documento..17 Registros de WDT

WDTCTL, registro de control del temporizador Watchdog

WDTPW WDTHOLD

Bits Contrasea WDT. Siempre se lee como 096h. Debe ser escrita 15-8 como 0A5h o se genera un PUC . Bit-7 Retencin WDT. ste bit detiene el WDT. Ajustando

WDTNMIES

WDTHOLD = 1 cuando WDT no est en uso ahorra energa. 0 WDT no se para 1 WDT se para Bit-6 Seleccin de flanco NMI del WDT. ste bit selecciona el flanco para la interrupcin NMI cuando WDTNMI = 1. Modificando ste bit se puede disparar una NMI. Modificar ste bit cuando WDTNMI = 0 para evitar la activacin de una NMI accidental. 0 NMI en flanco de subida 1 NMI en flanco de bajada

WDTNMI

Bit-5 Seleccin de NMI del WDT. ste bit selecciona la

WDTTMSEL

WDTCNTCL

WDTSSEL

WDTISx

funcin para el pin /NMI. 0 Funcin reset 1 Funcin NMI Bit-4 Seleccin del modo de WDT. 0 Modo Watchdog 1 Modo temporizador de intervalo Bit-3 Borrado del contador WDT. Ajustando WDTCNTCL = 1 borra el valor del contador quedando 0000h. Se reinicia automticamente. 0 Ninguna accin 1 WDTCNT = 0000h Bit-2 Seleccin de la fuente de reloj de WDT. 0 SMCLK 1 ACLK Bits Seleccin del intervalo del WDT. stos bits eligen el 1-0 intervalo del temporizador Watchdog para poner a 1 WDTIFG y/o generar un PUC. 00 Fuente de reloj del WDT / 32768 01 Fuente de reloj del WDT / 8192 10 Fuente de reloj del WDT / 512 11 Fuente de reloj del WDT / 64

IE1, registro de habilitacin de interrupcin 1

NMIIE

Bits Estos bits se deben usar por otros mdulos. 7-5 Bit-4 Habilitacin de interrupcin NMI. Habilita la interrupcin NMI. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 Interrupcin habilitada Bits Estos bits se deben usar por otros mdulos. 3-1

WDTIE

Bit-0 Habilitacin de interrupcin WDT. ste bit habilita el flag de interrupcin WDTIFG para el modo de intervalo. No es necesario poner a 1 para el modo de Watchdog.
Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 Interrupcin habilitada

IFG1, registro de flag de interrupcin

NMIIFG

Bits Estos bits se deben usar por otros mdulos. 7-5 Bit-4 Flag de interrupcin NMI. Se debe reiniciar por software. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 No hay interrupcin pendiente 1 Hay interrupcin pendiente Bits Estos bits se deben usar por otros mdulos. 3-1

WDTIFG

Bit-0 Flag de interrupcin del WDT. En el modo Watchdog, WDTIFG permanece en 1 hasta que se reinicie por software. En el modo de intervalo se reinicia automticamente atendiendo a la interrupcin, o puede ser reiniciado por software. Debido a que otros bits de este
registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 interrupcin habilitada

1.1.9.

Temporizador bsico

El mdulo temporizador bsico est compuesto por dos temporizadores independientes en cascada de 8-bit. ste temporizador alimenta la temporizacin LCD y los intervalos de tiempo de baja frecuencia. Algunos de los usos de ste temporizador son: Funcin de reloj en tiempo real (RTC) Incrementos del tiempo de software Algunas de sus caractersticas son: Fuente de reloj seleccionable Dos temporizadores independientes en cascada de 8-bit Admite interrupciones Generacin de la seal de control LCD

Figura Error! No hay texto con el estilo especificado en el documento..15 Diagrama de bloques del Basic timer

1.1.9.1. Funcionamiento del temporizador bsico El mdulo del temporizador bsico puede ser configurado como dos temporizadores de 8-bit o uno de 16-bit con el registro BTCTL. ste es un registro de lectura/escritura de 8 bit. Cualquier acceso de lectura/escritura debe usarse mediante instrucciones byte. El temporizador bsico controla el marco de frecuencia LCD con BTCNT1. Contador de temporizacin bsico 1 BTCNT1 es un contador de temporizacin de 8-bit directamente accesible por software. BTCNT1 se incrementa con ACLK y proporciona un marco de frecuencia para el controlador LCD. BTCNT1 se puede detener ajustando los bits BTHOLD y BTDIV. Contador de temporizacin bsico 2 BTCNT2 es un contador de temporizacin de 8-bit directamente accesible por software. BTCNT2 se puede generar desde ACLK o SMCLK, o desde ACLK / 256 cuando est en cascada con BTCNT1. La fuente de reloj de BTCNT2 se selecciona con los bits BTSSEL y BTDIV. BTCNT2 se puede detener para reducir el consumo de energa ajustando el bit HOLD. BTCNT2 genera la interrupcin del temporizador bsico, BTIFG. El intervalo de interrupcin se selecciona con los bits BTIPx. Modo de contador de 16-bit El modo de contador de temporizacin de 16-bit se selecciona cuando el control del bit BTDIV se pone a 1. En este modo BTCNT1 y BTCNT2 estn en cascada. La fuente de reloj deBTCNT1 es ACLK y la fuente de BTCNT2 es ACLK / 256. Funcionamiento del BT: Seal fLCD El controlador LCD (pero no el controlador LCD_A) utiliza la seal fLCD de BTCNT1 para generar el temporizador para las lneas comunes y de segmentos. ACLK genera BTCNT1 y se supone que sea 32768-Hz para que se produzca f LCD. La frecuencia fLCD se selecciona con el bit BTFRFQx y puede ser ACLK / 256, ACLK / 128, ACLK / 64, ACLK / 32. La frecuencia adecuada f LCD depende del cuadro de frecuencia LCD y de la tasa de multiplexor LCD y se calcula de la siguiente manera:

Interrupciones del BT El temporizador bsico utiliza dos bits en el registro de funciones especiales (SFRs) para controlar las interrupciones. stas son el flag de interrupcin del BT, BTIFG localizado en IFG2.7, y la habilitacin de interrupcin del BT, BTIE que se encuentra en IE2.7. El flag BTIFG se pone a 1 despus de estar seleccionado el intervalo de tiempo y hecha la llamada a la interrupcin del BT siempre que GIE y BTIE estn a 1. El flag BTIFG se reinicia automticamente cuando la interrupcin es atendida, pudiendo tambin reiniciarse por software. 1.1.9.2. Registros del temporizador bsico

Tabla Error! No hay texto con el estilo especificado en el documento..18 Registros del Basic Timer1

BTCTL, registro de control BT

BTSSEL BTHOLD

Bit-7 Seleccin del reloj BTCNT2. ste bit en conjunto con el

bit BTDIV selecciona la fuente de reloj de BTCNT2.


Bit-6 Retencin del BT. 0 BTCNT1 y BTCNT2 estn en funcionamiento 1 BTCNT1 se retiene si BTDIV = 1

BTCNT2 se retiene
BTDIV Bit-5 Divisin de reloj BT. ste bit en conjunto con el bit

BTSSEL selecciona la fuente de reloj de BTCNT2. BTSSEL 0 0 1 1 BTDIV 0 1 0 1 Fuente de reloj BTCNT2 ACLK ACLK / 256 SMCLK ACLK / 256

BTFRFQx

Bits 4-3

BTIPx

Frecuencia f LCD. stos bits controlan la frecuencia de refresco del LCD. 00 fACLK / 32 01 fACLK / 64 10 fACLK / 128 11 fACLK / 256 Bits Intervalo de interrupcin de BT
2-0 000 001 010 011 100 101 110 111 fCLK2 fCLK2 fCLK2 fCLK2 fCLK2 fCLK2 fCLK2 fCLK2 /2 /4 /8 / 16 / 32 / 64 / 128 / 256

BTCNT1, Contador 1 de BT

BTCNT1x

Bits 7-0

Registro BTCNT1. El registro BTCNT1 es la cuenta de BTCNT1.

BTCNT2, Contador 2 de BT

BTCNT2x

Bits 7-0

Registro BTCNT2. El registro BTCNT2 es la cuenta de BTCNT2.

IE2, registro de habilitacin de interrupcin 2

BTIE

Bit-7 Habilitacin de interrupcin del temporizador bsico. Habilita la interrupcin BTIFG. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 Interrupcin habilitada Bits Estos bits se deben usar por otros mdulos. 6-0

IFG2, registro de flag de interrupcin 2

BTIFG

Bit-7 Habilitacin del flag de interrupcin del temporizador bsico. Debido a que otros bits de este registro se pueden usar por otros mdulos, se recomienda poner a 1 o a 0 este bit usando las instrucciones BIS.B o BIC.B, en lugar de las instrucciones MOV.B o CLR.B. 0 Interrupcin no habilitada 1 Interrupcin habilitada Bits Estos bits se deben usar por otros mdulos. 6-0

1.1.10. Timer_A
El Temporizador_A es un contador/temporizador de 16-bit con tres o cinco registros de captura/comparacin. Admite mltiples capturas/comparaciones, salidas PWM, e intervalos de temporizacin. Timer_A tiene capacidad para varias interrupciones. Las interrupciones se deben generar desde el contador en condiciones de desbordamiento y desde cada registro de captura/comparacin. Este temporizador se caracteriza por: Contador de temporizacin asncrono de 16-bit con cuatro modos de funcionamiento. Fuente de reloj con posibilidad de configuracin y eleccin. Tres o cinco registros configurables de captura/comparacin. Salidas configurables con capacidad de PWM. Entrada asncrona y salida de retencin. Registro del vector de interrupcin para una rpida decodificacin de todas las interrupciones del Timer_A. En la figura 2.16 se puede observar el diagrama de bloques del funcionamiento del Temporizador_A.

1.1.10.1. Contador de 16-bit El registro del contador de 16-bit, TAR, se incrementa o decrementa con cada flanco de subida de la seal de reloj. Se puede tener acceso de lectura o escritura al TAR mediante software. Adems, el temporizador puede generar una interrupcin cuando se desborda. TAR se debe borrar ajustando el bit TACLR. Con este bit tambin se borra el divisor de reloj y el modo ascendente o descendente de la cuenta. El reloj de temporizacin se puede generar desde ACLK, SMCLK o externamente a travs de TACLK o INCLK. La fuente de reloj se selecciona con los bits TASSELx. La fuente de reloj debe pasar directamente al temporizador o al divisor por 2, 4 u 8 utilizando los bits IDx. El divisor de reloj se reinicia cuando TACLR est a 1.

1.1.10.2. Iniciando el temporizador El temporizador se debe iniciar o reiniciar por los siguientes mtodos: El temporizador cuenta cuando MCx > 0 y la fuente de reloj est activa. Cuando el modo de temporizador est o bien ascendente o ascendente/descendente, el temporizador se debe parar escribiendo 0 en TACCR0. Entonces el temporizador se debe reiniciar escribiendo un valor distinto de 0 en TACCR0. En esta situacin el temporizador inicia a incrementar su valor desde 0.

Figura Error! No hay texto con el estilo especificado en el documento..16 Diagrama de bloques del Timer_A

1.1.10.3. Control del modo del temporizador El temporizador tiene cuatro modos de funcionamiento como se describe en la siguiente tabla.
MCx 00 01 10 11 Modo Parado Ascendente Continuo Ascendente/descendente Descripcin El temporizador se para El temporizador cuenta repetidamente desde 0 hasta el valor de TACCR0 El temporizador cuenta repetidamente desde 0 hasta 0FFFFh El temporizador cuenta repetidamente desde 0 hasta el valor de TACCR0 y vuelve hasta 0

Tabla Error! No hay texto con el estilo especificado en el documento..19 Modos del temporizador A

Modo ascendente El modo ascendente se utiliza si el periodo del temporizador debe ser diferente del cmputo 0FFFFh. El temporizador cuenta repetidamente en orden ascendente hasta el valor del registro de comparacin TACCR0, el cual define el periodo como se muestra en la figura 2.17. El nmero de la cuenta del temporizador en el perodo es TACCR0+1. Cuando el valor del temporizador se iguala a TACCR0 se reinicia el temporizador contando desde 0 de nuevo. Si se selecciona este modo cuando el valor del temporizador es mayor que TACCR0, el temporizador se reinicia empezando desde 0.

Figura Error! No hay texto con el estilo especificado en el documento..17 Perodo de conteo de Timer_A Up mode

El flag de interrupcin CCIFG del registro TACCR0 se pone a 1 cuando el temporizador cuenta hasta TACCR0. El flag de interrupcin TAIFG se pone a 1 cuando el temporizador cuenta desde TACCR0 hasta 0. Esto se puede entender mejor en la figura 2.18 que detalla lo que ocurre en un ciclo de reloj del temporizador en ste modo de funcionamiento.

Figura Error! No hay texto con el estilo especificado en el documento. .18 Ajuste del flag en el modo ascendente del Timer_A

Cuando se cambia el valor del registro TACCR0 mientras el temporizador est ejecutndose, si el nuevo periodo es mayor o igual que el antiguo, o es mayor que el valor de cuenta vigente, el temporizador seguir hasta el fin del nuevo periodo. Si el valor del nuevo periodo es menor que el valor actual del conteo, el temporizador vuelve a 0.

Modo continuo En el modo continuo, el temporizador cuenta repetidamente hasta 0FFFFh y se reinicia desde 0 como se muestra en la figura 2.19. El registro de comparacin/captura TACCR0 trabaja de la misma manera que los otros registros de captura/comparacin.

Figura Error! No hay texto con el estilo especificado en el documento. .19 Periodo de conteo del Timer_A Continuous mode

El flag de interrupcin TAIFG se pone a 1 cuando el temporizador cuenta desde 0FFFFh hasta 0. La siguiente figura detalla lo que sucede.

Figura Error! No hay texto con el estilo especificado en el documento..20 Ajuste del flag del Timer_A en el modo continuo

Modo ascendente/descendente ste modo se utiliza si el periodo del temporizador debe ser diferente del cmputo 0FFFFh, y si se necesita una generacin de pulsos simtrica. El temporizador cuenta en orden ascendente repetidamente hasta el valor del registro TACCR0 y vuelve hasta 0 en orden descendente, tal como muestra la figura 2.21. El periodo es dos veces el valor del registro TACCR0.

Figura Error! No hay texto con el estilo especificado en el documento. .21 Periodo de conteo del Timer_A Up/down mode

La direccin de la cuenta se retiene. Esto permite al temporizador pararse y reiniciarse en la direccin que se encontraba antes de pararse. Si no se desea, se puede poner a 1 el bit TACLR para borrar la direccin de conteo. En el modo ascendente/descendente, el flag de interrupcin CCIFG del registro TACCR0 y el flag de interrupcin TAIFG se ponen a 1 solo una vez durante un periodo, separados por la mitad del periodo del temporizador. El flag de interrupcin CCIFG se pone a 1 cuando la cuenta del temporizador pasa de TACCR -1 a TACCR0, y el flag de interrupcin TAIFG se pone a 1 cuando completa la cuenta descendente de 0001h a 0000h. En la figura 2.22 se puede ver el funcionamiento del ciclo de reloj en este modo.

Figura Error! No hay texto con el estilo especificado en el documento..22 Ajuste del flag del Timer_A en el modo ascendente/descendente

1.1.10.4. Bloques de captura/comparacin En el temporizador A estn presentes tres o cinco bloques idnticos de captura/comparacin, TACCRx. Cualquiera de los bloques se debe utilizar para capturar los datos del temporizador o para generar intervalos de tiempo. Es posible elegir en que modo han de funcionar estos bloques, si en el modo de captura o en el modo de comparacin. Modo de captura ste modo se selecciona cuando CAP = 1. El modo de captura se utiliza para grabar eventos de tiempo. Se puede utilizar para clculos de velocidad o medidas de tiempo. Las entradas de captura CCIxA y CCIxB estn conectadas a pins externos o seales internas y se seleccionan con los bits CCISx. Los bits CMx seleccionan el flanco de captura de la seal de entrada como subida, bajada o ambos. Una captura tiene lugar en el flanco seleccionado de la seal de entrada. Cuando se produce una captura los siguientes se efectan las acciones siguientes: El valor del temporizador se copia en el registro TACCRx. El flag de interrupcin CCIFG se pone a 1. El nivel de la seal de entrada se puede leer en cualquier momento desde el bit CCI. Este tipo de controladores deben tener diferentes seales conectadas a CCIxA y CCIxB. La seal de captura puede ser asncrona con el reloj temporizador y causar una condicin de carrera. Poniendo a 1 el bit SCS se sincroniza la captura con el siguiente reloj temporizador. Es recomendado sincronizar la captura de la seal con el reloj temporizador poniendo a 1 el bit SCS. Modo de comparacin ste modo se selecciona cuando CAP = 0. Se utiliza para generar una seal de salida PWM o interrupciones en un intervalo de tiempo especfico. Cuando TAR cuenta hasta el valor en TACCRx: El flag de interrupcin CCIFG se pone a 1. La seal interna EQUx =1. EQUx afecta la salida de acuerdo con el modo de salida. La seal de entrada CCI se retiene en SCCI.

1.1.10.5. Unidad de salida Cada bloque de captura/comparacin contiene una unidad de salida. La unidad de salida se utiliza para generar seales de salida como PWM. Cada unidad de salida tiene ocho modos de funcionamiento que generan seales basadas en las seales EQU0 y EQUx. Los modos de salida se definen con los bits OUTMODx y se describen en la tabla 2. La seal OUTx se cambia con el flanco de subida del reloj temporizador para todos los modos exceptuando el modo 0. Los modos de salida 2, 3, 6 y 7 no son tiles para la unidad de salida 0, porque EQUx = EQU0.
OUTMODx Modo 000 001 Output Set Descripcin La seal de salida OUTx se define por el bit OUTx. La seal OUTx se actualiza automticamente. La salida se pone a 1 cuando el reloj temporizador llega al valor TACCRx. Se mantiene mientras no se reinicie el temporizador, o hasta que se seleccione otro modo de salida que afecte a la salida.

010

Toggle/Reset La salida se conmuta cuando el temporizador cuenta hasta el valor de TACCRx. La salida se reinicia cuando el temporizador cuenta hasta el valor de TACCR0. Set/Reset La salida se pone a 1 cuando el temporizador cuenta hasta el valor de TACCRx. La salida se reinicia cuando el temporizador cuenta hasta el valor de TACCR0. La salida se conmuta cuando el temporizador cuenta hasta el valor de TACCRx. El periodo de salida es el doble que el periodo del temporizador. La salida se reinicia cuando el temporizador cuenta hasta el valor de TACCRx. Se mantiene hasta que se seleccione otro modo de salida y que afecte a la salida. La salida se conmuta cuando el temporizador cuenta hasta el valor de TACCRx. Se pone a 1 cuando el temporizador cuenta hasta el valor de TACCR0. La salida se reinicia cuando el temporizador cuenta hasta el valor de TACCRx. Se pone a 1 cuando el temporizador cuenta hasta el valor de TACCR0.

011

100

Toggle

101

Reset

110

Toggle/Set

111

Reset/Set

Tabla Error! No hay texto con el estilo especificado en el documento..20 Modos de salida del Timer_A

Ejemplo de salida del temporizador en modo ascendente La seal OUTx se cambia cuando el temporizador cuenta en orden ascendente hasta el valor TACCRx, y pasa desde TACCR0 hasta 0, dependiendo del modo de salida. En el siguiente ejemplo se utiliza TACCR0 y TACCR1.

Figura Error! No hay texto con el estilo especificado en el documento. .23 Ejemplo de salida del Timer_A en Up mode

1.1.10.6. Interrupciones del Timer_A Dos vectores de interrupcin estn asociados al mdulo del Timer_A de 16-bit: El vector de interrupcin TACCR0 para TACCR0 CIFG. El vector de interrupcin TAIV para todas las flags CCIFG y TAIFG. del de del a0 sus

En el modo de captura cualquier flag CCIFG se pone a 1 cuando el valor temporizador se captura en el registro TACCRx asociado. En el modo comparacin, cualquier flag CCIFG se pone a 1 si TAR cuenta hasta el valor registro TACCRx asociado. A travs del software tambin se debe poner a 1 o cualquier flag CCIFG. Todas las flags CCIFG llaman a una interrupcin cuando bits CCIE y GIE correspondientes estn a 1. Vector de interrupcin TACCR0

El flag TACCR0 CCIFG tiene la prioridad mxima de la interrupcin de Timer_A y tiene un vector de interrupcin dedicado como se muestra en la figura 2.24. El flag TACCR0 CCIFG se reinicia automticamente cuando la llamada a la interrupcin TACCR0 es atendida

Figura Error! No hay texto con el estilo especificado en el documento..24 Flag de interrupcin TACCR0

Generador del vector de interrupcin, TAIV Los flags TACCR1 CCIFG, TACCR2 CCIFG y TAIFG estn priorizados y combinados para generar un simple vector de interrupcin. El registro del vector de interrupcin TAIV se utiliza para determinar que flag hizo la llamada a una interrupcin. La interrupcin de habilitacin de mxima prioridad genera un nmero en el registro TAIV. ste nmero se puede evaluar o aadir al PC para entrar automticamente en la rutina de software apropiada. Desactivadas las interrupciones del Timer_A no afectan el valor de TAIV. Cualquier acceso de lectura/escritura del registro TAIV reinicia automticamente el ms alto flag de interrupcin pendiente. Si otro flag se pone a 1, otra interrupcin se genera inmediatamente despus de atender la interrupcin inicial.

1.1.10.7. Registros Timer_A

Registro de control, TACTL

Unused TASSELx

Bits 15-10 Bits 9-8

No se utiliza. Seleccin de la fuente de reloj del Timer_A. 00 TACLK 01 ACLK 10 SMCLK0 11 TACLK invertido Estos bits seleccionan el divisor para el reloj de entrada. 00 /1 01 /2 10 /4 11 /8 Control de modo. Poniendo MCx = 00h cuando el Timer_A no est en uso ahorra energa. 00 Modo de parada: el temporizador se para 01 Modo ascendente: el temporizador cuenta hasta TACCR0 10 Modo continuo: el temporizador cuenta hasta 0FFFFh 11 Modo ascendente/descendente: cuenta hasta TACCR0 y de ah hasta 0 No se utiliza. Se borra el Timer_A. ste bit reinicia el TAR, el divisor de reloj y la direccin de la cuenta. TACLR se reinicia automticamente y siempre se lee como 0. Habilitacin de interrupcin del Timer_A. ste bit habilita la llamada a la interrupcin TAIFG. 0 Interrupcin deshabilitada 1 Interrupcin habilitada Flag de interrupcin del Timer_A. 0 No hay interrupcin pendiente 1 Interrupcin pendiente

IDx

Bits 7-6

MCx

Bits 5-4

Unused TACLR

Bit-3 Bit-2

TAIE

Bit-1

TAIFG

Bit-0

Registro del Timer_A, TAR

TARx

Bits 15-0

El registro TAR es la cuenta del Timer_A.

Registro de captura/comparacin del Timer_A, TACCRx

TACCRx

Bits 15-0

En modo comparacin: TACCRx mantiene los datos para la comparacin con el valor del temporizador del registro TAR. En modo captura: el registro TAR se copia en el registro TACCRx cuando se ejecuta una captura.

Registro de control de captura/comparacin, TACCTLx

CMx

Bits 15-14

Modo de captura.

CCISx

SCS

SCCI

Unused CAP

OUTMODx

CCIE

00 No hay captura 01 Captura en el flanco de subida 10 Captura en el flanco de bajada 11 Captura en ambos flancos Bits Seleccin de entrada de captura/comparacin. 13-12 stos bits seleccionan la seal de entrada. CCIxA 00 CCIxB 01 GND 10 VCC 11 Bit-11 Sincronizacin de la fuente de captura. ste bit se utiliza para sincronizar la seal de entrada de captura con el reloj temporizador. Captura asncrona 0 Captura sncrona 1 Bit-10 Entrada sincronizada de captura/comparacin. La seal de entrada CCI seleccionada se retiene con la seal EQUx y se puede leer a travs de este bit. Bit-9 No se utiliza. Bit-8 Seleccin de modo captura/comparacin. 0 Modo de comparacin 1 Modo de captura Bits Modo de salida. Los modos 2, 3, 6 y 7 no tiles para el 7-5 TACCR0 porque EQUx = EQU0. 000 Valor del bit OUT 001 Set 010 Toggle/Reset 011 Set/Reset 100 Toggle 101 Reset 110 Toggle/Set 111 Reset/Set Bit-4 Habilitacin de la interrupcin de captura/comparacin. Este bit habilita la llamada a la interrupcin del flan CCIFg correspondiente.

CCI OUT

Bit-3 Bit-2

COV

Bit-1

CCIFG

Bit-0

0 Interrupcin deshabilitada 1 Interrupcin habilitada Entrada de captura/comparacin. La seal de entrada seleccionada se puede leer con este bit. Salida. Para el modo de salida 0, este bit controla directamente el estado de la salida. 0 Salida baja 1 Salida alta Desbordamiento de captura. Este bit indica la existencia de un desbordamiento en la captura. COV se debe reiniciar con software. 0 No hay desbordamiento de captura 1 Existencia de desbordamiento en la captura Flag de interrupcin de captura/comparacin 0 1 No hay interrupcin pendiente 1 Interrupcin pendiente

Registro del vector de interrupcin del Timer_A, TAIV

TAIVx

Bits 15-0

Valor del vector de interrupcin del Timer_A.

1.1.11. Timer_B
El Temporizador_B es un contador/temporizador de 16-bit con tres o siete registros de captura/comparacin. Admite mltiples capturas/comparaciones, salidas PWM, e intervalos de temporizacin. Timer_B tiene capacidad para varias interrupciones. Las interrupciones se deben generar desde el contador en condiciones de desbordamiento y desde cada registro de captura/comparacin. Este temporizador se caracteriza por: Contador de temporizacin asncrono de 16-bit con cuatro modos de funcionamiento y cuatro longitudes seleccionables. Fuente de reloj con posibilidad de configuracin y eleccin. Tres o siete registros configurables de captura/comparacin. Salidas configurables con capacidad de PWM. Enganches de comparacin de buffer doble con carga sincronizada. Registro del vector de interrupcin para una rpida decodificacin de todas las interrupciones del Timer_B. En la figura 2.23 se puede observar el diagrama de bloques del funcionamiento del Temporizador_B. 1.1.11.1. Contador de 16-bit El registro del contador de 16-bit, TBR, se incrementa o decrementa con cada flanco de subida de la seal de reloj. Se puede tener acceso de lectura o escritura al TBR mediante software. Adems, el temporizador puede generar una interrupcin cuando se desborda. TBR se debe borrar ajustando el bit TBCLR. Con este bit tambin se borra el divisor de reloj y el modo ascendente o descendente de la cuenta. El reloj de temporizacin se puede generar desde ACLK, SMCLK o externamente a travs de TBCLK o INCLK. La fuente de reloj se selecciona con los bits TBSSELx. La fuente de reloj debe pasar directamente al temporizador o al divisor por 2, 4 u 8 utilizando los bits IDx. El divisor de reloj se reinicia cuando TBCLR est a 1. El Timer_B se puede configurar a travs de los bits CNTLx para funcionar como temporizador de 8, 10, 12 o 16-bit. El mximo valor de conteo, TBR(max),para las longitudes seleccionables es 0FFh, 03Fh, 0FFFh, y 0FFFFh, respectivamente. Los datos escritos en el registro TBR en los modos de 8, 10 y 12-bit estn justificados a la derecha con los ceros a la izquierda. 1.1.11.2. Iniciando el temporizador El temporizador se debe iniciar o reiniciar por los siguientes mtodos: El temporizador cuenta cuando MCx > 0 y la fuente de reloj est activa.

Cuando el modo de temporizador est o bien ascendente o ascendente/descendente, el temporizador se debe parar escribiendo 0 en TBCL0. Entonces el temporizador se debe reiniciar escribiendo un valor distinto de 0 en TBCL0. En esta situacin el temporizador inicia a incrementar su valor desde 0.

Figura Error! No hay texto con el estilo especificado en el documento..25 Diagrama de bloques del Timer_B

1.1.11.3. Control del modo del temporizador El temporizador tiene cuatro modos de funcionamiento como se describe en la siguiente tabla.
MCx 00 01 10 11 Modo Parado Ascendente Continuo Ascendente/descendente Descripcin El temporizador se para El temporizador cuenta repetidamente desde 0 hasta el valor de TBCL0 El temporizador cuenta repetidamente desde 0 hasta el valor seleccionado por los bits CNTLx El temporizador cuenta repetidamente desde 0 hasta el valor de TBCL0 y vuelve hasta 0

Tabla Error! No hay texto con el estilo especificado en el documento..21 Modos del temporizador B

Modo ascendente El modo ascendente se utiliza si el periodo del temporizador debe ser diferente del cmputo TBR(max). El temporizador cuenta repetidamente en orden ascendente hasta el valor del registro de comparacin TBCL0, el cual define el periodo como se muestra en la figura 2.24. El nmero de la cuenta del temporizador en el perodo es TBCL0+1. Cuando el valor del temporizador se iguala a TBCL0 se reinicia el temporizador contando desde 0 de nuevo. Si se selecciona este modo cuando el valor del temporizador es mayor que TBCL0, el temporizador se reinicia empezando desde 0.

Figura Error! No hay texto con el estilo especificado en el documento. .26 Periodo de conteo del Timer_B Up mode

El flag de interrupcin CCIFG del registro TBCCR0 se pone a 1 cuando el temporizador cuenta hasta TBCL0. El flag de interrupcin TBIFG se pone a 1 cuando el temporizador cuenta desde TBCL0 hasta 0. Esto se puede entender mejor en la figura 2.25 que detalla lo que ocurre en un ciclo de reloj del temporizador en ste modo de funcionamiento.

Figura Error! No hay texto con el estilo especificado en el documento. .27 Ajuste del flag en el modo ascendente del Timer_B

Cuando se cambia el valor del registro TBCL0 mientras el temporizador est ejecutndose y cuando el evento de carga de TBCL0 es inmediato, si el nuevo periodo es mayor o igual que el antiguo, o es mayor que el valor de cuenta vigente, el temporizador seguir hasta el fin del nuevo periodo. Si el valor del nuevo periodo es menor que el valor actual del conteo, el temporizador vuelve a 0. Modo continuo En el modo continuo, el temporizador cuenta repetidamente hasta TBR(max) y se reinicia desde 0 como se muestra en la figura 2.26. El registro de comparacin/captura TBCL0 trabaja de la misma manera que los otros registros de captura/comparacin.

Figura Error! No hay texto con el estilo especificado en el documento. .28 Periodo de conteo del Timer_B Continuous mode

El flag de interrupcin TBIFG se pone a 1 cuando el temporizador cuenta desde TBR(max) hasta 0. En la figura 2.27 se observa este suceso.

Figura Error! No hay texto con el estilo especificado en el documento. .29 Ajuste del flag en el modo continuo del Timer_B

Modo ascendente/descendente ste modo se utiliza si el periodo del temporizador debe ser diferente del cmputo TBR(max), y si se necesita una generacin de pulsos simtrica. El temporizador cuenta en orden ascendente repetidamente hasta el valor del registro TBCL0 y vuelve hasta 0 en orden descendente, tal como muestra la figura 2.28. El periodo es dos veces el valor del registro TBCL0.

Figura Error! No hay texto con el estilo especificado en el documento..30 Periodo de conteo del Timer_B Up/down mode

La direccin de la cuenta se retiene. Esto permite al temporizador pararse y reiniciarse en la direccin que se encontraba antes de pararse. Si no se desea, se puede poner a 1 el bit TBCLR para borrar la direccin de conteo. En el modo ascendente/descendente, el flag de interrupcin CCIFG del registro TBCCR0 y el flag de interrupcin TBIFG se ponen a 1 solo una vez durante un periodo, separados por la mitad del periodo del temporizador. El flag de interrupcin CCIFG se pone a 1 cuando la cuenta del temporizador pasa de TBCL0 -1 a TBCL0, y el flag de interrupcin TBIFG se pone a 1 cuando completa la cuenta descendente de 0001h a 0000h. En la figura 2.29 se puede ver el funcionamiento del ciclo de reloj en este modo.

Figura Error! No hay texto con el estilo especificado en el documento..31 Ajuste del flag en modo Ascendente/descendente

1.1.11.4. Bloques de captura/comparacin En el temporizador B estn presentes tres o siete bloques idnticos de captura/comparacin, TBCCRx. Cualquiera de los bloques se debe utilizar para capturar los datos del temporizador o para generar intervalos de tiempo. Es posible elegir en que modo han de funcionar estos bloques, si en el modo de captura o en el modo de comparacin. Modo de captura ste modo se selecciona cuando CAP = 1. El modo de captura se utiliza para grabar eventos de tiempo. Se puede utilizar para clculos de velocidad o medidas de tiempo. Las entradas de captura CCIxA y CCIxB estn conectadas a pins externos o seales internas y se seleccionan con los bits CCISx. Los bits CMx seleccionan el flanco de captura de la seal de entrada como subida, bajada o ambos. Una captura tiene lugar en el flanco seleccionado de la seal de entrada. Cuando se produce una captura los siguientes se efectan las acciones siguientes: El valor del temporizador se copia en el registro TBCCRx. El flag de interrupcin CCIFG se pone a 1. El nivel de la seal de entrada se puede leer en cualquier momento desde el bit CCI. Este tipo de controladores deben tener diferentes seales conectadas a CCIxA y CCIxB. La seal de captura puede ser asncrona con el reloj temporizador y causar una condicin de carrera. Poniendo a 1 el bit SCS se sincroniza la captura con el siguiente reloj temporizador. Es recomendado sincronizar la captura de la seal con el reloj temporizador poniendo a 1 el bit SCS. Modo de comparacin ste modo se selecciona cuando CAP = 0. Se utiliza para generar una seal de salida PWM o interrupciones en un intervalo de tiempo especfico. Cuando TBR cuenta hasta el valor en TBCLx: El flag de interrupcin CCIFG se pone a 1. La seal interna EQUx =1. EQUx afecta la salida de acuerdo con el modo de salida.

1.1.11.5. Unidad de salida Cada bloque de captura/comparacin contiene una unidad de salida. La unidad de salida se utiliza para generar seales de salida como PWM. Cada unidad de salida tiene ocho modos de funcionamiento que generan seales basadas en las seales EQU0 y EQUx. La funcin del pin TBOUTH se puede utilizar para poner todas las salidas del Timer_B en un estado de alta impedancia. Cuando la funcin del pin TBOUTH se selecciona para el pin, y cuando el pin se establece en HIGH, todas las salidas del Timer_A estn en un estado de alta impedancia. Los modos de salida se definen con los bits OUTMODx y se describen en la tabla 2. La seal OUTx se cambia con el flanco de subida del reloj temporizador para todos los modos exceptuando el modo 0. Los modos de salida 2, 3, 6 y 7 no son tiles para la unidad de salida 0, porque EQUx = EQU0.
OUTMODx Modo 000 001 Output Set Descripcin La seal de salida OUTx se define por el bit OUTx. La seal OUTx se actualiza automticamente. La salida se pone a 1 cuando el reloj temporizador llega al valor TBCLx. Se mantiene mientras no se reinicie el temporizador, o hasta que se seleccione otro modo de salida que afecte a la salida.

010

Toggle/Reset La salida se conmuta cuando el temporizador cuenta hasta el valor de TBCLx. La salida se reinicia cuando el temporizador cuenta hasta el valor de TBCL0. Set/Reset La salida se pone a 1 cuando el temporizador cuenta hasta el valor de TBCLx. La salida se reinicia cuando el temporizador cuenta hasta el valor de TBCL0. La salida se conmuta cuando el temporizador cuenta hasta el valor de TBCLx. El periodo de salida es el doble que el periodo del temporizador. La salida se reinicia cuando el temporizador cuenta hasta el valor de TBCLx. Se mantiene hasta que se seleccione otro modo de salida y que afecte a la salida. La salida se conmuta cuando el temporizador cuenta hasta el valor de TBCLx. Se pone a 1 cuando el temporizador cuenta hasta el valor de TBCL0. La salida se reinicia cuando el temporizador cuenta hasta el valor de TBCLx. Se pone a 1 cuando el temporizador cuenta hasta el valor de TBCL0.

011

100

Toggle

101

Reset

110

Toggle/Set

111

Reset/Set

Tabla Error! No hay texto con el estilo especificado en el documento. .22 Modos de salida del Timer_B

Ejemplo de salida del temporizador en modo ascendente/descendente La seal OUTx cambia cuando el temporizador es igual a TBCLx en cualquiera de las direcciones y cuando el temporizador es igual a TBCL0, dependiendo del modo de salida. En el ejemplo de la figura 2.32 se utilizan TBCL0 y TBCL3.

Figura Error! No hay texto con el estilo especificado en el documento. .32 Ejemplo de salida del Timer_B en Up/down mode

1.1.11.6. Interrupciones del Timer_B Dos vectores de interrupcin estn asociados al mdulo del Timer_B de 16-bit: El vector de interrupcin TBCCR0 para TBCCR0 CIFG. El vector de interrupcin TBIV para todas las flags CCIFG y TBIFG.

En el modo de captura cualquier flag CCIFG se pone a 1 cuando el valor del temporizador se captura en el registro TBCCRx asociado. En el modo de comparacin, cualquier flag CCIFG se pone a 1 si TBR cuenta hasta el valor del registro TBCLx asociado. A travs del software tambin se debe poner a 1 o a 0 cualquier flag CCIFG. Todas las flags CCIFG llaman a una interrupcin cuando sus bits CCIE y GIE correspondientes estn a 1. Vector de interrupcin TBCCR0 El flag TBCCR0 CCIFG tiene la prioridad mxima de la interrupcin de Timer_B y tiene un vector de interrupcin dedicado como se muestra en la figura 2.33. El flag TBCCR0 CCIFG se reinicia automticamente cuando la llamada a la interrupcin TBCCR0 es atendida.

Figura Error! No hay texto con el estilo especificado en el documento. .33 Flag de interrupcin TBCCR0

Generador del vector de interrupcin, TBIV Los flags TBCCRx CCIFG y TBIFG (exceptuando TBCCR0 CCIFG) estn priorizados y combinados para generar un simple vector de interrupcin. El registro del vector de interrupcin TBIV se utiliza para determinar que flag hizo la llamada a una interrupcin. La interrupcin de habilitacin de mxima prioridad genera un nmero en el registro TBIV. ste nmero se puede evaluar o aadir al PC para entrar automticamente en la rutina de software apropiada. Desactivadas las interrupciones del Timer_B no afectan el valor de TBIV. Cualquier acceso de lectura/escritura del registro TBIV reinicia automticamente el ms alto flag de interrupcin pendiente. Si otro flag se pone a 1, otra interrupcin se genera inmediatamente despus de atender la interrupcin inicial.

1.1.11.7. Registros Timer_B

Registro de control Timer_B, TBCTL

Unused TBCLGRPx

Bit-15 No se utiliza. Bits Grupo TBCLx. 14-13 00 Cada latch TBCLx carga independientemente 01 TBCL1+TBCL2 (Los bits TBCCR1 CLLDx controlan la actualizacin) TBCL3+TBCL4 (Los bits TBCCR3 CLLDx controlan la actualizacin) TBCL5+TBCL6 (Los bits TBCCR5 CLLDx controlan la actualizacin) TBCL0 independiente 10 TBCL1+TBCL2+TBCL3 (Los bits TBCCR1 CLLDx controlan la actualizacin) TBCL4+TBCL5+TBCL6 (Los bits TBCCR4 CLLDx controlan la actualizacin) TBCL0 independiente 11 TBCL0+TBCL1+TBCL2+TBCL3+TBCL4+TBCL5+TBCL6 (Los bits TBCCR1 CLLDx controlan la actualizacin) Bits Longitud del contador. 12-11 00 16-bit, TBR(max) = 0FFFFh 01 12-bit, TBR(max) = 0FFFh 10 10-bit, TBR(max) = 03FFh 11 8-bit, TBR(max) = 0FFh Bit-10 Bits 9-8 No se utiliza. Seleccin de la fuente de reloj del Timer_B. 00 TBCLK 01 ACLK 10 SMCLK0 11 TBCLK invertido Estos bits seleccionan el divisor para el reloj de entrada. 00 01 10 11 /1 /2 /4 /8

CNTLx

Unused TBSSELx

IDx

Bits 7-6

MCx

Bits 5-4

Unused TBCLR

Bit-3 Bit-2

TBIE

Bit-1

TBIFG

Bit-0

Control de modo. Poniendo MCx = 00h cuando el Timer_B no est en uso ahorra energa. 00 Modo de parada: el temporizador se para 01 Modo ascendente: el temporizador cuenta hasta TBCL0 10 Modo continuo: el temporizador cuenta hasta TBCNTLx 11 Modo ascendente/descendente: cuenta hasta TBCL0 y de ah hasta 0 No se utiliza. Se borra el Timer_B. ste bit reinicia el TBR, el divisor de reloj y la direccin de la cuenta. TBCLR se reinicia automticamente y siempre se lee como 0. Habilitacin de interrupcin del Timer_B. ste bit habilita la llamada a la interrupcin TBIFG. 0 Interrupcin deshabilitada 1 Interrupcin habilitada Flag de interrupcin del Timer_B. 0 No hay interrupcin pendiente 1 Interrupcin pendiente

Registro del Timer_B

TBRx

Bits 15-0

El registro TBR es la cuenta del Timer_B.

Registro de captura/comparacin del Timer_B, TBCCRx

TBCCRx

Bits 15-0

En modo comparacin: compara los datos que se escriben en cada TBCCRx y automticamente los transfiere a TBCLx. TBCLx mantiene los datos para compararlos con los valores del temporizador en el TBR. En modo captura: el registro TBR se copia en el registro TBCCRx cuando se ejecuta una captura.

Registro de control de captura/comparacin, TBCCTLx

CMx

Bits 15-14

Modo de captura.

CCISx

SCS

00 No hay captura 01 Captura en el flanco de subida 10 Captura en el flanco de bajada 11 Captura en ambos flancos Bits Seleccin de entrada de captura/comparacin. stos bits 13-12 seleccionan la seal de entrada. CCIxA 00 CCIxB 01 GND 10 VCC 11 Bit-11 Sincronizacin de la fuente de captura. ste bit se utiliza para sincronizar la seal de entrada de captura con el reloj temporizador. Captura asncrona 0 Captura sncrona 1

CLLDx

Bits 10-9

CAP

Bit-8

OUTMODx

Bits 7-5

CCIE

Bit-4

CCI OUT

Bit-3 Bit-2

COV

Bit-1

CCIFG

Bit-0

Carga del latch de comparacin. stos bits seleccionan el evento de carga del latch de comparacin. TBCLx carga en escritura al TBCCRx 00 01 TBCLx carga cuando TBR cuenta hasta 0 10 TBCLx carga cuando TBR cuenta hasta 0 (Up y continuous mode) TBCLx carga cuando TBR cuenta hasta TBCL0 (Up/down mode) 11 TBCLx carga cuando TBR cuenta hasta TBCLx Seleccin de modo captura/comparacin. 0 Modo de comparacin 1 Modo de captura Modo de salida. Los modos 2, 3, 6 y 7 no tiles para el TBCL0 porque EQUx = EQU0. Valor del bit OUT 000 001 Set 010 Toggle/Reset 011 Set/Reset 100 Toggle 101 Reset 110 Toggle/Set 111 Reset/Set Habilitacin de la interrupcin de captura/comparacin. Este bit habilita la llamada a la interrupcin del flan CCIFg correspondiente. 0 Interrupcin deshabilitada 1 Interrupcin habilitada Entrada de captura/comparacin. La seal de entrada seleccionada se puede leer con este bit. Salida. Para el modo de salida 0, este bit controla directamente el estado de la salida. 0 Salida baja 1 Salida alta Desbordamiento de captura. Este bit indica la existencia de un desbordamiento en la captura. COV se debe reiniciar con software. 0 No hay desbordamiento de captura 1 Existencia de desbordamiento en la captura Flag de interrupcin de captura/comparacin 0 1 No hay interrupcin pendiente 1 Interrupcin pendiente

Registro del vector de interrupcin del Timer_B, TBIV

TBIVx

Bits 15-0

Valor del vector de interrupcin del Timer_B.

1.1.12. Convertidor Analgico/Digital SD16_A


ste mdulo se refiere a un convertidor analgico-digital sigma-delta multicanal de 16-bit. Est compuesto por cuatro convertidores individuales, denominados canales, y por un voltaje interno de referencia. Cada canal tiene hasta ocho pares de entrada analgica FULLY DIFFERNTIAL MULTIPLEXED incluyendo un sensor de temperatura integrado y un suministro dividido de tensin. Los convertidores se basan en moduladores sigma-delta de segundo orden de sobremuestreo y filtros digitales de conversin decimal. Dichos filtros son del tipo peine con una proporcin de sobremuestreo seleccionable de hasta 1024. Se puede hacer un filtrado adicional mediante software. Caractersticas del convertidor SD16_A: Arquitectura de 16-bit sigma-delta. Cuatro canales ADC independientes muestreando simultneamente. Cuatro entradas analgicas multiplexadas diferenciales. Seleccin por software de la generacin de la tensin de referencia en el chip. Seleccin por software de la referencia externa o interna. Sensor de temperatura integrado accesible por todos los canales. Frecuencia de entrada al modulador de hasta 1.1-MHz. Buffer de entrada de alta impedancia. Seleccin de modo de conversin de bajo consumo.

Comentario [M1]: Software selectable on-chip reference voltaje generation

1.1.12.1. Corazn del ADC La conversin analgica-digital se ejecuta en 1-bit, un modulador sigma-delta de segundo orden. Un comparador de 1 slo bit en el modulador cuantifica la seal de entrada con la frecuencia del modulador f M. La secuencia de datos resultantes de 1bit se hace el promedio por un filtro digital para obtener los resultados de la conversin.

Figura Error! No hay texto con el estilo especificado en el documento..34 Diagrama de bloques del convertidor AD

1.1.12.2. Rango de entrada analgica y PGA La escala real del rango de la tensin de entrada para cada par analgico de entrada es dependiente del ajuste de ganancia del amplificador de ganancia programable (PGA) de cada canal. El mximo rango de escala real es VFSR donde VFSR est definido por:

Para una tensin de referencia de 1.2V, el mximo rango de entrada de la escala real para una ganancia de 1 sera:

1.1.12.3. Generador de tensin de referencia El mdulo SD16_A tiene integrado una tensin de referencia de 1.2V. sta se puede utilizar para cada canal y se habilita con el bit SD16REFON. Cuando se utiliza la referencia interna se recomienda conectar externamente un condensador de 100nF del pin VREF al pin AVSS para reducir el ruido. La tensin de referencia externa se puede utilizar fuera del chip cuando SD16VMIDON=1. La salida con etapa separadora puede proporcionar hasta 1mA de funcionamiento. Cuando se utiliza la tensin de referencia interna externamente se recomienda conectar un condensador de 470nF del pin VREF al pin AVSS. 1.1.12.4. Apagado automtico El ADC est diseado para aplicaciones de bajo consumo. Cuando el SD16_A no est convirtiendo activamente, se desactiva automticamente y reactiva automticamente cuando empieza la conversin. La referencia no se desactiva automticamente, pero se puede desactivar ajustando el bit SD16REFON = 0. Cuando estn desactivados tanto el SD16_A como la tensin de referencia, no se consume energa. 1.1.12.5. Seleccin del par de entrada analgica El mdulo SD16_A puede convertir hasta 8 pares de entrada diferencial multiplexado en el PGA. Cuatro pares de entrada analgica (A0-A4) estn disponibles externamente en el dispositivo. Tambin est disponible un divisor resistivo para medir la tensin de suministro utilizando el multiplexor de entrada A5. Un sensor de temperatura interno est disponible utilizando el multiplexor de entrada A6. La entrada A7 est cortocircuitada entre el + y el y se puede utilizar para calibrar el offset de la fase de entrada del SD16_A.

Ajustando la entrada analgica La entrada analgica de cada canal se configura con el registro SD16INCTLx. Estos ajustes se pueden configurar independientemente para cada canal. Los bits SD16INCHx seleccionan uno de los pares de entrada del multiplexor analgico. La ganancia para cada PGA se selecciona con los bits SD16GAINx. Estn disponibles un total de 6 ajustes de ganancia. Cualquier modificacin que se haga en los bits SD16INCHx o SD16GAINx durante la conversin tendr efecto en el siguiente paso de la conversin decimal del filtro digital. Despus de la modificacin de estos bits, las prximas tres conversiones pueden ser invlidas, debido a que el tiempo de estabilizacin del filtro digital. Esto se puede llevar a cabo automticamente con los bits SD16INTDLYx. Cuando SD16INTDLYx = 00h, la llamada a la interrupcin de la conversin no empezar hasta la cuarta conversin despus de una condicin de inicio. 1.1.12.6. Caractersticas de la entrada analgica Este mdulo convertidor AD utiliza una fase de entrada de capacidad conmutada que aparece como una impedancia de la circuitera externa, tal como se muestra en la figura 2.35.

V S- = Fuente de tensin externa negativa V S+ = Fuente de tensin externa positiva RS = Fuente de resistencia externa CS = Capacidad de muestreo

Figura Error! No hay texto con el estilo especificado en el documento..35 Circuito equivalente de la entrada analgica

Cuando se utiliza los buffers, RS no afecta a la frecuencia de muestreo fS. De cualquier modo cuando los buffers no se utilizan o no estn presentes en el dispositivo, la mxima frecuencia del modulador fM se debe calcular desde el mnimo tiempo de estabilizacin tSettling del circuito de muestreo dado por:

Donde:

Con

haciendo referencia a

. CS vara con el ajuste de ganancia como

se muestra en la tabla 2.23.


Ganancia PGA 1 2, 4 8 16, 32 Capacidad de muestreo CS 1.25-pF 2.5-pF 5-pF 10-pF

Tabla Error! No hay texto con el estilo especificado en el documento..23 Capacidad de muestreo

1.1.12.7. Filtro digital El filtro digital procesa el muestreo de datos de 1-bit desde el modulador utilizando un filtro peine SINC3. La funcin de transferencia en el Dominio z se describe de la siguiente manera:

Y en el Dominio de la frecuencia:

Donde la tasa de sobremuestreo, OSR, es la proporcin entre la frecuencia del modulador fM y la frecuencia de muestreo f S. La figura 2.36 muestra la respuesta en frecuencia del filtro en cuestin para una OSR de 32. El primer corte del filtro se encuentra en fS = fM/OSR. La frecuencia de corte se puede ajustar cambiando la frecuencia del modulador, fM , utilizando los bits SD16SSELx y SD16DIVx, y la tasa de sobremuestreo utilizando los bits SD16OSRx y SD16XOSR.

Figura Error! No hay texto con el estilo especificado en el documento..36 Respuesta en frecuencia del filtro peine

El filtro digital para cada canal habilitado ADC completa la conversin decimal del muestreo digital de bits y los resultados de salida de la nueva conversin para el registro correspondiente SD16MEMx en la frecuencia de muestreo fS . Salida del filtro digital El nmero de bits de salida del filtro digital depende de la tasa de sobremuestreo y est comprendido entre 15 y 30 bits. 1.1.12.8. Registro de memoria de conversin, SD16MEMx Hay un registro SD16MEMx asociado con cada canal SD16_A. Los resultados de la conversin se mueven al correspondiente registro SD16MEMx con cada paso de la conversin decimal del filtro digital. El Bit SD16IFG se pone a 1 cuando se escriben nuevos datos en el registro SD16MEMx. Y estos datos se borran automticamente del bit SD16IFG cuando la CPU los ha ledo o si ha sido borrado por el software. Formato de los datos de salida El formato de los datos de salida es configurable en complemento de a dos, en offset binario o en modo unipolar, tal como muestra la tabla 2.24. El formato de datos se selecciona con los bits SD16DF y SD16UNI.
SD16UNI SD16DF Format Bipolar Offset Binary Bipolar Twos Complement Analog Input +FSR ZERO FSR +FSR ZERO FSR SD16MEMx FFFF 8000 0000 7FFF 0000 8000 Digital Filter Output (OSR = 256) FFFFFF 800000 000000 7FFFFF 000000 800000
Comentario [M2]: Completar

Unipolar

+FSR ZERO FSR

FFFF 0000 0000

FFFFFF 800000 000000

Tabla Error! No hay texto con el estilo especificado en el documento..24 Formato de los datos de salida

1.1.12.9. Modos de conversin El mdulo SD16_A se puede configurar en cuatro modos de funcionamiento, listados en la tabla 2.24 y detallados a continuacin. Por cada canal,los bits SD16SNGL y SD16GRP seleccionan el modo de funcionamiento.
SD16SNGL 1 0 1 0 SD16GRP 0 0 1 1 Modo Canal simple, conversin simple Canal simple, Conversin continua Grupo de canales, Coversin simple Grupo de canales, Conversin continua Funcionamiento Se convierte un canal una vez Se convierte continuamente un canal Se convierten una vez un grupo de canales Se convierten continuamente un grupo de canales

Cuando SD16GRP = 0 el canal se agrupa y es el canal maestro si en el canal anterior SD16GRP = 1.

Tabla Error! No hay texto con el estilo especificado en el documento..25 Modos de conversin

Canal simple, conversin simple Ajustando el bit SD16SC de un canal se inicia la conversin en dicho canal cuando SD16SNGL = 1 y cuando ste canal no est agrupado con otros. El bit SD16SC se pondr a 0 automticamente despus de la conversin. Si se pone a 0 el bit SD16SC antes de que se complete la conversin, inmediatamente se para el proceso de conversin del canal seleccionado, el canal y el filtro digital se apagan. El valor del bit SD16MEMx puede cambiar cuando SD16SC = 0. Se recomienda leer los datos de la conversin del registro SD16MEMx antes de poner a 0 SD16SC para evitar una lectura de resultados errnea. Canal simple, conversin continua Cuando el bit SD16SNGL = 0 se selecciona el modo de conversin continua. La conversin del canal seleccionado empezar cuando el bit SD16SC = 1 y contina hasta que ste bit se ponga a 0 mediante el software mientras que el canal no est agrupado con otro Si se pone a 0 el bit SD16SC antes de que se complete la conversin, inmediatamente se para el proceso de conversin del canal seleccionado, el canal y el filtro digital se apagan. El valor del bit SD16MEMx puede cambiar cuando SD16SC = 0. Se recomienda leer los datos de la conversin del registro SD16MEMx antes de poner a 0 SD16SC para evitar una lectura de resultados errnea. En la figura 2.37 tenemos un ejemplo de funcionamiento de canal simple para los modos de conversin simple y continua.

Figura Error! No hay texto con el estilo especificado en el documento. .37 Ejemplo de conversin de canal simple

Grupo de canales, conversin simple Canales consecutivos del SD16_A se pueden agrupar juntos con el bit SD16GP para sincronizar la conversin. Poniendo a 1 el bit SD16GRP para un canal, se agrupa con el canal siguiente en el mdulo. Por ejemplo, en el canal 0, se pone SD16GRP = 1 y quedaran agrupados el canal 0 y el canal 1. En ste caso, el canal 1 sera el canal maestro, habilitando y deshabilitando la conversin de todos los canales del grupo con el bit SD16SC del canal maestro. El bit SD16GRP del canal maestro siempre es 0. El bit SD16GP del ltimo canal del mdulo SD16_A no tiene funcin por lo que siempre es 0. Cuando el bit SD16SNGL = 1 en el canal de un grupo, est seleccionado el modo de conversin simple. Se proceder a la conversin simple de ese canal en sincronizacin con el canal maestro cuando el bit SD16SC de ste est a 1. El bit SD16SC de los canales de un grupo se pone automticamente a 0 o a 1 ajustando el bit SD16SC del canal maestro. SD16SC de cada canal se puede poner a 0 independientemente por software. Poniendo a 0 SD16SC para el canal maestro antes de completar la conversin hace que el proceso de conversin en todos los canales del grupo se detenga, apagando todos los canales y sus correspondientes filtros digitales. Los valores en el registro SD16MEMx pueden cambiar cuando SD16SC se pone a 0. Se recomienda leer los datos de la conversin de SD16MEMx antes de poner a 0 SD16SC para evitar una lectura de resultados errnea. Grupo de canales, conversin continua

Cuando SD16SNGL = 0 para cada canal en un grupo, est seleccionado el modo de conversin continua. Se proceder a la conversin continua de ese canal en sincronizacin con el canal maestro cuando el bit SD16SC de ste est a 1. El bit SD16SC de los canales de un grupo se pone automticamente a 0 o a 1 ajustando el bit SD16SC del canal maestro. SD16SC de cada canal se puede poner a 0 independientemente por software. Cuando se pone a 1 el bit SD16SC del canal de un grupo por software independientemente del maestro, la conversin de ese canal se sincronizar automticamente con el canal maestro. Esto asegura que las conversiones de canales agrupados se sincronicen siempre al maestro. Poniendo a 0 SD16SC para el canal maestro antes de completar la conversin hace que el proceso de conversin en todos los canales del grupo se detenga, apagando todos los canales y sus correspondientes filtros digitales. Los valores en el registro SD16MEMx pueden cambiar cuando SD16SC se pone a 0. Se recomienda leer los datos de la conversin de SD16MEMx antes de poner a 0 SD16SC para evitar una lectura de resultados errnea. En la figura 2.38 se puede visualizar un ejemplo del funcionamiento de un grupo de tres canales del mdulo SD16_A. El canal 0 se configura en el modo de conversin simple, SD16SNGL = 1. Los canales 1 y 2 se configuran en el modo de conversin continua, SD16SNGL = 0. El canal 2 es el ltimo canal del grupo, por lo tanto es el canal maestro.

Figura Error! No hay texto con el estilo especificado en el documento. .38 Ejemplo de conversin de grupo de canales

1.1.12.10. Registros SD16_A En la siguiente tabla se listan todos los registros asociados al convertidor AD de 16-bit.

Tabla Error! No hay texto con el estilo especificado en el documento..26 Registros SD16_A

Registro de control SD16_A, SD16CTL

Reserved SD16XDIVx

SD16LP

SD16DIVx

SD16SSELx

SD16 VMIDON

Bits Reservado. 15-12 Bits Divisor de reloj SD16_A. 11-9 000 /1 001 /3 010 /16 011 /48 1xx Reservado Bit-8 Modo de bajo consumo. ste bit selecciona un modo de consumo reducido a velocidad reducida. 0 Modo de bajo consumo deshabilitado 1 Modo de bajo consumo habilitado. La mxima frecuencia de reloj para el SD16_A se reduce Bits Divisor de reloj SD16_A. 7-6 00 /1 01 /2 10 /4 11 /8 Bits Seleccin de la fuente de reloj del SD16_A. 5-4 00 MCLK 01 SMCLK 10 ACLK 11 ACLK externo Bit-3 VMID buffer on. 0 Off 1 On Bit-2 Generador de referencia On. 0 Referencia off 1 Referencia on Bit-1 Habilitacin de interrupcin de desbordamiento del SD16_A. El bit GIE debe estar a 1 para habilitar la interrupcin. 0 Interrupcin de desbordamiento deshabilitada 1 Interrupcin de desbordamiento habilitada Bit-0 Reservado.

SD16 REFON

SD16OVIE

Reserved

Registro de control del canal x, SD16CCTLx

Reserved SD16BUFx

Bit-15 Reservado. Bits 14-13 Modo de buffer de entrada de alta impedancia. 00 01 10 11 Buffer deshabilitado intensidad/velocidad baja intensidad/velocidad media intensidad/velocidad alta

SD16UNI

Bit-12 Seleccin del modo unipolar. 0 Modo bipolar 1 Modo unipolar Bit-11 Proporcin de sobremuestreo extendida. ste bit junto a los bits SD16OSrx seleccionan la proporcin de sobremuestreo. Bit-10 Seleccin del modo de conversin simple. 0 Modo de conversin continua 1 Modo de conversin simple Bits Proporcin de sobremuestreo 9-8 Cuando SD16XOSR = 0 256 00 128 01 64 10 32 11 Cuando SD16XOSR = 1 512 00 1024 01 Reservado 10 Reservado 11 Bit-7 Conmutador LSB. Cuando est a 1, conmuta el bit SD16LSBACC cada vez que se lee el registro SD16MEMx. 0 SD16LSBACC no se conmuta con la lectura de 1 SD16MEMx SD16LSBACC se conmuta con la lectura de SD16MEMx Bit-6 Acceso LSB. ste bit permite el acceso a los ltimos o primeros 16-bits del resultado de la conversin SD16_A. 0 SD16MEMx contiene los 16-bits ms significativos de la conversin SD16MEMx contiene los 16-bits menos significativos de 1 la conversin Bit-5 Flag de interrupcin de desbordamiento SD16_A.

SD16XOSR SD16SNGL

SD16OSRx

SD16 LSBTOG

SD16 LSBACC

SD16OVIFG

SD16DF

Bit-4

SD16IE

Bit-3

SD16IFG

Bit-2

SD16SC

Bit-1

Reserved

Bit-0

0 No hay interrupcin de desbordamiento pendiente 1 Interrupcin de desbordamiento pendiente Formato de datos de SD16_A. 0 Offset binario 1 Complemento de a 2 Habilitacin de interrupcin de SD16_A. 0 Deshabilitada 1 Habilitada Flag de interrupcin de SD16_A. Se pone a 1 cuando hay disponibles nuevos resultados de conversin. SD16IFG se reinicia automticamente cuando el registro correspondiente SD16MEMx es ledo. 0 No hay interrupcin pendiente 1 Interrupcin pendiente Inicio de la conversin de SD16_A. 0 La conversin no se inicia 1 Se inicia la conversin Reserved

Registro de control de entrada de canal x, SD16INCTLx

SD16INTDLYx

Bits 7-6

SD16GAINx

Bits 5-3

Generacin de retraso de interrupcin despus del inicio de la conversin. Estos bits seleccionan el retraso para la primera interrupcin despus del inicio de la conversin. 00 La cuarta muestra origina la interrupcin 01 La tercera muestra origina la interrupcin 10 La segunda muestra origina la interrupcin 11 La primera muestra origina la interrupcin Ganancia de preamplificacin de SD16_A 000 x1 001 x2 010 x4 011 x8 100 x16 101 x32 110 Reservado 111 Reservado Canal de par de entrada diferencial SD16_A 000 001 010 011 100 101 110 111 A0 A1 A2 A3 Reservado (AVCC AVSS) /11 Sensor de temperatura Short for PGA offset measurement

SD16INCHx

Bits 2-0

Registro de la memoria de conversin del canal x SD16_A, SD16MEMx

Conversion Results

Bits 15-0

Resultados de la conversin. El registro SD16MEMx mantiene los primeros 16-bit o los ltimos de la salida del filtro digital, dependiendo del bit SD16LSBACC.

Registro del vector de interrupcin SD16_A, SD16IV

SD16IVxs

Bits 15-0

Valor del vector de interrupcin SD16_A.

1.1.13. Modulo de emulacin embebida


El mdulo de emulacin embebida (EEM) se controla y se accede a l a travs de la interfaz JTAG. Para ste mdulo estn disponibles las siguientes caractersticas: Ejecucin de cdigo no intrusivo con control de punto interrupcin en tiempo real. Funcionalidad de escaln simple, entrada de escaln y salto de escaln. Total aceptacin de todos los modos de bajo consumo. Aceptacin de todas las frecuencias del sistema y todas las fuentes de reloj. Hasta ocho disparadores/puntos de interrupcin hardware en el bus de direccin de memoria (MAB) o en el bus de memoria de datos (MDB). Hasta dos disparadores/puntos de interrupcin hardware en los accesos de escritura al registro de la CPU. Los disparadores MAB, MDB, y de los accesos al registro de la CPU se pueden combinar para formar hasta ocho disparadores complejos. Secuencia de disparo. Almacenamiento del bus interno y la seal de control utilizando un buffer de rastreo integrado. Control de reloj para los temporizadores, comunicacin de los perifricos.

Comentario [M3]: Single step, step into, and step over functionality

Figura Error! No hay texto con el estilo especificado en el documento..39 Diagrama de bloques del EEM

1.1.13.1. Disparadores o triggers El control de eventos en el EEM del sistema del MSP430F4794 consiste en triggers, los cuales son seales internas indicando que un determinado evento ha ocurrido. Estos triggers deben usarse como puntos de interrupcin simples, pero tambin es posible combinar dos o ms triggers para permitir la deteccin de eventos complejos y activar varias reacciones adems de detener la CPU. Los triggers se pueden usar para controlar los bloques funcionales del EEM que son los siguientes: Puntos de interrupcin (Parada de la CPU) Almacenamiento de estado Secuenciador Hay dos tipos de triggers, estn los triggers de memoria y los triggers de escritura en el registro de la CPU. Cada bloque de trigger de memoria se puede seleccionar independientemente para comparar o el MAB o el MDB con un valor dado. Dependiendo del mdulo EEM implementado la comparacin puede ser =, , o . La comparacin tambin se puede limitar hasta un nmero determinado de bits con la utilizacin de una mscara. La mscara o es de bit a bit o es de byte a byte, dependiendo del dispositivo. Adems para seleccionar el bus y la comparacin, se puede seleccionar la condicin bajo la cual se activa el trigger. Las condiciones incluyen acceso de lectura, acceso de escritura, acceso DMA, y recopilacin de instrucciones. Cada bloque de trigger de escritura en el registro de la CPU se puede seleccionar independientemente para comparar lo que se ha escrito en l con un valor dado. El registro observado se puede seleccionar para cada trigger independientemente. LA comparacin puede ser =, , o . Como sucede en el bloque de trigger de memoria la comparacin tambin se puede limitar hasta un nmero determinado de bits con la utilizacin de una mscara. Ambos tipos de trigger se pueden combinar para formar triggers ms complejos. Por ejemplo, un trigger complejo puede indicar cuando un valor en concreto se ha escrito en una direccin especificada por el usuario.

1.1.13.2. Secuenciador del trigger El secuenciador de disparo permite la definicin de una determinada secuencia de seales de disparo antes de que se acepte un evento para una pausa o un evento de almacenamiento de estado. Dentro de la secuencia de disparo, es posible utilizar las siguientes caractersticas: Cuatro estados (Estado 0 al estado 3). Dos transiciones por estado hasta otro estado. Reinicio del trigger, que reinicia el secuenciador al estado 0.

El secuenciador de estado siempre se inicia en el estado 0 y se debe ejecutar hasta el estado 3 para generar una accin. Si el estado 1 y el estado 2 no son necesarios se pueden eludir. 1.1.13.3. Almacenamiento de estado (buffer de seguimiento interno) La funcin de almacenamiento de estado utiliza un buffer integrado para almacenar la informacin de la seal de control de MAB, MDB, y CPU de manera no intrusiva. El buffer puede retener hasta ocho entradas. Su flexible configuracin permite al usuario grabar la informacin de inters. 1.1.13.4. Control de reloj El EEM proporciona un dispositivo dependiente del control de reloj flexible. Esto es til en aplicaciones dnde es necesario un reloj en funcionamiento para los perifricos antes de que la CPU se pare. El control de reloj es flexible y compatible con los mdulos que necesitan un reloj en funcionamiento y los mdulos que se pueden parar cuando la CPU se para a causa de un punto de interrupcin.

También podría gustarte