• No se han encontrado resultados

Diseño avanzado de aplicaciones con PICs

N/A
N/A
Protected

Academic year: 2020

Share "Diseño avanzado de aplicaciones con PICs"

Copied!
90
0
0

Texto completo

(1)Facultad de Ingeniería Eléctrica. Departamento de Telecomunicaciones y Electrónica. TRABAJO DE DIPLOMA. Diseño Avanzado de Aplicaciones con PICs.. Autor: Arnaldo Moreno Montes de Oca. Tutor: MSc. Carlos Alberto Bazán Prieto.. Santa Clara 2008 "Año 50 de la Revolución".

(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. TRABAJO DE DIPLOMA Diseño avanzado de aplicaciones con PICs Autor: Arnaldo Moreno Montes de Oca. E-mail: [email protected]. Tutor: Msc. Carlos Alberto Bazán Prieto. Profesor, Dpto de Electrónica y Telecomunicaciones Facultad de Ing. Eléctrica. UCLV. E-mail: [email protected]. Santa Clara 2008 "Año 50 de la Revolución".

(3) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del Tutor. Firma del Jefe de Departamento donde se defiende el trabajo. Firma del Responsable de Información Científico-Técnica.

(4) i. PENSAMIENTO. “Si tu intención es describir la verdad, hazlo con sencillez y la elegancia déjasela al sastre.”. Albert Einstein..

(5) ii. DEDICATORIA. A mis padres y abuelos por guiarme siempre en el largo camino de la vida. A mi novia Rosy por su amor y comprensión. A mi hermana Isel por ser mi ejemplo a seguir en los estudios..

(6) iii. AGRADECIMIENTOS. Al colectivo docente de la Facultad de Ingeniería Eléctrica de la Universidad Central “Marta Abreu” de Las Villas, y en especial al tutor Carlos Bazán, a Mario Gonzales, a Migdalia Morera, y a Roberto Hiribarne por su gran ayuda docente. * * * A todos mis compañeros de estudio, y en especial los compañeros de tesis por sus múltiples ayudas y colaboraciones. * * * A mis padres, mi hermana, abuelos y demás familiares por su ayuda y apoyo en todo momento. * * * A mi novia Rosy por su amor, comprensión, ayuda y apoyo incondicional. * * * A todos los que de una forma u otra contribuyeron a la realización de este trabajo, simplemente gracias..

(7) iv. TAREA TÉCNICA. Revisión crítica de la bibliografía y análisis de temas relacionados con los Microcontroladores PIC. Estudio, descripción y selección de herramientas de software para el diseño de aplicaciones avanzadas. Definir una guía para el desarrollo de aplicaciones avanzadas en bajo y alto nivel. Elaboración de aplicaciones didácticas empleando herramientas de software para la programación del PIC y simulación del Hardware. Confección y presentación del informe.. Firma del Autor. Firma del Tutor.

(8) v. RESUMEN. En el presente trabajo se muestra un análisis de herramientas de software avanzadas, utilizadas para la programación de los microcontroladores en bajo y alto nivel, así como la simulación vinculando software y hardware. Estas herramientas son el MPLAB IDE, el compilador de C PCHW, y el Proteus. Además se define una guía con los pasos a seguir para confeccionar una aplicación. Esta guía se divide en dos partes fundamentales, el desarrollo del software y el desarrollo del hardware, dividiéndose estas partes a su vez en pasos más concretos. Finalmente se confeccionó una aplicación en lenguaje de bajo nivel y otra en lenguaje de alto nivel con lo que se ejemplificó paso a paso la guía definida. Palabras claves: Microcontroladores PICs, MPLAB IDE, PCHW, Proteus..

(9) vi. TABLA DE CONTENIDOS. PENSAMIENTO ....................................................................................................... i DEDICATORIA........................................................................................................ ii AGRADECIMIENTOS ............................................................................................. iii TAREA TÉCNICA ...................................................................................................iv RESUMEN .............................................................................................................. v INTRODUCCIÓN .................................................................................................... 1 CAPÍTULO 1. 1.1. Herramientas y Guía para el Diseño de Aplicaciones. .................. 3. Herramientas de Software para la Programación y Simulación. ................ 3. 1.1.1. MPLAB IDE. ........................................................................................ 3. 1.1.2. Compilador C PCWH. ......................................................................... 7. 1.1.3. Proteus................................................................................................ 9. 1.2. Lenguajes de Programación para Microcontroladores. ............................ 12. 1.2.1. Lenguaje de Bajo Nivel y Alto Nivel. Comparación. .......................... 13. 1.2.2. Características del Lenguaje de Ensamblador en PICs. ................... 14. 1.2.3. Características del Lenguaje C. ........................................................ 15. 1.3. Guía para el Desarrollo de Aplicaciones para Microcontroladores. ......... 17. 1.3.1. Desarrollo del Software. .................................................................... 17. 1.3.1.1. Especificación del Programa. ................................................. 18. 1.3.1.2. Diseño del Programa.............................................................. 18. 1.3.1.3. Edición y Ensamblaje. ............................................................ 18. 1.3.1.4. Pruebas Preliminares. ............................................................ 18. 1.3.2. Desarrollo del Hardware. .................................................................. 19. 1.3.2.1. Especificación del Hardware. ................................................. 19. 1.3.2.2. Diseño del Hardware. ............................................................. 19.

(10) vii. 1.4. 1.3.2.3. Construcción del Prototipo y Pruebas Preliminares. .............. 19. 1.3.2.4. Integración y Verificación. ...................................................... 20. Pasos Generales para la Construcción de una Aplicación....................... 20. 1.4.1. Plantilla de un Programa en Lenguaje Ensamblador. ....................... 21. 1.4.2. Plantilla de un Programa en Lenguaje C........................................... 22. CAPÍTULO 2. 2.1. Aplicación Desarrollada en Lenguaje de Bajo Nivel.................... 23. Cronómetro. ............................................................................................. 23. 2.1.1. Concepción de la Aplicación. ............................................................ 23. 2.1.2. Especificación del Programa. ............................................................ 23. 2.1.3. Diseño del Programa. ....................................................................... 24. 2.1.4. Edición y Ensamblaje. ....................................................................... 33. 2.1.4.1. Pasos para la Creación de un Proyecto en MPLAB IDE. ....... 33. 2.1.5. Pruebas Preliminares. ....................................................................... 38. 2.1.6. Especificación del Hardware. ............................................................ 38. 2.1.7. Diseño del Hardware. ....................................................................... 38. 2.1.7.1. Pasos para el Diseño del Hardware. ...................................... 39. 2.1.8. Construcción del Prototipo y Pruebas Preliminares. ......................... 41. 2.1.9. Integración y Verificación. ................................................................. 41. CAPÍTULO 3.. Aplicación Desarrollada en Lenguaje de Alto Nivel..................... 43. 3.1. Descripción General del Software de la Aplicación. ................................. 43. 3.2. Edición y Ensamblaje de un Programa usando PCHW............................ 44. 3.2.1. Pasos para la Creación de un Proyecto usando PCHW. .................. 44. 3.2.2. Escritura del Código Fuente.............................................................. 46. 3.2.2.1. Directivas de Preprocesador. ................................................. 46. 3.2.2.2. Definición de Constantes. ...................................................... 47. 3.2.2.3. Declaraciones de Variables Globales..................................... 48. 3.2.2.4. Prototipos de Funciones. ........................................................ 49. 3.2.2.5. Definición de Funciones de Atención a las Interrupciones. .... 50. 3.2.2.6. Función Principal. ................................................................... 51. 3.2.2.7. Definición de Funciones. ........................................................ 51. 3.2.3. Construcción del Proyecto. ............................................................... 52.

(11) viii 3.3. Descripción General del Hardware de la Aplicación. ............................... 53. 3.4. Integración y Verificación. ........................................................................ 55. CONCLUSIONES Y RECOMENDACIONES ........................................................ 57 Conclusiones. .................................................................................................... 57 Recomendaciones. ............................................................................................ 57 REFERENCIAS BIBLIOGRÁFICAS ...................................................................... 58 ANEXOS ............................................................................................................... 62 Anexo I.. Directivas de Preprocesador. ......................................................... 62. Anexo II.. Funciones Incorporadas en el PCWH. ........................................... 63. Anexo III.. Cronómetro en Funcionamiento. .................................................... 66. Anexo IV.. Código ASCII de los caracteres. .................................................... 67. Anexo V.. Alfabeto Morse. .............................................................................. 68. Anexo VI.. Código fuente del Programa Transmisor de Código Morse. .......... 68. Anexo VII. Transmisor de código Morse en pleno funcionamiento. ................. 79.

(12) INTRODUCCIÓN. 1. INTRODUCCIÓN. Los microcontroladores han significado un gran avance dentro de la evolución tecnológica debido a su versatilidad y posibilidad de integración. A medida que pasa el tiempo este gran invento de la electrónica se acerca más a nuestras vidas a una gran velocidad. Esto está dado por su difundido uso en los diferentes equipos. electrónicos,. ya. sean. estos. de. sistemas. de. comunicaciones,. electrodomésticos, instrumentación, pertenecientes a la industria informática, automovilística, o utilizados en la electromedicina. Dentro de los microcontroladores, los PIC (Peripheral Interface Controller) originados en la Universidad de Harvard para un proyecto del Departamento de Defensa están en la vanguardia gracias a su fácil uso, precio, variedad y posibilidades de trabajo con periféricos. Debido a todo esto es preciso señalar la necesidad del estudio de estos dispositivos y posteriormente lograr el diseño e implementación de aplicaciones; para lo cual existen valiosas herramientas de software las cuales han sido desarrolladas por diversas empresas. De esto se trata este trabajo, y se va más allá, ya que se crea una guía muy útil con la cual se facilita el trabajo y se permite una mayor explotación de los recursos. De lo anteriormente expuesto y teniendo en cuenta la necesidad de programar aplicaciones, surgen las siguientes interrogantes: ¿Cómo desarrollar el ensamblaje, compilación, simulación y puesta a punto de programas escritos en bajo y alto nivel utilizando herramientas de software avanzadas ?.

(13) INTRODUCCIÓN. ¿Cuales son las herramientas más apropiadas? ¿Cómo debe ser la guía a seguir para el diseño de aplicaciones con estos medios? De las interrogantes planteadas se desprenden los objetivos de este trabajo. Entre ellos tenemos: realizar un estudio de las herramientas de software existentes actualmente y determinar cuales son las más apropiadas, así como crear una guía para el diseño de aplicaciones con microcontroladores PICs, que permita facilitar y explotar al máximo las potencialidades de los mismos así como poner a punto aplicaciones. Este informe se ha estructurado en tres capítulos que tratan las siguientes temáticas: CAPITULO 1: Analiza el uso de las herramientas de software y obtiene una guía para el diseño de aplicaciones. CAPITULO 2: Ejemplifica el uso de la guía de diseño con la realización de una aplicación en lenguaje de bajo nivel. CAPITULO 3: Se enfatiza en la realización de una aplicación en lenguaje de alto nivel, explicando los elementos nuevos, referidos a la programación con el compilador de C para microcontroladores PICs.. 2.

(14) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. CAPÍTULO 1.. 3. Herramientas y Guía para el Diseño de Aplicaciones.. En este capítulo se analizan las herramientas de software más apropiadas para la programación de los microcontroladores PIC, así como para la simulación vinculando software y hardware. Además se concebirá como realizar una aplicación y cuales son los pasos que se deben seguir para hacer el trabajo más fácil y eficiente. 1.1 Herramientas de Software para la Programación y Simulación. Los microcontroladores PIC son fabricados por diversas compañías como National, Philips, Motorola y Microchip, siendo esta última la más destacada. (Vallejo, 2002) Microchip ha llegado ha desarrollar las herramientas de software más usadas a nivel mundial, en cuanto a la programación de estos microcontroladores. Además, otras compañías han desarrollado sus propias herramientas de software como son:. HI-TECH,. MikroElektronika. o. CCS. (Custom. Computer. Services. Incorporated). En cuanto a la simulación, vinculando software y hardware, Labcenter Electronics presenta la mejor opción con su software Proteus. 1.1.1 MPLAB IDE. El MPLAB IDE es un software para computadora que permite desarrollar aplicaciones para microcontroladores PIC. Es llamado Entorno de Desarrollo Integrado (IDE) debido a que presenta un solo entorno el cual funciona como un contenedor al cual se le puede integrar diferentes herramientas de otros fabricantes como los ya antes mencionados. De este modo bastará con definirle.

(15) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. un ensamblador, un compilador, un emulador o un grabador distinto a los que lleva por defecto para incorporarlo inmediatamente al entorno. (Nuñes, 2005) Los componentes incluidos en el MPLABIDE son: •. Gestor de Proyecto (Project Manager). Aporta la organización, integración y comunicación entre el IDE y las Herramientas del Lenguaje.. •. Editor (Editor). Es un editor de texto de programa que también sirve como una ventana para depurar el programa.. •. Ensamblador/ Enlazador y Herramientas del Lenguaje (Assembler/Linker and Language Tools). El ensamblador puede ser utilizado para un solo archivo o conjuntamente con el enlazador para proyectos. El enlazador es el encargado de recopilar y posicionar los elementos y códigos necesarios.. •. Depurador (Debugger). Brinda la posibilidad de establecer puntos de ruptura (breakpoints), corridas paso a paso, mostrar valores de posiciones de memoria etc. Trabaja conjuntamente con el Editor.. •. Máquinas de Ejecución (Execution Engines). Son softwares de simulación para todos los PICmicro y dsPIC. Utilizan la PC para simular las instrucciones y algunas funciones periféricas.. Otros Componentes opcionales para el MPLAB IDE son: •. Compiladores de lenguaje C. Son compiladores que permiten la programación en alto nivel. Microchip brinda los compiladores MPLAB C17, MPLAB C18, y MPLAB C30. Otros fabricantes, como HI-TECH, IAR, microEngineering Labs, CCS y Byte Craft, brindan compiladores, los cuales al igual que los de microchip, logran una completa integración al MPLAB IDE. (Microchip Technology Inc, 2005a; Microchip Technology Inc, 2005b; Microchip Technology Inc, 2005c). •. Programadores (Programmers). Son varios, PICSTART Plus, PICkit 1 y 2, PRO MATE II, MPLAB PM3 y MPLAB ICD 2. Estos le ofrecen al MPLAB IDE, control total sobre la programación de código y datos sobre el. 4.

(16) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. dispositivo seleccionado, además permiten varios modos de operación del mismo al tener la posibilidad de escribir los bits de configuración. (Microchip Technology Inc, 2004c; Microchip Technology Inc, 2006d; Microchip Technology Inc, 2001; Microchip Technology Inc, 2006b; Microchip Technology Inc, 2005d) •. Emuladores En-Circuito (In-Circuit Emulators). El MPLAB IDE brinda el MPLAB ICE 2000 y el MPLAB ICE 4000, los cuales son emuladores para todas las características de los dispositivos PICmicro MCU y dsPIC DSC. Se conectan a un puerto de entrada/salida de la computadora, permitiendo el control total de la operación del microcontrolador en una aplicación en tiempo real. (Microchip Technology Inc, 2004a; Microchip Technology Inc, 2004b). •. Depurador En-Circuito (In-Circuit Debugger). Es el MPLAB ICD 2, el cual es una alternativa económica de un emulador. Puede programar código dentro del microcontrolador seleccionado mediante software, introduciendo puntos de ruptura, corrida paso a paso, y monitoreando registros y variables internas al microcontrolador.. Todos los componentes mencionados junto al MPLAB IDE utilizan ficheros los cuales se muestran en la tabla 1.1. El principio de funcionamiento de forma general del MPLAB IDE se puede describir a través de su ciclo de desarrollo. Figura 1.1. (Microchip Technology Inc, 2006f) El ciclo de desarrollo es iterativo, debido a que raramente en la confección de una aplicación, todos los pasos, desde el diseño hasta la implementación se pueden realizar de forma intachable. Es usual que en la compilación se detecten errores de sintaxis, por lo que habrá que volver al paso de la edición. Luego de eliminados los errores de sintaxis, se buscan errores en tiempo de ejecución, lo que llevará una vez más a editar la fuente por lo que pueden aparecer nuevos errores de sintaxis.. 5.

(17) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Tabla 1.1 Extensiones de ficheros usados por el MPLAB IDE. .asm Fichero fuente en lenguaje ensamblador. .c Fichero fuente en lenguaje C. .chm Fichero de ayuda. .cod Fichero con información simbólica y código objeto. .cof Fichero que contiene código de máquina e información de depuración. .err Fichero que contiene información de depuración. .exe Fichero de programa y de los útiles. .h Fichero cabecera (include). .hex Fichero que contiene código de máquina en formato hexadecimal. .inc Fichero cabecera en lenguaje ensamblador (include). .lib Fichero de librería. .lst Fichero de lista generado por el ensamblador/compilador. .map Fichero mapa generado por el enlazador. .mcp Fichero de información del proyecto. .mcw Fichero de información del área de trabajo (workspace). .o Fichero objeto. .lkr Fichero script enlazador.. Figura 1.1. Ciclo de desarrollo en MPLAB IDE.. 6.

(18) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. 1.1.2 Compilador C PCWH. El compilador C PCWH versión 4.033 de la empresa CCS, es una de las herramientas compatible con MPLAB para la programación en lenguaje de alto nivel de la familia de microcontroladores PIC de Microchip. Este es un entorno de desarrollo integrado, que incluye los compiladores en lenguaje C, PCB (para PICs de 12 bits), PCM (para PICs de 14 bits) y PCH (para PICs de 16 bits). Se integra con el MPLAB automáticamente, usándose el ambiente del MPLAB, aunque como otra opción, también este compilador posee su propio ambiente de trabajo el cual se muestra en la figura 1.2. Figura 1.2 Ambiente de trabajo del compilador de CCS. Este compilador cuenta con diversas directivas de preprocesador, con objetivos como: inclusión de ficheros cabecera, definición de la palabra de configuración, definición de la frecuencia del oscilador, habilitación de diferentes módulos pertenecientes al microcontrolador, definición de subrutinas de atención a las interrupciones, inserción de código ensamblador, etc. Estas directivas se dividen. 7.

(19) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. 8. en ocho grupos: directivas del estándar C, calificador de función, identificadores predefinidos, RTOS (real time oparating system), especificación de dispositivo, librerías incorporadas, control de memoria, y control del compilador. En el anexo I se muestra el juego completo de directivas de preprocesador. (Custom Computer Services, Inc., 2007) Otro aspecto, es la existencia de diversas funciones incorporadas (built-in functions), En el anexo II se muestran estas funciones organizadas por categorías. El. uso. de. estas. funciones. facilita. la. programación,. haciendo. ciertos. procedimientos muy sencillos. (Custom Computer Services, Inc., 2007) Los diferentes tipos de datos básicos que usa este compilador se muestran en la tabla 1.2. Además se pueden declarar otros tipos de datos especiales, como estructuras, enumeraciones o uniones. (Custom Computer Services, Inc., 2007) Tabla 1.2 Tipos de datos del compilador PCHW. Tipos de Datos int1 int8 int16 int32 char float short int long void. Descripción número entero de 1 bit número entero de 8 bits número entero de 16 bits número entero de 32 bits define un caracter de 8 bits número de punto flotante de 32 bits número entero de 1 bit número entero de 8 bits número entero de 16 bits ningún tipo específico. Por defecto, todos los tipos de datos excepto los float, carecen de signo. Explícitamente, se puede usar el calificativo signed o unsigned, con el objetivo de asignarle o no el signo al tipo de dato. Para modificar los tamaños predefinidos se usa la directiva de preprocesador #TYPE. Un tipo especial de dato es el short o int1, el cual rompe con el estándar ANSI. Esto se hace con el objetivo de generar código eficiente para operaciones con.

(20) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. bits. Los arreglos y punteros de bits en memoria RAM no son permitidos. (Custom Computer Services, Inc., 2007) Este compilador usa una serie de ficheros, los cuales se muestran en la tabla 1.3. (Custom Computer Services, Inc., 2007) Tabla 1.3 Extensiones de ficheros usados por el PCHW. .c Fichero fuente en lenguaje C. .h Fichero cabecera (include). .pjt Fichero de información del proyecto. .lst Fichero de lista generado por el ensamblador/compilador. .sym Fichero que muestra la localización de cada registro. .sta Fichero que muestra la memoria usada y la complejidad del programa. .tre Fichero con información de cada función y las funciones que ella llama. .hex Fichero que contiene código maquina en formato hexadecimal. .cof Fichero que contiene código de máquina e información de depuración. .cod Fichero que contiene información de depuración. .rtf Fichero salida del Generador de Documentación. .rvf Fichero usado por un editor RTF dentro de un IDE para ver los .rtf. .dgr Fichero con información del diagrama de flujo. .esym Fichero con identificadores y información de comentarios. .osym Fichero con información de la lista de símbolos para un objeto. 1.1.3 Proteus. El Proteus es un software que permite el diseño y desarrollo de circuitos eléctricos con gran variedad de elementos, incluyendo microcontroladores de diversas familias. Brinda también la posibilidad de interactuar durante la simulación, donde son incluidos diversos componentes tales como pantallas LCD, LEDs, interruptores, botones, teclados matriciales, etc. Esta es una cualidad que lo hace particularmente novedoso y muy útil. El Proteus está compuesto por dos elementos fundamentales: ISIS (Schematic Capture Program) y ARES (Advanced Routing and Editing Software). Acompañan a este producto una gran cantidad de materiales complementarios tales como ayudas, tutoriales y ejemplos que facilitan su aprendizaje y utilización. (Labcenter Electronics, 2004a) Dentro del núcleo del Proteus se encuentran los siguientes recursos:. 9.

(21) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. •. ISIS. •. ARES. •. ProSPICE (Professional Mixed Mode circuit simulator).. •. PROTEUS VSM SDK, una herramienta para crear nuevos modelos de componentes electrónicos.. •. Una biblioteca de cerca de 6000 modelos de componentes electrónicos.. •. Una biblioteca de modelos interactivos incluidos interruptores, pantallas, LEDs etc.. •. Bibliotecas de modelos de microcontroladores PIC, 8051, HC11 y procesadores AVR.. •. Modelos de instrumentos virtuales como osciloscopio, terminal virtual, generador de señales, voltímetro, amperímetro, etc.. A continuación se describen brevemente el ISIS y el ARES, debido a la importancia del diseño y simulación de circuitos, así como la realización del correspondiente impreso. ISIS (Schematic Capture Program) aporta ambientes amigables y herramientas de diseño, compilación y simulación en el Proteus. Este programa es plenamente compatible con el trabajo en redes de computadoras. En la figura 1.3 se muestra la apariencia de espacio de trabajo del ISIS. Entre las principales posibilidades ofrecidas por ISIS se encuentran: •. Gráficos en pantalla, los cuales son colocados en el diseño como cualquier otro elemento, pueden ser maximizados a pantalla completa para análisis y mediciones.. •. Análisis basados en gráficos (Graph Based Análisis) tales como transiente, frecuencia, ruido, distorsión, componentes AC y DC y transformada de Fourier.. •. Soporte directo para componentes análogos en formato SPICE.. 10.

(22) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. •. Arquitectura abierta para la inserción de modelos creados en C++ u otros lenguajes. Estos pueden ser eléctricos, gráficos o combinaciones de ambos.. •. Generación de listado de componentes a usar en el PBC.. (Labcenter Electronics, 2004c).. Figura 1.3. Apariencia del espacio de trabajo del ISIS. ARES (Advanced Routing and Editing Software) forma parte del módulo del sistema Proteus para el diseño de PBC y ofrece listados de componentes basados en estos, esto es completado con un amplio arsenal de herramientas de diseño automático. Entre las principales posibilidades ofrecidas por ARES se encuentran: •. Una base de datos de alta precisión de 32 bit que aporta una resolución lineal de 10nm, y angular de 0.1° y un tamaño máximo de PBC de 10m.. •. ARES soporta 16 placas de cobre, dos pantallas de seda, cuatro placas mecánicas más la de soldadura y la de pegado de las máscaras.. •. Listado de componentes basado en la integración con el ISIS.. 11.

(23) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. •. Reportes de chequeo de reglas físicas y de conectividad.. •. Una poderosa edición de rutas incluyendo opciones de líneas curvas y auto-trazado.. •. Trazado 2D con una biblioteca de símbolos.. •. Salida a una amplia gama de impresoras y plotters. Formatos de salida .DXF, .EPS, .WMF y .BMP a teclado o archivo.. (Labcenter Electronics, 2004b). En la Figura1.4 se muestra la apariencia de espacio de trabajo del ARES. Figura 1.4. Apariencia del espacio de trabajo del ARES. 1.2 Lenguajes de Programación para Microcontroladores. Un microcontrolador por si solo, no sirve si no se dispone de un programa, un alma que lo mueva y le indique en cada momento, paso a paso lo que debe ir haciendo. Este es un conjunto de instrucciones que entiende el equipo y que es elaborado concienzudamente por un humano, el programador. (Instituto Nacional de Estadística e Informática, 2005). 12.

(24) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Una vez arrancado el microcontrolador, este irá escrutando una a una todas las instrucciones, ejecutándolas a velocidades inconmensurables para la mente humana. Los tiempos de ejecución de la mayoría de las instrucciones se miden en microsegundos. Esto da una idea de la enorme velocidad a la que puede operar, pero a pesar de ello, a veces pueden tardar minutos, e incluso horas en procesar una gran cantidad de datos. El programa debe ser cargado previamente de algún modo en la memoria del microcontrolador, donde también se pueden introducir los datos a procesar. Procesar es "ejecutar" un programa, a partir de unos datos de entrada que pueden cambiar en tiempo real, se obtienen unos datos de salida en función de los de entrada. Esta función es el resultado del programa. El lenguaje máquina es la representación del programa tal como la entiende el microcontrolador, en ceros y unos digitalmente, que al final son niveles de voltajes con los que trabaja. El lenguaje de bajo nivel (lenguaje ensamblador) es una representación alfanumérica del lenguaje máquina, lo que facilita su lectura. Cada instrucción en lenguaje ensamblador corresponde a una instrucción en código máquina (sin tener en cuenta macros ni directivas). Un programa en lenguaje ensamblador es rápido y corto, porque el programador genera el código más óptimo posible. El lenguaje de alto nivel es el lenguaje de programación que le permite al programador escribir instrucciones que parecen prácticamente como el inglés de todos los días. Dado que la PC no es capaz de reconocer estas órdenes, es necesario el uso de un intérprete que traduzca el lenguaje de alto nivel a un lenguaje de bajo nivel que el sistema pueda entender. (Colectivo de Autores, 2004) 1.2.1 Lenguaje de Bajo Nivel y Alto Nivel. Comparación. Las aplicaciones desarrolladas utilizando la programación en lenguaje de bajo nivel permiten tener una visión más cercana del lenguaje del microcontrolador, por lo que brindan la posibilidad de tener un control total sobre el microcontrolador, lo. 13.

(25) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. cual es muy útil cuando se necesita una secuencia de instrucciones determinada. Además, la ejecución de estos programas es muy rápida, y eficiente en aplicaciones en las que el tiempo es crítico. Los programas bien realizados en este lenguaje optimizan el tamaño de la memoria de programas que ocupan debido al considerable ahorro de código en comparación con el que genera un compilador de alto nivel; no obstante, con el desarrollo de las capacidades de memoria y velocidad de los microcontroladores se están empleando lenguajes de alto nivel para su programación. Al emplear un lenguaje de alto nivel se gana en comodidad, abstracción, portabilidad, legibilidad, se necesita menor tiempo de codificación y no es necesario que el programador conozca el lenguaje ensamblador, pero se pierde un poco la noción de qué es lo que está pasando dentro del microcontrolador. Finalmente, dentro de los lenguajes de alto nivel más utilizados para la programación de los microcontroladores están el BASIC, PASCAL y el C, siendo este último el más usado y difundido mundialmente. 1.2.2 Características del Lenguaje de Ensamblador en PICs. Todos los modelos de microcontroladores PIC responden a la arquitectura RISC, que significa “Computador de Juego de Instrucciones Reducido”. Esto no sólo implica que el número de instrucciones máquina que es capaz de interpretar y ejecutar sea pequeño, sino también que posee las siguientes características: •. Las instrucciones son simples y rápidas.. •. Las instrucciones son ortogonales.. •. La longitud de las instrucciones y los datos es constante.. Estas instrucciones del repertorio de los PICs, se reparten dentro de cinco grandes grupos, atendiendo al tipo de operación que desarrollan. (Bazán, 2006) •. Operaciones orientadas a manejar registros de tamaño byte.. •. Operaciones orientadas a manejar bits.. 14.

(26) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. •. Operaciones que manejan valores inmediatos.. •. Operaciones incondicionales de control del flujo del programa.. •. Operaciones de salto condicional.. 1.2.3 Características del Lenguaje C. El lenguaje C fue creado en los “Bell Telephone Laboratories” por Dennis Ritchie en 1972 cuando trabajaba, junto con Ken Thompson, en el diseño del sistema operativo UNIX. Se diseñó con el objetivo de ser un lenguaje orientado al diseño de sistemas operativos; sus características debían ser: eficiencia (o sea, rapidez en la ejecución de los programas), potencia (permite explotar a fondo las posibilidades de la máquina) y portabilidad (el mismo código puede compilarse en máquinas diferentes). Por las ventajas del lenguaje C frente a otros lenguajes de alto nivel la mayoría de los compiladores se rigen por este estándar, y algunos contienen extensiones del ANSI. C. para. solucionar. generalmente. problemas. de. direccionamiento,. relacionados con aplicaciones específicas. Entre los aspectos positivos del lenguaje C se encuentran: •. Tiene la capacidad de generar de manera rápida, comandos de bajo nivel para acceder directamente a la memoria de datos y periféricos.. •. Mecanismos para combinar datos simples de tamaño byte y word en estructuras complejas de datos que permiten accesos rápidos, y herramientas para crear funciones complejas de comandos simples de bajo nivel.. •. Se encuentra en la jerarquía de lenguajes en un nivel intermedio, ya que pretende ser de alto nivel con la versatilidad del bajo nivel.. •. También, tiene una gran potencia para el control de estructuras, operadores y librerías de funciones para llevar a cabo operaciones de alto nivel y programación estructurada.. 15.

(27) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Otras consideraciones dignas de destacar para el C en un microcontrolador son: •. Es un lenguaje de propósito general. Ha sido utilizado para el desarrollo de aplicaciones tan diferentes como: hojas de cálculos, gestores de bases de datos, compiladores, sistemas operativos, etc.. •. Combina elementos de los lenguajes de alto nivel con la funcionalidad del lenguaje ensamblador; por ejemplo, permite la manipulación de bits, bytes y direcciones (elementos básicos con los que opera el microcontrolador).. •. Es un lenguaje pequeño y versátil, tiene 32 palabras reservadas (27 por parte del estándar de Kemighan y Ritchie y 5 incorporadas por el comité de estandarización ANSI).. •. Hace el mejor uso de los limitados conjuntos de instrucciones.. •. Soporta diferentes configuraciones de ROM/RAM.. •. Servicio de las interrupciones.. •. Un alto nivel de optimización para conservar el espacio de código.. •. Control de la conmutación de registros.. •. Incluye el concepto de puntero (variable que contiene la dirección de otra variable).. •. La E/S no forma parte del lenguaje, sino que se proporciona a través de una biblioteca de funciones.. •. Tiene un conjunto completo de instrucciones de control.. •. No se trata de un lenguaje fuertemente “tipado”, lo que significa que se permite casi cualquier conversión de tipos. No es necesario que los tipos sean exactamente iguales para poder hacer conversiones, basta con que sean parecidos.. •. Tiene un amplio juego de operadores en comparación con la mayoría de lenguajes comparables, son útiles y concisos.. 16.

(28) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. 1.3 Guía para el Desarrollo de Aplicaciones para Microcontroladores. A la hora de implementar una aplicación sobre microcontroladores es de gran utilidad seguir una serie de pasos definidos previamente con un orden lógico para ir desde la concepción hasta el producto final. Este proceso lleva el nombre de Ciclo de Desarrollo y se divide en dos ramas fundamentales: el desarrollo del software y el desarrollo del hardware, esta división es tanto lógica como práctica. Dicho proceso es iterativo dentro de cada rama, además, la interacción entre las ramas puede producir iteraciones. Para cumplir con la concepción de la aplicación se especifica y se diseña el programa teniendo en cuenta superficialmente el hardware, pero al entrar en los detalles del hardware así como cuales componentes son los disponibles, el programa puede cambiar. En la Figura 1.5 se muestra el diagrama del Ciclo de Desarrollo. (The 8051 Microcontroller, 1995b). Figura 1.5 Diagrama del Ciclo de Desarrollo. 1.3.1 Desarrollo del Software. En esta etapa se llevan las ideas de la concepción original a lenguajes de programación de diferentes niveles. Durante el desarrollo del software se toman como referencia los pasos descritos a continuación.. 17.

(29) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. 1.3.1.1. Especificación del Programa.. Se especifica la función que el programa realizará. En un nivel superficial las especificaciones son desde el punto de vista de la interfaz con el usuario, aquí se definen las siguientes problemáticas: ¿Cómo el usuario va a interactuar y controlar el sistema?, ¿Cuál debe ser el efecto de cada acción realizada?, ¿Existen teclas, periféricos de audio o indicadores visuales que se emplee en el prototipo del hardware? En un nivel más bajo, se dividen las especificaciones en módulos mediante funciones de entrada y salida, de forma que permita la comunicación entre los diferentes módulos resultantes. Por último, se deben identificar cuáles actividades requieren de un tiempo crítico de ejecución, cuáles ocurrirán periódicamente o cuáles ocurrirán eventualmente, de forma tal que permita puntualizar el ordenamiento estructural del programa, la definición de funciones atendidas por interrupción y sus niveles de prioridad. 1.3.1.2. Diseño del Programa.. Se realiza la descripción del algoritmo a seguir basándose en la sucesión lógica de acciones a ejecutar. Existen dos técnicas comunes para diseñar el programa, el diagrama de flujo o seudo código. (The 8051 Microcontroller, 1995a). 1.3.1.3. Edición y Ensamblaje.. La escritura y edición del programa es un ciclo iterativo, al menos inicialmente, ya que en el ensamblaje o traducción se detectan errores de sintaxis que tienen que ser corregidos y reensamblados; por lo general este proceso se lleva a cabo en programas especializados del tipo IDE (Integrated Development Environment). Existen además variantes de trabajo en software libre. 1.3.1.4. Pruebas Preliminares.. Finalmente se realizan pruebas al programa creado empleando un Simulador. Con esto se busca la verificación funcional del programa. Se pueden probar las funciones del programa por separado y posteriormente todo el programa. 18.

(30) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. ejecutando instrucción a instrucción, introduciendo puntos de ruptura, mostrando registros internos del microcontrolador o empleando otras técnicas. 1.3.2 Desarrollo del Hardware. Todas las funciones creadas en software necesitan por lo general de un soporte material para su desempeño. Durante el desarrollo del hardware se diseñan los circuitos que acompañaran al microcontrolador mediante los pasos que se describen a continuación. 1.3.2.1. Especificación del Hardware.. Se especifican una serie elementos tales como: tipos y cantidad de memoria, mapa de memoria, dispositivos de entrada/salida y dispositivos adicionales al microcontrolador, forma y dimensiones del equipo resultante, etc. 1.3.2.2. Diseño del Hardware.. Se realiza el diseño esquemático del circuito y del circuito impreso. En la actualidad esto se realiza con la ayuda de programas CAD (Computer Aided Desing). Existen muchos programas de este tipo a nivel mundial como ORCAD, KTechlab (software libre), Proteus, etc., siendo este último el más destacado cuando se emplean microcontroladores. 1.3.2.3. Construcción del Prototipo y Pruebas Preliminares.. Lo más común es realizar el cableado en una tarjeta de pruebas o una breadboard. Se deben realizar una serie de pruebas en ausencia del programa de la aplicación, tales como: •. Chequeo visual.. •. Chequeo de continuidad.. •. Mediciones ante corriente directa.. •. Mediciones ante corriente alterna.. 19.

(31) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Es de gran utilidad realizar algunos programas de prueba para funciones por separado que permitan detectar errores para de esta forma corregirlos y optimizar el diseño. 1.3.2.4. Integración y Verificación.. Esta es la etapa más crítica, es el momento cuando el hardware recibe el software y muchos errores sutiles emergen en la ejecución en tiempo real. Se necesitan gran cantidad de recursos adicionales en esta etapa: PC, tarjeta de desarrollo para microprocesadores, fuente de alimentación, cables, conectores, equipos de medición, etc. También incluye el empleo de programas para la puesta a punto, programa monitor, sistema operativo, simuladores y emuladores. 1.4 Pasos Generales para la Construcción de una Aplicación. 1.. Ejecutar el programa compilador.. 2.. Creación de un proyecto. •. Nombre del proyecto.. •. Especificar el camino (path) de la carpeta donde se guardará.. •. Selección del tipo de microcontrolador.. Nota: El proyecto es una lista de todos los ficheros fuentes, todas las opciones de las herramientas, toda la información requerida para construir la aplicación. 3.. Creación de los ficheros fuentes en lenguaje ensamblador o en lenguaje C. •. Nombre de los ficheros.. •. Guardar los ficheros en el mismo directorio del proyecto.. 4.. Guardar los ficheros fuentes luego de escribir el código del programa.. 5.. Agregar estos ficheros fuentes al proyecto.. 6.. Guardar el proyecto con los cambios realizados.. 20.

(32) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Nota: Siempre que se agregue o se elimine algún fichero fuente contenido en el proyecto este deberá salvarse para su posterior uso. 7.. Construcción del proyecto.. 8.. Verificar la existencia de errores sintácticos, si existiesen, corregirlos y regresar al paso 6, si no continuar.. 9.. Simular el programa. •. Correr el programa para ver cómo responde.. •. Ver y modificar el contenido de los registros, memoria, variables, etc.. 10. Cargar el programa en el emulador, para hacer una simulación real con el hardware pertinente. 11. Pasar el programa (fichero .hex) al dispositivo programador para escribir el microcontrolador. 12. Montaje del hardware de la aplicación. Además se proponen plantillas para la programación tanto en lenguaje ensamblador, como en lenguaje C 1.4.1 Plantilla de un Programa en Lenguaje Ensamblador. Las plantillas varían en función del PIC que se este usando, y son brindadas por Microchip junto con la instalación del MPLAB IDE. Su forma general es: ; Directivas de preprocesador ; Definición de variables. ; Vector de reset. ; Vector de interrupciones. ; Programa principal ; Subrutinas adicionales. 21.

(33) CAPÍTULO 1. Herramientas y Guía para el Diseño de Aplicaciones.. Es común encontrar directivas de preprocesador al principio del código, como son las que definen el microprocesador, incluyen ficheros con información del mismo, o definen la palabra de configuración. No obstante existen otras directivas que se pueden encontrar en otros lugares del código. Esto ocurre de forma similar con las directivas declaradas en la plantilla para el lenguaje C. 1.4.2 Plantilla de un Programa en Lenguaje C. // Directivas de preprocesador. // Definición de constantes // Declaraciones de variables globales. Prototipos_de_funciones ( ); Definición_de_funciones_de_atención_a_las_interrupciones ( ) { // Variables locales. // Bloques. }. main ( ) {. //función principal.. // Variables locales. // Bloques. } Definición_de_funciones ( ) { // Variables locales. // Bloques. }. //Definición de los prototipos.. 22.

(34) CAPÍTULO 2.. CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Aplicación Desarrollada en Lenguaje de Bajo Nivel.. En este capítulo se describe paso a paso el proceso para crear una aplicación utilizando la programación en lenguaje ensamblador. Para ello se utiliza una aplicación creada mediante la guía diseñada en el primer capítulo, con lo cual también se ejemplifica la misma. 2.1 Cronómetro. En esta aplicación se utilizó el PIC 18F252, con el objetivo de utilizar niveles de prioridad para las interrupciones. Esta aplicación no utiliza comunicación con la PC. 2.1.1 Concepción de la Aplicación. Se desea construir un cronómetro el cual tenga la posibilidad de iniciar el conteo, detenerlo, guardar valores del conteo en memoria, mostrar dichos valores y borrarlos. 2.1.2 Especificación del Programa. La interacción del usuario con el sistema va a ser mediante cuatro teclas. INICIO: tiene dos funciones, iniciar el conteo, y una vez que se esté contando guardar valores en memoria. VER DATOS: tiene como función mostrar los valores almacenados en memoria. BORRAR DATOS: se utiliza para borrar estos valores. PARAR: tiene como función detener el conteo.. 23.

(35) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. A las dos primeras teclas se le asignó la atención mediante interrupción de baja prioridad, mientras que las dos últimas teclas se atienden mediante barrido en el lazo principal del programa. Para el conteo se utiliza el Temporizador 0, y se atiende mediante interrupción de alta prioridad, debido a que del conteo depende la precisión del cronómetro. El Temporizador 1 es atendido mediante interrupción de baja prioridad, y tiene dos funciones: •. Generar una onda cuadrada de frecuencia 1kHz, la cual se emplea para escuchar un pitido por una pequeña bocina cada vez que se presione una de las cuatro teclas.. •. Evitar el efecto de rebote.. El conteo, los datos almacenados y los mensajes informativos se muestran a través de un display. Para la atención del display se emplean varias funciones: de inicialización, de borrado, de introducción de caracteres y otras que utilizan las ya mencionadas, que se ejecutan secuencialmente, por lo que no necesita de interrupciones ni atención en lazos dentro del programa. (DatasheetArchive, 2006a; Microchip Technology Inc, 1997a) 2.1.3 Diseño del Programa. Para la representación del algoritmo se utiliza la técnica de diagrama de flujo, dividiendo la aplicación en siete diagramas, subrutina principal, subrutina llamada cuando se detecta que se presiona la tecla PARAR, subrutina llamada cuando se detecta que se presiona la tecla BORRAR DATOS, subrutina de atención a la interrupción Externa 1, la cual se produce cuando se presiona la tecla INICIO, subrutina de atención a la interrupción Externa 2, la cual se produce cuando se presiona la tecla VER DATOS, subrutina de atención a la interrupción del Temporizador 0, y subrutina de atención a la interrupción del Temporizador 1. Para facilitar el diseño del programa, se establecieron cuatro posibles estados en los que se puede encontrar el sistema. El primer estado es el de bienvenida, donde se muestra algún mensaje en el display, y el sistema esta esperando. 24.

(36) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. alguna instrucción. En el segundo estado el sistema está preparado para comenzar el conteo, y se muestra el conteo estático con todos los valores en cero en el display. En el tercer estado el sistema esta contando, por lo que se muestra el conteo cambiando constantemente en el display. En el cuarto estado se muestran los datos almacenados en memoria. En la figura 2.1 se muestra cómo el sistema cambia de estado cuando se presiona alguna tecla.. Figura 2.1 Diagrama de estados del sistema. Las principales subrutinas que conforman el software se describen a continuación: •. Subrutina principal. Aquí se encuentra el lazo principal del programa donde se chequea mediante un barrido simple, si se presionan las teclas PARAR o BORRAR DATOS, y se llama a la subrutina correspondiente. El diagrama de flujo se muestra en la figura 2.2.. •. Subrutina de atención a la tecla PARAR. En esta subrutina se inicializa y arranca el Temporizador 1 con el fin de evitar el efecto rebote y generar una onda cuadrada la cual producirá un pitido. Además se detiene el. 25.

(37) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Temporizador 0 para detener el conteo. El diagrama de flujo se muestra en la figura 2.3.. Figura 2.2 Subrutina principal.. Figura 2.3 Subrutina de atención a la tecla PARAR.. 26.

(38) CAPÍTULO 2.. •. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Subrutina de atención a la tecla BORRAR DATOS. El trabajo con el Temporizador 1 tiene el mismo objetivo de la subrutina anterior. Luego de borrar los datos, se evita que cuando el sistema esté preparado para el conteo, o en el conteo se salga de dicho estado. El diagrama de flujo se muestra en la figura 2.4.. Figura 2.4 Subrutina de atención a la tecla BORRAR DATOS. •. Subrutina de atención a la interrupción Externa 1. El trabajo con el Temporizador 1 tiene el mismo objetivo de las subrutinas anteriores. Luego según en el estado en que se encuentre el sistema, se realizarán un conjunto de acciones. En el caso de que el sistema se encuentre en el estado 2, se inicializa el conteo. En el caso en que el sistema se encuentre en el estado 3, se guarda el dato correspondiente al conteo actual si existe capacidad en memoria. Mientras que si el sistema se encuentra en alguno. 27.

(39) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. de los estados 1 o 4, se prepara el sistema para comenzar el conteo. El diagrama de flujo se muestra en la figura 2.5.. Figura 2.5 Subrutina de atención a la interrupción Externa 1. •. Subrutina de atención a la interrupción Externa 2. El trabajo con el Temporizador 1 tiene el mismo objetivo de las subrutinas anteriores. Luego según en el estado en que se encuentre el sistema, se realizarán un conjunto de acciones. Si el sistema se encuentra en alguno de los estados 1 o 2, se comienza a mostrar los datos almacenados en caso de que existan. Mientras que si el sistema se encuentra en el estado 4, se muestra el próximo dato almacenado, y en caso de que se esté mostrando el último. 28.

(40) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. dato, de nuevo se muestra el primer dato. El diagrama de flujo se muestra en la figura 2.6.. Figura 2.6 Subrutina de atención a la interrupción Externa 2. •. Subrutina de atención a la interrupción del Temporizador 0. Esta subrutina tiene como función incrementar los registros de conteo así como visualizar dicho conteo, lo cual se va a realizar una vez de cada siete que se entre en esta subrutina. Esto se hace por dos razones, la primera, es que un cambio rápido en la visualización en el display hace que las décimas y centésimas. 29.

(41) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. de segundo no sean visibles, y la segunda, que esta interrupción tiene una alta prioridad por lo cual interrumpirá a cualquier subrutina que se esté ejecutando, esto ocurrirá periódicamente cada 10 ms, y producto de la visualización en el display, en el peor de los casos esta subrutina puede demorar cerca de 9.8 ms, dejando muy poco tiempo para otras subrutinas que se estén ejecutando, como puede ser la atención a la interrupción del Temporizador 1. El diagrama de flujo se muestra en la figura 2.7. •. Subrutina de atención a la interrupción del Temporizador 1. Producto de que la onda generada tiene como frecuencia 1kHz, en esta subrutina de va a entrar cada 500 µs. Aquí se utilizan dos contadores anidados, el primero define el tiempo que estará generándose la onda cuadrada el cual va a ser 500 µs · 20, debido a que 20 es el número máximo a que puede llegar el CONTADOR_1, mientras que el segundo contador define el tiempo en que se estará evitando el efecto de rebote, el cual va a ser 500 µs · 20 · 15, debido a que 15 es el número máximo a que puede llegar el CONTADOR_2. Por tanto la onda cuadrada va a estar activa solo durante 10 ms, mientras que el efecto de rebote se estará evitando durante 150 ms. El diagrama de flujo se muestra en la figura 2.8.. 30.

(42) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Figura 2.7 Subrutina de atención a la interrupción del Temporizador 0.. 31.

(43) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Figura 2.8 Subrutina de atención a la interrupción del Temporizador 1.. 32.

(44) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. 33. 2.1.4 Edición y Ensamblaje. Este paso se realiza utilizando el MPLAB IDE versión 7.50. Los ficheros que contienen el código fuente se organizan dentro de un proyecto para ser compilados y ensamblados, con lo que se obtiene un fichero .hex, que es el que se cargará en el microcontrolador. A continuación se mencionan los pasos necesarios para la creación de un proyecto en el MPLAB IDE. 2.1.4.1 1.. Pasos para la Creación de un Proyecto en MPLAB IDE.. Ejecutar. la. herramienta. MPLAB. IDE,. que. se. encuentra. en. Inicio\Programas\Microchip\MPLAB IDE v7.50\MPLAB IDE o en C:\Archivos de Programas\ Microchip\MPLAB IDE\Core\MPLAB.exe 2.. Escoger el menú Project>Project Wizard…, la cual es la opción más fácil para la creación de un proyecto.. 3.. Al aparecer el cuadro de diálogo de bienvenida, hacer clic en el botón Next para avanzar.. 4.. En el segundo cuadro de diálogo, el cual es el primer paso, escoger el dispositivo con el que se va a trabajar dentro de un menú desplegable, el cual contiene una inmensa lista de distintos tipos de microcontroladores PIC (figura 2.9).. 5.. En el segundo paso, escoger en el menú desplegable Active Tool Suite la opción Microchip MPASM Toolsuite, y debajo en el cuadro Toolsuite Contents aparecen MPASM Assembler (mpasmwin.exe), MPLINK Object Linker (mplink.exe) y MPLIB Librarian (mplib.exe) y a cada una se le asigna la. localización. C:\Archivos. de. Programas\Microchip\MPASM. Suite\MPASMWIN.exe, C:\ Archivos de Programas \Microchip\MPASM Suite\mplink.exe,. C:\. Archivos. de. Programas. Suite\mplib.exe respectivamente (figura 2.10).. \Microchip\MPASM.

(45) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Figura 2.9 Selección del Dispositivo. Figura 2.10 Selección de la herramienta de compilación.. 34.

(46) CAPÍTULO 2.. 6.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. En el tercer paso, dar un nombre al proyecto y asignar una dirección la cual no debe sobrepasar junto con el nombre de cualquier fichero fuente los 62 caracteres de largo (figura 2.11).. Figura 2.11 Nombre y ubicación del proyecto. 7.. En el cuarto paso se permite incluir ficheros en el proyecto. Existen plantillas para cada microcontrolador, las cuales son muy útiles para comenzar un proyecto, debido a que contienen las secciones esenciales de un fichero fuente y ayudan a organizar el código escrito. Estas plantillas se encuentran en C:\Archivos de Programas\Microchip\MPASM Suite\Template\Code\ . Para la inclusión de los ficheros en el proyecto estos se deben seleccionar en el cuadro de la derecha del cuadro de diálogo y hacer clic en el botón ADD. Para que sean copiados en el proyecto se debe marcar la pleca al lado de cada fichero seleccionado en el cuadro de la izquierda. En la figura 2.12 se muestra como debe quedar el cuadro de diálogo antes de pasar al próximo.. 35.

(47) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Figura 2.12 Inclusión de ficheros en el proyecto. El último cuadro de diálogo es un resumen donde se muestra como ha sido configurado el proyecto. En caso de que se desee cambiar algo se puede ir a los pasos anteriores haciendo clic en el botón Back. De lo contrario, si se está de acuerdo con las opciones seleccionadas anteriormente se hace clic en el botón Finish. (Microchip Technology Inc, 2006e) Una vez con el proyecto creado se debe ver la ventana del proyecto como en la figura 2.13.. Figura 2.13 Ventana del Proyecto.. 36.

(48) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Para agregar nuevos ficheros se hace clic derecho sobre la carpeta donde se desean agregar y se escoge la opción Add Files…, en este caso se utilizan los ficheros Demoras.asm y LCD.asm, en los cuales están contenidas las subrutinas de demoras y de atención al display respectivamente. Estos ficheros se agregan en la carpeta Other Files. Para editar los ficheros fuentes se hace clic derecho sobre el fichero a editar y se escoge la opción Edit, como se muestra en la figura 2.14, con lo que se abre una ventana mostrando el contenido del fichero a editar.. Figura 2.14 Edición de Ficheros. menús Project>Build All o Project>Make. La diferencia consiste en que la opción Build All, recompilará todos los ficheros fuentes del proyecto, mientras que la opción Make, solo recompilará aquellos ficheros que han cambiado desde la última compilación, resultando así una compilación más rápida. (Microchip Technology Inc, 2006a) La compilación de los ficheros fuentes se realiza en los menús Project>Build All o Project>Make. La diferencia consiste en que la opción Build All, recompilará todos los ficheros fuentes del proyecto, mientras que la opción Make, solo recompilará aquellos ficheros que han cambiado desde la última compilación, resultando así una compilación más rápida. (Microchip Technology Inc, 2006a). Cualquier error de sintaxis existente es mostrado por el compilador en la ventana Output, lo cual facilita la corrección de los mismos debido a que haciendo doble. 37.

(49) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. clic sobre el mensaje de error, este señala la línea en la que se encuentra dicho error. (Microchip Technology Inc, 2006e) 2.1.5 Pruebas Preliminares. Debido a que no se tiene ningún hardware disponible en este punto, se debe usar la herramienta de simulación MPLAB SIM para probar el código. Esta permite la corrida paso a paso, introducción de puntos de ruptura, la medición de tiempos de ejecución, mostrar registros internos del microcontrolador, mostrar las memorias de datos y programas, etc. Este paso tiene la limitación de no permitir interactuar con el hardware externo al microcontrolador. Este simulador se selecciona en el menú Debugger>Select Tool. 2.1.6 Especificación del Hardware. Para el PIC 18F252, empleado en esta aplicación, la memoria interna es abundante, 16k de palabras de 16 bits de memoria Flash de programas, 1536 bytes de memoria RAM de datos para propósito general y 256 bytes de memoria EEPROM de datos. ( Microchip Technology Inc, 2006c) Los periféricos de entrada sólo van a ser cuatro teclas. Como periféricos de salida se va a utilizar una pequeña bocina la cual se acciona con la ayuda de un transistor y un display LCD con interfaz de 4 bits de datos, 2 filas de 16 caracteres y 5x8 puntos como matriz para cada caracter. (DatasheetArchive, 2006b) 2.1.7 Diseño del Hardware. Las teclas PARAR y BORRAR DATOS están conectadas a los terminales 11 (RC0) y 12 (RC1) respectivamente, mientras que la teclas INICIO y VER DATOS están conectadas a los terminales 22 (RB1) y 23 (RB2) respectivamente. Esto está dado por la forma en que el programa le da atención a dichas teclas. Para enviar datos y comandos al display se utiliza una interfaz de 4 bits, y para esto se escogieron los terminales 25 (RB4), 26 (RB5), 27 (RB6) y 28 (RB7). Los terminales 13 (RC2) y 14 (RC3) se escogen para las señales E y RS respectivamente, las cuales controlan el funcionamiento del display.. 38.

(50) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. 39. A la base del transistor, que acciona la pequeña bocina, se conecta el terminal 15 (RC4) a través un resistor de 1 kΩ, por donde se obtendrá una onda cuadrada cada vez que se presione alguna de las teclas. (Ver figura 2.16) 2.1.7.1. Pasos para el Diseño del Hardware.. Para el diseño del hardware se utiliza la herramienta ISIS del Proteus, en su versión 7.2, a continuación se enumeran los pasos seguidos para la realización del diseño esquemático. 1). Ejecutar. la. herramienta. ISIS. del. Proteus,. que. se. encuentra. en. Inicio\Programas\Proteus 7 Professional\Isis 7 Professional o en C:\Archivos de Programas\Labcenter Electronics\Proteus 7 Professional\BIN\ISIS.exe 2). Cargar los componentes necesarios para realizar el diseño. Esto se puede realizar presionando la tecla ‘P’ o haciendo clic el botón señalado con el círculo rojo en la figura 2.15. Luego aparece una ventana con el nombre de Pick Devices, la cual está dividida en varios campos. En el campo Keywords se pone el nombre del componente a incluir. Los campos Category, SubCategory, y Manufacturer, permiten refinar la búsqueda. En el campo Result se muestran los resultados de la búsqueda, y algunas especificaciones de los componentes encontrados. En el campo Schematic Preview se muestra el modelo que se utilizará para la simulación, así como la forma que tendrá el dispositivo en el diseño esquemático. Por último el campo PCB Preview muestra el footprint que tendrá el componente en la realización del circuito impreso, y en caso de ser posible escoger dentro de distintos footprints, se realiza mediante un menú desplegable existente en este campo.. 3). Una vez seleccionados los componentes, estos aparecerán en el campo DEVICES del área de trabajo. En este campo se selecciona el componente que se desea poner en la zona de trabajo y posteriormente se coloca en esta. Finalmente se conectan los componentes y el diseño queda como en la figura 2.16..

(51) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. Figura 2.15 Cargando componentes en el ISIS.. Figura 2.16 Diseño esquemático.. 40.

(52) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. 2.1.8 Construcción del Prototipo y Pruebas Preliminares. La construcción del prototipo se realiza utilizando una Breadboard. Una vez montado el circuito se chequea visualmente y eléctricamente, utilizando como guía el diseño previamente realizado en el ISIS. 2.1.9 Integración y Verificación. Este paso se realiza virtualmente y una vez que los resultados sean positivos se procede de forma real, cargando el fichero .hex en el microcontrolador con un circuito el cual se basa en el principio In-Circuit Serial Programmed, o con un programa cargador (bootloader) previamente programado en el microcontrolador (Segredo, 2006; Microchip Technology Inc., 2002). Ambas formas se comunican con un programa en la computadora, mediante un puerto que puede ser serie, paralelo o USB. Este programa tiene como función enviar mediante un protocolo el fichero .hex, en el cual se encuentra la información de cada instrucción en lenguaje de máquina, y la posición que ocupará dentro de la memoria de programas. (Roca et. al., 2008) La simulación se puede realizar de dos formas: a) Desde el área de trabajo del ISIS, haciendo doble clic sobre el microcontrolador se abre una ventana que permite editar las propiedades del mismo, y en el campo Program File poner la dirección del fichero .hex generado por el compilador. Otro campo de vital importancia es Processor Clock Frequency, donde se selecciona la frecuencia de trabajo del microcontrolador. En este ejemplo se usan 4MHz. Para la simulación hay que auxiliarse de la barra de herramienta que se muestra en la figura 2.17. En esta forma es posible visualizar el código fuente, lograr la corrida paso a paso, introducción de puntos de ruptura entre muchas posibilidades más. (Labcenter Electronics, 2004a). Figura 2.17 Barra de herramienta para la simulación en el ISIS.. 41.

(53) CAPÍTULO 2.. Aplicación Derarrollada en Lenguaje de Bajo Nivel.. 42. b) La otra forma de simulación, recomendada, es integrando el MPLAB IDE y el Proteus. Desde el MPLAB IDE, se selecciona la opción Proteus VSM dentro de la opción Select Tool del menú Debugger. Como se verá se abre una ventana la cual es un visor de ISIS, en la que se carga el diseño previamente creado en ISIS, y la simulación se realiza igual que con el MPLAB SIM, con la. diferencia. de. que. se. interactúa. con. el. hardware. externo. al. microcontrolador. Para la simulación hay que auxiliarse de las barras de herramientas que se muestran en la figura 2.18.. Figura 2.18 Barra de herramienta para la simulación en el MPLAB. La simulación en el ambiente integrado se muestra en la figura 2.19.. Figura 2.19 Simulación en el ambiente integrado. En el anexo III se muestra el circuito real en pleno funcionamiento como resultado final de la aplicación..

(54) CAPÍTULO 3.. CAPÍTULO 3.. Aplicación Derarrollada en Lenguaje de Alto Nivel.. Aplicación Desarrollada en Lenguaje de Alto Nivel.. En este capítulo se describe paso a paso el proceso de cómo crear aplicaciones utilizando la programación en lenguaje de alto nivel. Para ello se utiliza una aplicación creada mediante la guía diseñada en el primer capítulo. Esta aplicación es programada en lenguaje C, empleando el compilador PCHW de CCS. Los pasos para desarrollar la aplicación son similares a los descritos para la aplicación en bajo nivel. La mayor diferencia está marcada en la edición y ensamblaje, por lo que se le pondrá mayor peso en este capítulo. Además, así servirá de referencia para crear futuras aplicaciones. 3.1 Descripción General del Software de la Aplicación. Esta aplicación consiste en un transmisor de código Morse, que se comunica a través de la interfaz serie (PC - PIC). En la PC funciona un programa como terminal virtual que transmite los códigos ASCII de los caracteres que conforman las oraciones a transmitir y los comandos, a través del puerto serie. La tabla con los códigos ASCII de los caracteres se muestra en el anexo IV. El alfabeto Morse internacional se muestra en el anexo V. Mediante los comandos el usuario tendrá la posibilidad de grabar oraciones en memoria EEPROM, chequearlas y transmitirlas cuando lo desee, transmitir nuevas oraciones, repetir la última transmisión, interrumpir una transmisión que se esté efectuando, limpiar la memoria EEPROM, así como ver la lista de posibles comandos.. 43.

(55) CAPÍTULO 3.. Aplicación Derarrollada en Lenguaje de Alto Nivel.. 44. Para la escritura y lectura de la memoria EEPROM, así como la transmisión y recepción serie, se utilizan funciones incorporadas del compilador (ver anexo II). Estas funciones no utilizan interrupciones, sino que su ejecución es secuencial. Por su fácil forma de implementar, y por no afectar en el desarrollo de la aplicación, se utilizaron estas funciones incorporadas. (Microchip Technology Inc, 2006c; Microchip Technology Inc, 1997b; Microchip Technology Inc., 1997c; Microchip Technology Inc, 2003). 3.2 Edición y Ensamblaje de un Programa usando PCHW. Este paso se realiza utilizando el MPLAB IDE versión 7.50 como programa contenedor, el cual va a utilizar el compilador PCHW de CCS. Los ficheros que contienen el código fuente se organizan dentro de un proyecto para ser compilados y ensamblados, con lo que se obtiene un fichero .hex que es el que se cargará en el microcontrolador. A continuación se mencionan los pasos necesarios para la creación de un proyecto. No se muestran imágenes ya que son similares a los pasos descritos en el capítulo 2. 3.2.1 Pasos para la Creación de un Proyecto usando PCHW. 1.. Ejecutar. la. herramienta. MPLAB. IDE,. que. se. encuentra. en. Inicio\Programas\Microchip\MPLAB IDE v7.50\MPLAB IDE o en C:\Archivos de Programas\ Microchip\MPLAB IDE\Core\MPLAB.exe 2.. Escoger el menú Project>Project Wizard…, la cual es la opción más fácil para la creación de un proyecto.. 3.. Al aparecer el cuadro de diálogo de bienvenida, hacer clic en el botón Next para avanzar.. 4.. En el segundo cuadro de diálogo, el cual es el primer paso, escoger el dispositivo con el que se va a trabajar dentro de un menú desplegable, el cual contiene una inmensa lista de distintos tipos de microcontroladores PIC..

Figure

Tabla 1.1 Extensiones de ficheros usados por el MPLAB IDE.
Figura 1.2 Ambiente de trabajo del compilador de CCS.
Tabla 1.2 Tipos de datos del compilador PCHW.
Tabla 1.3 Extensiones de ficheros usados por el PCHW.
+7

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

 Tejidos de origen humano o sus derivados que sean inviables o hayan sido transformados en inviables con una función accesoria..  Células de origen humano o sus derivados que

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)