Apuntes de La Materia de Microcontroladores 1 (1)

Apuntes de microcontroladores msp430 Ortega. ​ ​ ​ ​ M. en C. Enrique López INSTITUTO POLITÉCNICO NACIONAL ESCUELA

Views 73 Downloads 0 File size 337KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Apuntes de microcontroladores msp430 Ortega.









M. en C. Enrique López

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA ZACATENCO.

Apuntes de la materia de microcontroladores Realizado por M. en C. Enrique López Ortega

Objetivo general de la materia: El alumno diseñará y construirá diferentes circuitos electrónicos usando microcontroladores modernos incluyendo su programación con lenguaje C ++. Objetivo general de los apuntes: Servir como una base bibliográfica, en la cual el alumno pueda consultar los temas que se cubren durante el semestre de la materia de microcontroladores específicamente con el microcontrolador msp430. CONTENIDO SINTÉTICO: I.- Conceptos y Características Generales de los Microcontroladores. II.- Plataforma de Programación en C ++. III.- Estructura de Programación. IV.- Periféricos Analógicos. V.- Periféricos Digitales. VI.- Aplicación Final. ​

Unidad 1 Conceptos y Características generales de los microcontroladores Tema 1.1 El microcontrolador Un microcontrolador es una micro computadora construida en un circuito integrado, este contiene un microprocesador (CPU), memoria RAM, memoria ROM, y puertos de entrada y salida como mínimo; generalmente también cuentan con temporizadores, convertidor analógico/digital, puertos serie entre lo más común. Actualmente existen en el mercado variedad de Microcontroladores una primera clasificación puede ser referida al tamaño de sus registros internos existiendo los de 8,16 y 32 bits. El microcontrolador PIC de microchip es de 8 bits mientras el msp430 de Texas Instruments es de 16 bits. El tamaño de los registros de un microcontrolador influye en su capacidad de procesamiento por

ejemplo un microcontrolador de 16 bits puede realizar una suma de 32 bits con tan solo 2 instrucciones mientras que para uno de 8 puede requerirse 4 o más. Cabe señalar que sin importar el microcontrolador o el fabricante cualquier microcontrolador puede utilizarse para resolver un problema de diseño electrónico, por supuesto que siempre existirán comparativas de desempeño. Sin embargo a la hora de seleccionar un microcontrolador para un problema específico han de tomarse en cuenta parámetros como tamaño físico, recursos internos, costo, consumo de energía, facilidad de programación entre otras cosas. Tema 1.1.1 diferencias entre microprocesador y microcontrolador. Un microprocesador en un circuito integrado que realiza operaciones aritméticas, lógicas y de control y requiere para funcionar de otros elementos tales como memorias, puertos de entrada y salida etc. No es un sistema completo; Para formar una computadora le hacen falta los elementos antes mencionados. Un microcontrolador contiene un microprocesador, memorias, puertos de entrada y salida, es decir se trata de una micro computadora funcional en un solo circuito integrado, es un sistema completo, aunque bastante limitado en cuanto a recursos comparado con un sistema basado en microprocesador. Los microprocesadores encuentran su campo de acción cuando se requiere gran procesamiento de datos, es decir en la fabricación de computadoras de escritorio, laptops y tabletas electrónicas. Los Microcontroladores tienen mucha ventaja cuando se habla de realizar sistemas electrónicos tales como equipos, instrumentos de medición, sistemas de control y todo sistema que contenga electrónica y no requiera de gran procesamiento de información. Ejemplo línea blanca, equipos médicos, de comunicaciones, control industrial etc. Cabe mencionar que frecuentemente se encuentran en estrecha comunicación los micro controladores con computadoras de escritorio. Es decir sistemas microcontrolador- computador- red.

Tema 1.2 Arquitectura interna. Al referirnos a la arquitectura interna de un microcontrolador nos referimos a los recursos que el chip contiene incluyendo por supuesto al CPU. Estos recursos se pueden encontrar en las hojas de datos del fabricante del microcontrolador, entre los datos más importantes se puede encontrar el tamaño de palabra de la CPU, la cantidad de memoria RAM, ROM o su derivado Flash, EEPROM, número de líneas de Entrada/ Salida, si contiene temporizadores y de qué tamaño son, si contiene convertidor A/D, puertos de comunicación serie asíncrona o sincronía etc. Esto nos permite saber si el microcontrolador servirá para el propósito que se requiere en un momento dado.

Figura 1.2.1 Arquitectura interna del microcontrolador msp430G2553 Más adelante presentamos la arquitectura interna del msp430G2553 de Texas Instruments

1.3 Organización de la memoria Cuando se programa un microcontrolador en lenguaje de alto nivel como lo es el C no es necesario conocer la organización de la memoria es decir el tamaño y localidades que ocupa cuando se habla de memoria se habla tanto de RAM como de ROM, porque generalmente basta con establecer el modelo del microcontrolador dentro del ambiente de programación. En cambio si el microcontrolador ha de utilizar lenguaje ensamblador es obligatorio saber cuánta memoria se tiene, donde está localizada ya que por lo general el ambiente de programación requiere de la localidad donde se ha de guardar el programa y esta localidad debe de ser ROM, por otro lado cuando se trabaja con memoria RAM ha de hacerse referencia a direcciones reales. la organización de la memoria depende del modelo del microcontrolador aun siendo del mismo fabricante deberá

referirse a las hojas de datos del microcontrolador. A continuación se presenta la organización de la memoria del msp430G2553. Figura 1.3.1 Organización de la memoria interna los Microcontroladores msp430G2x3.

1.3.1Modelo de programación (Arquitectura interna de la CPU) Cuando se programa una computadora o un microcontrolador en un lenguaje de alto nivel como lenguaje C por lo general no es necesario conocer qué registros tiene el microprocesador, sin embargo esto es indispensable para alguien que pretenda programar en lenguaje ensamblador, la programación en ensamblador podría resultar ventajosa en muchas situaciones porque los códigos programados en este suelen ser hasta 6 veces más compactos y por tanto más eficientes que sus equivalentes en otros lenguajes de alto nivel. A continuación se muestra el modelo de programación del msp430G2553. Como se observa en la figura 1.3.1.1 el CPU del msp430G2553 todos los registros son de 16 bits.

Figura 1.3.1.1 Modelo de programación del msp430G2553. Los primeros 4 registros son de control del CPU y los 12 restantes son registros de propósito general equivalente a registros acumuladores o registros de trabajo. Una cualidad importante es que todas las instrucciones trabajan de manera indistinta con cualquier registro. El registro contador de programa (PC) es el registro contador de programa su objetivo es apuntar a la instrucción siguiente con respecto a la que se está ejecutando en un instante dado, ejemplo si se está ejecutando la primera instrucción el PC apunta a la instrucción 2. Este registro una vez inicializado procede ha trabajar de forma automática cambiando su contenido tras cada instrucción que se ejecuta. El contenido de este registro representa la dirección de memoria donde comienza una instrucción. Este registro esta presenté en cualquier CPU sin importar fabricante o modelo. Puesto que es fundamental para estos sistemas. Dependiendo del microcontrolador o microprocesador será el nombre que se le dé a este registro; el tamaño de este registro indica cuanta memoria puede ser direccionada (accesada). Por ejemplo para un registro de 16 bits se tendrá un tamaño de memoria de 65536 direcciones es decir 2 elevado a la 16.

Registro Apuntador de Pila (Stack Pointer) Este registro al igual que el PC apunta a una dirección de memoria, dicha dirección es la constante guardada en el propio registro. Así sí un registro SP contiene la constante 100, entonces estará apuntando a la dirección 100 de memoria. Este registro debe de ser inicializado con una dirección válida de RAM antes de que se utilice alguna Subrutina o alguna interrupción; Puesto que estos mecanismos utilizan la pila, el registro apuntador de pila define en donde han de guardarse o de dónde han de obtenerse los registros que hacen uso de la pila. Si este registro estuviese inicializado en un lugar que no fuese RAM, entonces el funcionamiento de la CPU se vuelve fuera de control. Una vez inicializado en una dirección apropiada, este registro no requiere ser manipulado por el programador, porque trabaja de forma automática. En el caso del msp430 este registro apuntador es de 16 bits, por tanto es capaz de apuntar a cualquier dirección de memoria comprendida entre 0 y FFFFH.

Registro de status El registro de estatus o registro de banderas como también se le conoce contiene algunos bits que informan el estado actual del resultado después de cada instrucción ejecutada, por ejemplo existe una bandera que indica sí el resultado es cero, otra bandera que indica sí el resultado es un número negativo, otra bandera que indica la ocurrencia del acarreo final y otra más que indica la ocurrencia del sobreflujo. Estos bits están presentes en cualquier CPU (microprocesador). Por supuesto en los Microcontroladores. Cuando una situación se produce, la bandera correspondiente se pone en valor 1 en caso contrario la bandera queda finalmente con valor 0. En el caso del msp430 las banderas sé refieren con la siguiente nomenclatura. C= (carry ). Acarreo final. Z= ( zero ) Cero. V= (overflow) Sobreflujo. N= (negative) Negativo. Cabe señalar que frecuentemente este registro utiliza algunos bits para controlar el permiso de interrupciones mediante un bit de habilitación, pueden existir otros bits para el control de energía del CPU. a continuación se muestra el registro de banderas (R2) del msp430.

Figura 1.3.1.2 Registro de status (banderas) del msp430. GIE = 1 Permiso del interrupciones habilitado. CPUOFF= 1 CPU Apagada OSCOFF= 1 Oscilador detenido. SGO Y SG1. En sus posibles combinaciones binarias controlan el consumo de energía del microcontrolador, restringiendo algunos recursos como el uso de relojes. R3. Generador de constantes *solo para msp430. Este registro hace posible una compactación de código en el compilador. El programador no puede hacer uso de este registro. La compactación se logra porque este registro completa algunas instrucciones generando constantes que requerirían mayor uso de localidades ROM. R4 al R15 Solo msp430. Estos registros pueden utilizarse de forma genérica para realizar operaciones aritméticas, lógicas , como apuntadores a memoria, contadores, banderas, variables, RAM cache etc. Cualquier registro funciona con cualquier instrucción. 1.3.2 Grupo de instrucciones Cuando se programa en lenguaje ensamblador, se requiere conocer a fondo el set de instrucciones y sus modos de direccionamiento (distintas formas de usar cada instrucción), a continuación se muestra el set de instrucciones del msp430 aunque no se explican porque el curso está enfocado en lenguaje C, el cual tiene instrucciones propias.

Figura 1.3.2.1 grupo de instrucciones del msp430.

La familia de microcontroladores msp430 cuenta con un set de 51 instrucciones, mayoría de ellas se ejecuta en un solo ciclo de máquina, la excepción son las instrucciones de brinco condicionales, muchas de las instrucciones pueden ejecutarse en formatos de 8 o 16 bits. Otra característica muy ventajosa es que todas las instrucciones funcionan de forma indistinta con todos los registros del CPU. Al tener la CPU un bus de direcciones de 16 bits y al mismo tiempo sus registros internos del mismo tamaño, estos últimos, pueden servir como registros apuntadores a memoria, lo mismo que sirven como acumuladores. Una característica interesante del set de instrucciones de esta familia de Microcontroladores es que cuenta con instrucciones para suma en BCD, es decir permite sumar directamente 2 operandos en BCD y obtener un resultado no en binario natural sino también en BCD, esto es ventajoso porque se puede tener resultados listos para desplegar directamente sin la necesidad de una conversión previa de binario a decimal, esto no ópera con operandos en binario natural. Otra característica importante es que la misma memoria puede utilizarse como acumuladores, es decir realizar directamente alguna operación aritmética y lógica, sin tener que utilizar los registros internos del CPU.

1.3.3 Software de desarrollo Para programar los Microcontroladores msp430 existen varios ambientes de programación, uno de ellos se llama Code Composer Studio de Texas Instruments, con este software se puede programar en lenguaje ensamblador o lenguaje C, otro ambiente de programación para este microcontrolador es conocido como IAR, con respecto al primero requiere una computadora con menos prestaciones de memoria, además maneja un ambiente bastante amigable, en este apartado se hablará específicamente del IAR. Este software se puede descargar de manera gratuita en la dirección www.iar.com. Terceras partes han desarrollado ambientes para la programación y depuración de programas de los microcontroladores de Texas Instruments; existe un software llamado IAR creado por IAR SYSTEMS, que se puede bajar gratuitamente de la página www.iar.com o de la página de Texas Instruments y que una vez instado permite la creación, depuración y programación de la familia MSP430 en conjunto con un programador de Texas como el MSP-FET430UIF. Cabe señalar que estos microcontroladores tienen ínter construida circuitería para poder observar el estado del microcontrolador ver y modificar registros, memoria etc. y que además se puede correr a pasos un programa de servicio de interrupción activo, cosa que hasta hace poco no era posible con los microcontroladores de otros fabricantes. 9