Práctica 5: Ejecución de programas en el dsPIC Informática Industrial 1. Procedimiento de configuración inicial Durante la instalación del MPLAB IDE 1 existe la opción de dejar preinstalados los drivers para la conexión mediante USB del dispositivo de depuración y programación MPLAB ICD 2, de forma que cuando se conecte éste por primera vez se realiza la instalación de dichos drivers. Esta primera conexión ya ha sido realizada en los ordenadores de prácticas puesto que se necesitan privilegios de administrador. A continuación se describe el resto del procedimiento que hay que llevar a cabo para configurar el MPLAB IDE para el uso del MPLAB ICD2: 1. Conectar el ICD 2 al PC con el cable USB. El ICD 2 no debe tener nada más conectado en este momento. 2. Ejecutar el MPLAB IDE. 3. Seleccionar el modelo dsPIC30F6010 en Configure/Select Device. 4. Seleccionar el MPLAB ICD 2 como herramienta de depuración en el menú Debugger/Select Tool 5. Si en ese momento no sale automáticamente el cuadro para configuración del MPLAB ICD 2, obtenerlo en Debugger/MPLAB ICD 2 Setup Wizard. En ese cuadro se realizan sucesivamente unas preguntas, en las que debe escogerse: Método de conexión: USB. MPLAB IDE conecta automáticamente con ICD 2: DESACTIVADO (si en lugar de esto, sale algo relacionado con “target power source”, es que se hizo mal la elección del punto 3; volver allı́). ICD 2 carga automáticamente sistema operativo: ACTIVADO. 6. Conectar la placa de desarrollo al ICD 2, y alimentar la placa de desarrollo. Si todo se ha realizado correctamente, ya está listo para su uso. Puede verificarse que la conexión del MPLAB IDE con el ICD 2 es correcta con Debugger/Connect: en la ventana output saldrán mensajes indicando el resultado de la conexión. Si la conexión se realiza por primera vez, es decir, en un equipo de desarrollo nuevo, se pedirá confirmación para cargar el sistema operativo o firmware en él. Sólo hay que aceptar y esperar a que se realice la carga, que puede durar unos minutos. 1 También es posible a posteriori. Consultar la documentación en caso necesario. 1 2. Método de conexión y desconexión del sistema Cuando no haga falta llevar a cabo el procedimiento del apartado anterior porque sea seguro que la configuración del MPLAB no ha sido cambiada en los aspectos contemplados en el mismo, lo único que hay que hacer para preparar el sistema es lo siguiente: 1. Conectar el ICD 2 al PC con el cable USB. El ICD 2 no debe tener nada más conectado en este momento. 2. Conectar la placa de desarrollo al ICD 2, y alimentar la placa de desarrollo. 3. Ejecutar MPLAB IDE. El procedimiento de desconexión es el inverso del anterior y no se debe apagar el PC sin haberlo realizado antes. Existen otras configuraciones de conexión entre PC, ICD2 y placa de desarrollo, por ejemplo alimentando el ICD 2 en lugar de la placa de desarrollo de forma que la placa de desarrollo se alimenta indirectamente a través de la conexión con el ICD 2. Sin embargo la potencia que llega a la placa de desarrollo usando dichas configuraciones no es suficiente en los modelos dsPIC30F. 3. Depuración de un proyecto Cuando el sistema está listo para su uso, normalmente se abrirá un proyecto antiguo o se creará uno nuevo. Después de compilar (Build All o Make), hay que seleccionar el MPLAB ICD2 como herramienta de depuración en el menú Debugger/Select Tool (si no lo está ya) y activar la conexión del MPLAB IDE con el ICD 2 con Debugger/Connect. Luego se transfiere el código binario del programa al dsPIC con Debugger/Program y ya está listo para la depuración. Cada vez que se realice un cambio en el programa y se recompile, se deberá transferir de nuevo al dsPIC. En la depuración se procede básicamente igual que con el simulador, aunque a veces se observarán distintos comportamientos y posibilidades respecto a éste, como por ejemplo: Sólo es posible tener dos puntos de ruptura activos a la vez al depurar con el ICD2. El inicio de la ejecución o la ejecución de un paso de programa puede realizarse muy lentamente si se tienen abiertas determinadas ventanas del menú View, como por ejemplo la de los SFR. Para evitarlo, usar la ventana Watch y poner en ella sólo las variables/registros que se quieren ver. Ello se debe al tiempo requerido para transferir los valores desde el dsPIC al MPLAB IDE. Para evitar ciertos conflictos con las zonas de memoria reservadas en el dsPIC para el uso del ICD2 en modo depuración que provoca comportamientos extraños en la ventana Watch (variables que no se actualizan o que no muestran su valor en dicha ventana), hay que activar la opción 2 “Link for ICD2” en el menú Project/ Build Options/Project, dentro de la lengüeta “MPLAB LINK 30”. Cuando se está realizando la ejecución paso a paso, no se realizan llamadas a interrupciones. El Watchdog tiene que estar deshabilitado en depuración. Esto se hace en Configure/Configuration bits. Si no se hace, el MPLAB IDE avisa de ello al intentar depurar con el ICD2. Para más información acerca de estos aspectos, se puede consultar el archivo: Microchip\MPLAB IDE\Readmes\Readme for MPLAB ICD 2.txt o también el documento MPLAB ICD 2 In-Circuit Debugger User’s Guide. 4. Programación de un proyecto Cuando un proyecto está en su estado definitivo de uso, se puede usar el ICD2 para programar el dsPIC de forma que luego pueda ejecutarse el programa independientemente del PC y del ICD2. Otra diferencia del método que se describirá a continuación frente al mencionado en el anterior apartado es que no se transfiere cierto código de apoyo, necesario para la depuración. Para programar el dsPIC para funcionamiento autónomo se activa la opción Programmer/Select Programmer/MPLAB ICD 2. Además debe tenerse en cuenta que el ICD2 nunca debe estar seleccionado a la vez como programador y como depurador. Si se intenta activar uno con el otro activado, el MPLAB IDE avisará y pedirá confirmación para desactivar el otro. Una vez hecho, aparece disponible la opción Programmer/Program, que transfiere el programa al dsPIC. El programa no empieza a ejecutarse inmediatamente porque por defecto es mantenido en RESET. Existen dos opciones en dicho menú Programmer (y sus botones equivalentes en la barra de herramientas) para quitar y poner dicho estado RESET. Una vez programado el dsPIC se puede desconectar la placa de desarrollo del, ICD2. En modo autónomo comenzará inmediatamente a ejecutarse el programa almacenado en el dsPIC, pudiendo usar en cualquier momento el botón RESET para reiniciar el programa. 5. Caracterı́sticas de la placa de desarrollo Se describirán a continuación algunas caracterı́sticas fı́sicas y de configuración de la placa de desarrollo. En las descripciones fı́sicas se considerará que se mira la placa orientada para leer de forma natural el siguiente texto serigrafiado: MICROCHIP dsPIC30F Motor Control Development Board. 5.1. Frecuencia de reloj del procesador La frecuencia de reloj del procesador es configurable, pero por defecto tiene el valor 7,378 Mhz. 3 5.2. Diodos LED Los cuatro LEDs rojos contiguos se denominarán, de arriba a abajo: 1, 2, 3 y 4. Se encienden poniendo a 1 las lı́neas RA9, RA10, RA14 y RA15, respectivamente. El quinto LED rojo apartado viene etiquetado FWD/REV, y se enciende al poner a 1 la lı́nea RD7. 5.3. Botones o pulsadores Los cuatro pulsadores debajo de la pantalla LCD se denominarán, de izquierda a derecha: 1, 2, 3 y 4. Cuando son pulsados se ponen a 0 las lı́neas RG6, RG7, RG8 y RG9, respectivamente. El pulsador que se encuentra a la izquierda de éstos viene etiquetado como TRIP y al pulsarlo se pone a 0 la lı́nea RE8. 5.4. Potenciómetros Los dos potenciómetros disponibles están etiquetados como VR1 y VR2. Ambos están alimentados a 5V y por lo tanto proporcionan una salida entre 0 y 5V. El potenciometro VR1 está conectado a la lı́nea de entrada AN12, mientras que el VR2 está conectado a la lı́nea de entrada AN7. 6. Problema propuesto 1. Programar el dsPIC para leer el nivel de tensión existente en el potenciometro VR1 y programar los LEDS de forma que cada LED (1,2,3 y 4) se encienda si la tensión medida supera los valores de 1,2,3 y 4V respectivamente. 2. Programar el pulsador 1 de forma que al pulsarse detenga el procesamiento y los LEDS se mantenga en su valor. Reiniciar el procesamiento al volver a pulsar este botón. 3. Programar el pulsador 2 de forma que al pulsarlo se detenga el procesamiento y los LEDS se apaguen. Al volver a pulsar se reanudará el procesamiento. 4. Hacer compatibles los dos últimos casos. 4