Sistemas Embebidos para Tiempo Real Laboratorio 4 Interrupciones

Anuncio
Sistemas Embebidos para Tiempo Real
Laboratorio 4
Interrupciones
Resumen
Se implementará un Reloj de Tiempo Real utilizando un timer (temporizador hardware) de un
Microcontrolador y el módulo de reloj desarrollado en el Laboratorio 2. Se utilizará la capacidad del timer de
generar interrupciones.
El Laboratorio debe ser realizado en equipos formados por tres participantes. Si bien se recomienda el
intercambio de ideas entre equipos, es obligatorio que cada equipo realice su propia versión del trabajo.
Al comienzo del Laboratorio, cada grupo deberá realizar una demostración de las Tareas Previas
realizadas según se detalla más adelante. Además, algunos alumnos contestarán un cuestionario
relacionado con la preparación de la páctica. La demostración y los cuestionarios se calificarán.
Objetivos
Objetivos generales
1. Escribir rutinas de atención a las interrupciones y explicar el funcionamiento de las interrupciones en
los microcontroladores
2. Describir el problema de datos compartidos.
3. Adquirir buenas prácticas de codificación y documentación del código.
Objetivos particulares
1. Simulación de interrupciones con IAR: definidas previamente (ocurrencia única, periódicas) y
forzadas.
2. Provocar una inconsistencia de datos mediante simulación de interrupciones.
3. Escribir rutinas de servicio a interrupciones que eviten el problema de datos compartidos, utilizando
una solución básica.
4. Verificar el funcionamiento en el hardware.
5. Documentar correctamente todo el código utilizando Doxygen.
Material
Hardware
•
Plataforma de desarrollo Launchpad MSP-EXP430G2 basado en un MSP430G2553.
1/4
Evaluación
Los docentes evaluarán el trabajo de cada estudiante durante todo el laboratorio, dando asistencia cuando
sea requerida al igual que sugerencias y comentarios conceptuales de la actividad del estudiante. Cada
estudiante será evaluado considerando: i) si las tareas previas se realizaron correctamente, ii) si todas las
tareas indicadas en este laboratorio se completan en tiempo, iii) las respuestas al cuestionario, iv) si las
propuestas de solución para las tareas indicadas a lo largo de la letra son realizadas correctamente y v) si
los comentarios introducidos en los programas siguen las recomendaciones provistas en los ejemplos que
se encuentra en la web del curso.
Actividades a Realizar
El sistema de desarrollo Launchpad MSP-EXP430G2 contiene un MSP430G2553. Además la placa de
desarrollo tiene soldado un cristal externo de 32768 Hz conectado a los pines XIN y XOUT del MCU, el cual
se usará como base de tiempo.
Se programará y probará una aplicación en la que, usando como base ese reloj, el TIMER_A genere una
interrupción cada 250 ms para actualizar un reloj de tiempo real como el desarrollado en el Laboratorio 2
(en adelante, módulo RTC).
Tareas previas
Al llegar al laboratorio se deberá entregar de forma impresa:
1. Código comentado utilizando doxygen (siguendo el ejemplo de comentarios que se encuentra en la
web del curso) del módulo RTC realizado en el laboratorio 2.
2. Código del módulo timer conteniendo
1. Rutina de inicialización del timer, detallando el contenido de cada registro involucrado.
Considerar la programación del timer y la del módulo generador de relojes internos (Basic
Clock Module+). Los comentarios deben explicar claramente cómo se obtiene el "tick" de
250 ms utilizando el Timer A del microcontrolador.
2. Aplicación de prueba del timer en la que una rutina de atención a la interrupción (ISR)
conmute un LED en cada interrupción.
Al inicio del laboratorio el grupo demostrará:
1. El módulo RTC del laboratorio 2 con una pequeña aplicación de test que muestre que funciona
correctamente.
2. Aplicación de prueba del timer que muestre el funcionamiento de la ISR conmutando un LED en
cada interrupción (resultando en 2 destellos por segundo).
Sugerencia: En el programa principal probar el módulo llamando alternadamente (en un bucle infinito) la
función para incrementar el tiempo y la función que lee el tiempo (y lo guarda en una variable accesible
desde main para luego inspeccionarla en memoria).
2/4
Actividades a realizar durante el Laboratorio
Temporizador hardware
En esta parte se modificará el código de prueba del módulo RTC para que el tiempo sea incrementado por
un temporizador hardware. La función que incrementa el tiempo se llamará desde la rutina de atención a la
interrupción del temporizador hardware.
Configuración y manejo de la interrupción
1. Utilizar las rutinas de configuración del reloj y de inicialización del timer presentadas en las tareas
previas.
2. Escribir la rutina de atención a la interrupción del timer. La misma llamará a la función que
incrementa el temporizador. Recordar habilitar las interrupciones en el programa principal antes de
entrar al bucle infinito.
Para verificar el correcto funcionamiento, conmutar un LED cuando se pruebe en el hardware.
Simulación de la interrupción
1. Seguir los pasos indicados en el manual “IAR Embedded Workbench® IDE for MSP430 - User
Guide” (Part 5 - Simulating interrupts) para configurar la simulación de la interrupción. En particular
recordar incluir el archivo de descripción del dispositivo en las opciones del proyecto (Device
description file en las opciones del Debugger).
Se sugiere utilizar 5000 ciclos para la primera activación y para el período de repetición.
2. Simular la aplicación, verificar que la rutina de atención es llamada y que el programa funciona
correctamente.
3. Provocar una inconsistencia de datos (problema de datos compartidos) forzando una interrupción en
el instante adecuado y observando cómo se obtiene un dato de tiempo corrupto.
4. Modificar el código para asegurar que no se produce el problema de datos compartidos.
Depurado
En esta parte se probará la aplicación en hardware, previamente habiendo simulado la misma y verificado
su correcto funcionamiento. Recordar seleccionar el debugger adecuado en las opciones del proyecto (en la
ficha Setup de Category: Debugger) y la conexión adecuada (TI USB-IF).
IMPORTANTE: En la ficha Download, asegurarse que NO estén marcadas las opciones “Allow
Erase/Write ...” y elegir UNICAMENTE la opción “Erase Main Memory”. NO marcar la opción “Erase
Main Memory and Information Memory”
Nota: Si se realiza un watch sobre una bandera de una interrupción, al ser leída por el debugger se
reseteará.
3/4
Lecturas recomendadas
•
Problema de datos compartidos:
“An Embedded Software Primer", Chapter 4: Interrupts, Section 4.3: The Shared-Data
Problem
•
•
Hojas de datos del MSP430G2553 (http://www.ti.com/product/msp430g2553):
•
MSP430G2x53, MSP430G2x13 Mixed Signal Microcontroller (Rev. J)
•
MSP430G2553 Device Erratasheet (Rev. D)
•
MSP430x2xx Family User's Guide (Rev. J)
Descripción del módulo de desarrollo:
•
•
MSP-EXP430G2 LaunchPad Evaluation Kit User's Guide (Rev. E)
(http://www.ti.com/lit/pdf/slau318)
"MSP430 IAR Embedded Workbench(R) IDE User Guide for Texas Instruments’ MSP430
Microcontroller Family",. [EW430_UserGuide.pdf]
•
Part. 2. Tutorials, Simulating an interrupt
•
Part 5. IAR C-SPY Simulator, Simulating interrupts
•
"Implementing a Real-Time Clock on the MSP430", Application Report, January 2001. [slaa076.pdf]
•
“MSP430 Microcontroller Basics”, Chapter 8: Timers, John Davies, 2008.
4/4
Descargar