UNIVERSIDAD DE OVIEDO Departamento de Ingeniería Eléctrica, Electrónica, de Computadores y Sistemas Guía de Prácticas ASIGNATURA: CENTRO: ESTUDIOS: CURSO: CARÁCTER: PROFESORADO: Informática Industrial y Comunicaciones Escuela Politécnica de Ingeniería de Gijón Grado en Ingeniería Electrónica y Automática 3º CUATRIMESTRE: 1 Obligatoria CRÉDITOS ECTS: 6 Ignacio Alvarez, José Mª Enguita PRACTICA 09: Control digital bajo interrupción 1. En el sistema de control de motor simulado, realizar el lazo de control mediante el servicio de la interrupción del temporizador, de forma que el programa principal main() se pueda quedar a la espera de los posibles comandos de teclado siguientes: >> POS=POT (se desea que la referencia de posición sea obtenida del potenciómetro manual). >> POS=valor_en_grados (se desea que la referencia de posición sea la indicada en valor, independientemente del potenciómetro manual). >> TENSION=valor_en_volt (se indica el valor de tensión a aplicar en control todo/nada). 2. Se realizará el control según el estado de los interruptores de la tabla siguiente Bit peso 0 1 2 3 Selección Arrancar y parar el control del motor Gestión del problema de paso por 180° (ver figura anexa) Realizar el desplazamiento por el camino más corto (ver figura anexa) Selección del modo de control Estado 1 Arrancar Gestionar Gestionar Estado 0 Parar (uk=0) No gestionar No gestionar Todo/nada R(z) 3. Instalación de rutina de servicio de interrupción (ISR): void FuncionAEjecutar() { … } … main() { … EstablecerISRTemporizador(0,Tm_ms,FuncionAEjecutar); … } 4. Hay que determinar qué variables pueden seguir siendo locales (sólo accesibles a la función, se crean y destruyen cada vez que se ejecuta la función), y cuales deben pasar a ser globales (declaradas fuera de todas las funciones, accesibles por todas). Deberán ser globales: Las variables a compartir entre la ISR y el programa principal. Las variables que deben mantener su valor anterior cuando se vuelve a ejecutar la ISR. Se comenzarán los nombres de las variables globales por _ para distinguirlas fácilmente y evitar confusiones. 5. Recordar que las variables deben tener valores por defecto para utilizarlas antes de la introducción del 1er comando.