08 MINED MICROCONTROLES INDUSTRIALES Y EDUC.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "08 MINED MICROCONTROLES INDUSTRIALES Y EDUC."

Transcripción

1 MINED 08 Módulo de Control MINED MICROCONTROLES INDUSTRIALES Y EDUC. info@mined.com.mx Manual del 08

2 PRESENTACION MINED El Microcontrolador Industrial y Educativo (MINED) es un sistema microcomputador ideado para aplicaciones dedicadas de control, que puede utilizarse para control secuencial, control dedicado en tiempo real, proceso distribuido, adquisición de datos, robotica, etc.. Tambien puede ser usado como equipo didáctico indispensable en la enseñanza de microprocesadores y sus técnicas de programación y desarrollo. El MINED esta concebido como un sistema modular para lograr diferentes configuraciones de acuerdo a necesidades especificas a un bajo costo. El modulo basico y mas importante es la unidad Microprocesadora (MPU08), con el microcontrolador M68HC908, que contiene al microprocesador, memorias, puerto serie (uart), paralelo, timer y convertidor A/D. El complemento del MPU08 son los modulos de interface digital I/O (AC/DC), display de cuarzo (LCD), teclado hexadecimal 4X4, RTC, Memoria serial EEPROM, Sensor de temperatura, etc.. La tarjeta MPU08 contiene en el FLASH del M68HC908 al sistema monitor 08 (MON08) con el que se pueden depurar programas de aplicación especifica en tiempo real (el termino sistema monitor o sistema depurador, describe al sistema operativo mas pequeño). Esta formado por un conjunto de rutinas cuyo propósito es permitir al usuario controlar cómodamente las funciones del microcontrolador. Dichas rutinas mas un programa ejecutado desde windows, permite al usuario de una manera sencilla revisar y modificar datos en memoria (variables), revisar y modificar los registros del microcontrolador, leer información de alguna unidad de almacenamiento externa (disco) y depurar programas de aplicación ejecutando instrucción por instrucción. Este manual esta dirigido a usuarios con conocimientos previos de microprocesadores o microcontroladores y su programación (ensamblador y/o ANSI C). Si no es su caso consulte las hojas técnicas del manual de microprocesadores MOTOROLA o el MC68HC08GP32 technical data. En la primer parte de este manual se presentan generalidades del MPU08. La segunda parte constituye una ayuda rapida en el uso de la herramienta de programación en alto nivel (ANSI C) code warrior en la depuración y ejecución de programas instrucción por instrucción o en forma global. El MINED esta garantizado contra defectos de fabricación y no contra fallas por uso inadecuado. Siga al pie de la letra las instrucciones de conexión y en general de la buena Ingeniería Electrónica. Para cualquier problema o asesoría técnica contacte a su distribuidor, consultenos en la web o directamente a las oficinas de MINED en Guadalajara el teléfono (01 33) , o bien envíe sus preguntas y comentarios a info@mined.com.mx 1

3 PRESENTACION EL MICROCONTROLADOR El sistema microcontrolador Industrial y/o Educativo esta concebido como un sistema modular para lograr diferentes configuraciones de acuerdo a necesidades especificas a un bajo costo. El modulo basico y mas importante es la unidad MicroControladora 08 (MCU08) que contiene al Microprocesador, Memorias (flash/ram), Puerto serie, Puerto paralelo, Timers, Convertidores A/D de 8 bits, Modulo de base de tiempo, Reloj de tiempo real, Memoria serial eeprom, sensor de temperatura. El MCU08 esta diseñado en base al microcontrolador MC68HC908GP32 de MOTOROLA que cuenta con 33 lineas de entrada-salida, 32Kbytes de memoria FLASH EEPROM, 512bytes de RAM. La tarjeta Microcontroladora incluye un sistema monitor residente (desde el fabricante denominado MON08), con el que se pueden ejecutar y depurar programas de aplicación especifica. Este MON08 en conjunto con un programa especifico que se ejecuta desde windows permite manipular los datos y ver los resultados en tiempo real o en simulación la cual, no requiere de la tarjeta físicamente. El MON08 se apodera de uno de los puertos del microcontrolador durante la depuración y/o descarga del programa a la memoria del microcontrolador. Este sistema monitor es accesado por el usuario al conectar un voltaje mayor a 5VDC y menor a 9VDC en la terminal IRQ de microcontrolador, cuando esto ocurre, el sistema no entra en un ciclo de reset normal, sino que entra al sistema MON08 que se comunica (transmite y recibe) a traves del serial puerto del microcontrolador (para detalles, ver en el manual del MC68HC908). Para una aplicación dada se desarrolla el programa en una PC con un Cross-Assembler o un Cross-Compiler (de C code warrior) y se cargan los codigos al MCU a traves del puerto RS232 MON08 para luego ser ejecutados totalmente o instrucción por instrucción (en ensamblador o en C) observando los cambios provocados en los registros del microcontrolador, la memoria o los puertos E/S. Si existen errores se corrigen en la PC y se carga el nuevo codigo al microcontrolador. Si se trata del desarrollo de una aplicación especifica, el funcionamiento del programa estara en interacción con las tarjetas de interface seleccionadas para la aplicación. La filosofia de desarrollo de aplicaciones con el MCU08 se basa en la técnica modular y consiste en ir depurando las subrutinas (modulos) basicas e irlas aislando en archivos separados clasificados de acuerdo a la funcion. Cada modulo contiene las declaraciones y definiciones de variables locales y globales necesarias para su ejecución por lo que solo es necesario preocuparse y dedicarle un tiempo importante al modulo solo la primer vez, es decir, en proyectos posteriores solo se incluye el modulo ya que se tiene el antecedente del funcionamiento de la rutina o modulo (varias rutinas para lograr una tarea). Esta técnica nos facilita la depuración y nos permite una programación rapida y exitosa. Una vez teniendo el codigo objeto depurado, se puede dejar en memoria FLASH. Cada que es generado un evento de reset (falla de energia, o reset) el microcontrolador cede el control al codigo objeto grabado a menos que se force la entrada al MON08 para cambios. Cabe hacer mencion que el MON08 es un sistema que permite la programación y depuración en campo de un sistema sin tener una fuente de programación externa es decir, que el microcontrolador genera sus propios voltajes de programación a partir de la fuente de 5VDC, de tal manera que solo se requiere de un cable serial DB9-MOLEX 4cktos (cable serial MINED), el programa de comunicación al MON08, una fuente de 5Volts para alimentación del MCU08 y configuración de los jumpers de la tarjeta para lograr una depuración y actualizacion del programa en campo. 2

4 CAPITULO 1 DESCRIPCION GENERAL CAPITULO I. DESCRIPCIÓN GENERAL. I.1 CONEXIÓN DEL MCU08. Para iniciar una sesion con el sistema MINED, se necesita una PC con un puerto serie DB25 o DB9 según el puerto serial de la PC que se quiera emplear, instalar el sistema de desarrollo CODE WARRIOR, ejecutar el IDE CODE WARRIOR, iniciar un proyecto. Enseguida tome los cables de la fuente de 5VDC apagada e inserte en el conector indicado cuidando que el negativo de la fuente empate con la leyenda GND del PCB. Si la polaridad de la fuente al encenderla es inversa a lo indicado, el picofusible de protección actuara y se abrira por lo que debera ser sustituido por uno del mismo valor. Conecte el cable RS232 MINED en el conector MON08 de la tarjeta MCU08 y el otro extremo al puerto disponible de la PC. Coloque el jumper JP8; JP6 debe estar en la posición V+ (el siguiente dibujo muestra la distribución de componentes de la tarjeta). Ejecute el programa CODE WARRIOR IDE previamente instalado. Vaya al modo de debug con lo cual se comunica la PC a la tarjeta MCU08. Siga las instrucciones de la pantalla para lograr la comunicación (para mas detalles en el manejo del CODE WARRIOR vea la seccion 2 de este manual). Asegurese que el puerto de comunicación de la PC seleccionado sea el mismo que físicamente conecto al MCU08. Los valores que debe tener el programa de depuración PEDEBUG son: - Target Hardware Type : CLASS III - Baud: 7812 para resonador 8.0Mhz ó 9600 para cristal 9.8Mhz - IGNORE security seleccionado ('palomeado'). El programa se graba en memoria flash del microcontrolador asi como los vectores de reset e interrupciones necesarias por lo que si retiramos el jumper JP8 y JP6 lo movemos a +5V, el programa se ejecuta automáticamente después de cada evento de reset o falla de energía. Los recursos de memoria (32Kbytes de Flash, 512bytes de RAM) del microcontrolador estan disponibles en su totalidad para el usuario ya que el MON08 es un sistema monitor minimo que esta grabado en ROM del microcontrolador desde la fabrica. NOTA: El puerto PTA0 es esclavizado por el MON08 en el tiempo de depuración del programa ya que, a traves de este puerto se establece la comunicación (tx/rx) del sistema monitor a la PC. Se recomienda en el diseño considerar esta funcion del puerto para asignarle una tarea sencilla que no demande de una depuración extrema y que se active al momento de liberar el resto del programa. 3

5 CAPITULO 1 DESCRIPCION GENERAL VOLTAJE DE ALIMENTACION INTERRUPTOR DE ENCENDIDO PICOFUSIBLE DE PROTECCION JP6 V+/+5V JP8 CONTROL DE CONTRASTE LCD CONECTOR LCD CONECTOR LCD/TECLADO TECLADO 4X4 INDICADOR ENCENDIDO RESET SENSOR TEMPERATURA SEEPROM MON08 RS232 RTC UART RS232 PUNTOS DE PRUEBA GND/+5V PUERTO PTB/PTD RACK I/O STANDARD MICRO 68HC908GP32 4

6 1.2 El MONO08. El monitor en ROM, recibe y ejecuta comandos desde un PC via una interface RS232 estandar. Existen comandos simples que pueden acceder alguna dirección de memoria del microcontrolador. En modo monitor, el microcontrolador puede ejecutar un codigo descargado en RAM por un computador mientras la mayoria de los pines del micro funcionan normalmente (según las especificaciones). Las comunicaciones entre el microcontrolador y el computador son a traves del pin PTA0, por lo que es requerida una interface para multiplexar tx-rx. El codigo del monitor ha sido actualizado de versiones previas para permitir la habilitacion del PLL para generar el clock interno si el vector de reset esta borrado ($FFFF) cuando el HC08 cuenta con un cristal de baja frecuencia. La entrada al monitor a una velocidad de 9600bauds puede ser: 1) Si el vector de reset es diferente a $FFFF o La frecuencia del reloj es MHz con PTC3 bajo o 9.803Mhz con PTC3 alto. o Pin IRQ = Vtest (7V < IRQ < 9V) 2) Si el vector de reset esta borrado ($FFFF). o Clock externo = MHz o IRQ = Vdd 3) SI el vector de reset esta borrado o Clock externo = KHz. o IRQ = Vss El firmware del monitor utiliza los siguientes comandos: o READ (Leer de memoria) o WRITE (Escribir en memoria) o IREAD (Leer de memoria en forma indexada) o IWRITE (Escribir en memoria en forma indexada) o READSP (Leer el apuntador de pila STACK) o RUN (Ejecutar el programa de usuario). Para mas información refierase al manual técnico del microcontrolador proporcionado por MOTOROLA (MC68HC908GP32 Technical Data). 5

7 DIAGRAMA MINED 08S 6

8 CAPITULO II. TRABAJANDO PROYECTOS CON CODE WARRIOR. El CODE WARRIOR es un sistema de desarrollo integrado (IDE) muy potente que facilita el diseño de sistemas dedicados utilizando un lenguaje de nivel medio (ANSI C). El ambiente de trabajo de CODE WARRIOR esta diseñado para trabajar con proyectos con la facilidad de utilizar modulos depurados anteriormente (libreriras) por lo que se agiliza la construcción de un sistema. Ofrece las siguientes ventajas: - Uso de lenguaje de nivel medio (ANSI C). - Portabilidad de codigo entre diferentes fabricantes (teniendo el compilador especifico). - De mantenimiento sencillo. - Depuración abarcando la mayoria de los casos. CODE WARRIOR tiene la capacidad de manipular proyectos, edición de archivos, compilación optimizada, simulación y ejecución del codigo generado. A cada proyecto se le asigna una carpeta que contiene la mayoria de los archivos fuente que componen al sistema. Cada archivo es recomendable que contenga las funciones, declaraciones de variables, etc., de un modulo completo para que este pueda ser reutilizado en los proyectos que contengan un modulo similar. Por ejemplo: manejo de un LCD, temporizadores, DAC, UART, UART virtual, etc. Este modelo de programación nos permite generar librerias en las cuales el tiempo de depuración solo es la primer vez y, cuando es requerido (el modulo) por otro sistema equivale a un include. MINED cuenta con una serie de librerias probadas que pueden ser requeridas por mail a la dirección info@mined.com.mx Así mismo estamos a sus ordenes en la web A continuación se enlistan los pasos para crear un nuevo proyecto: 1) Seleccione la opcion FILE > NEW. 2) Seleccione HC08 Stationery. 3) Escriba el nombre del proyecto. 4) Establezca la carpeta de trabajo. 5) Seleccione LEGACY > PEDebug > Gp32 CODE WARRIOR genera un arbol y muestra la siguiente pantalla. El grupo SOURCES contiene todos los archivos fuente del sistema. Se pueden agregar nuevos grupos o agregar archivos a un grupo especifico. 7

9 Para agregar un nuevo grupo : Project > Create group. Para agregar un archivo a un grupo: Project > Add Files. Dado que programaremos en C y este proyecto se creo como un ASM Generic, eliminaremos los archivos del grupo sources GP32.ASM y GPREGS.inc y agregaremos los archivos: \CodeWarriorCW08_V2.1\lib\HC08c\lib\ansi.lib y \CodeWarriorCW08_V2.1\lib\HC08c\src\Start08.c. En el grupo PRM se encuentra el archivo que indica al compilador como esta distribuida la memoria de datos y programa del microcontrolador. De igual manera se encuentran definidos los vectores de interrupcion, tamaño del stack e inicio del mismo. En este caso especifico el microcontrolador que usamos es el M68HC908GP32 y debemos asegurar la siguiente información en el archivo default.prm 8

10 A partir de este momento se debe escribir el programa que requiere el sistema. Normalmente el archivo main.c contiene el programa principal donde debemos asegurar lo siguiente: 1) Inicializacion del stack. 2) Inicializacion de memoria RAM en 0 (recomendable mas no indispensable). 3) Deshabilitacion del watch dog. 4) Inicializacion de puertos. 5) Ciclo infinito de control. Cabe hacer mencion que cada archivo.c debe tener un archivo.h (header) donde existen las declaraciones de las funciones con los parámetros de entrada y salida asi como las declaraciones externas de las variables locales del modulo. Este archivo.h se debe incluir con la directiva #include archivo.h en los archivos que necesiten las funciones elaboradas en el archivo.c. Finalmente, debemos mantener en mente que todas las funciones declaradas en el archivo.h se deben desarrollar en el archivo.c para evitar que el microcontrolador pierda el control. Es recomendable de igual forma en sistemas industriales, que los vectores de interrupcion no utilizados tengan de igual manera una salida para evitar una entrada de interrupcion sin retorno y por tanto una perdida del control del programa. 9

11 Cada archivo.c puede ser desensamblado ( Project > Disassemble) con el objeto de revisar el codigo maquina que genera el compilador solo para este archivo. Esta opcion nos permite modificar en lenguaje C hasta quedar satisfechos con la optmizacion del codigo de maquina (optimizar memoria y tiempo de ejecución) obviamente si lo requerimos. Si por el contrario el sistema es pequeño y no esta supeditado a una ejecución veloz sale sobrando este paso. Una vez que tenemos escrito nuestro programa, es necesario compilarlo y ligarlo a todos los archivos.c que consta el sistema de acuerdo a las directivas utilizadas en cada archivo. Estas directivas indican si es una funcion de atención a una interrupcion, si queremos ciertos datos en una memoria especifica, etc. Estas directivas son conocidas como PRAGMAS y pueden ser vistas a detalle en: Metrowerks > documentation > MOTOROLA M68HC08 manuals overview > hc08 compiler > compiler pragmas Para compilar el programa Project > MAKE, el sistema compila el proyecto completo y muestra si hay errores, warnings o mensajes. Es necesario corregir los errores para entrar a la depuración. Los warnings y mensajes deben ser entendidos ya que el CODE WARRIOR, puede eliminar una parte del codigo si esta no es usada por el resto del codigo. Una vez que no se tienen errores en la compilación se puede proceder 10

12 CLASE III PUERTO DISPONIBLE EN LA PC BAUD RATE 7812 ó 9600 SELECCIONADO INICIA COMUNICACIÓN CON MCU08 Si presiona el boton Abort el sistema entrara por default al modo de simulación. En ambos modos los botones de control del programa funcionan, solo que en simulación solo nos sirven los resultados en memoria y no tenemos algo palpable como encender un led. La pantalla que aparece una vez establecida la comunicación o bien en el modo de simulación es la siguiente. Cabe mencionar que para cambiarse del modo de simulación a depuracion no es necesario cerrar la ventana; presionamos: PEDebug > Full Chip Simulation para modo de simulación, o PEDebug > In Circuit Debug/Programming para depuracion. 11

13 Código C Código ensamblador Stack de funciones Registros de CPU Variables globales Variables locales Memoria del M68HC A continuacion se describen los botones de control de la ejecucion de un programa. RUN. Ejecuta el programa a partir de la dirección del contador de programa y se detiene solo si hay un break point (solo permite 1) o bien al presionar el boton de paro o reset. ENTRAR A UNA FUNCION. Permite la traza de una función especifica. Estando el control del programa en la llamada a la función requerida, se presiona este botón y el PC se detiene en la primer instrucción de la función. EJECUTAR UNA INSTRUCCIÓN EN C. Ejecuta la instrucción selecciona y detiene la ejecución. En este caso es una instrucción de C que por lo general equivale a n instrucciones en ensamblador. Ambos codigos son mostrados en la pantalla de depuracion. Al terminar de ejecutar la instrucción, se pueden revisar tanto memorias de datos como los registros y código de condición del microcontrolador. Asimismo pueden ser cambiados los datos, registros, códigos de condición antes de ejecutar la instrucción. SALIR DE LA FUNCION. Ejecuta las instrucciones a partir del contador de programa y hasta que encuentra el fin de la funcion en codigo C. En este momento se detiene y muestra los valores finales de memorias, registros y, código de condición. EJECUTAR UNA INSTRUCCIÓN EN ENSAMBLADOR. Ejecuta una linea de código ensamblador a partir del PC. Este código es accesado en la ventana correspondiente. DETENER. Detiene la ejecución del programa y actualiza los registros, memoria, del microcontrolador. RESET. Provoca un evento de reset en el microcontrolador y regresa el control del programa a la primera instrucción del código. EJECUTAR HASTA EL CURSOR. Permite la ejecución del programa desde el PC actual hasta la instrucción seleccionada. Esta opción no esta en un botón de control para poderla accesar ejecute los siguientes pasos: 1) Mueva el apuntador del mouse hasta la instrucción requerida en C o ensamblador en la ventana correspondiente. 2) Presione el boton derecho del mouse. 3) Seleccione RUN TO CURSOR. NOTA: Si el programa no se ejecuta correctamente hasta el cursor y es necesario regresar el control, debe eliminar el break point que se genero de lo contrario no podra hacerlo de nuevo. Para eliminar el break point. Clic Boton derecho > Show break points > Delete Para modificar cualquier registro, memoria, código de condición (recuerde que los puertos y sus registros de direcciones están mapeados en memoria por lo que se modifican como una memoria), haga doble clic sobre el valor actual y proceda a introducir el nuevo valor.