Uso de interrupciones y puerto serial
You are viewing an older revision! See the latest version
Homepage
Deber Sistemas Microprocesados¶
PROBLEMA
En este ejercicio básico se repasa el tema de puertos de entrada y salida de la tarjeta ARM; agregando funcionalidades tales como La comunicación serial y las interrupciones.
- Comunicación serial:* Muchos equipos aún trabajan con esta forma de comunicación, en el ejercicio se usa la plataforma Hercules utilities para observar la comunicación efectiva entre la tarjeta y el puerto serial de la PC.
- Interrupciones: * La secuencia de un programa puede verse detenido para realizar otras tareas, siempre y cuando una señal externa previamente indicada tenga validez. Es decir, detener el programa principal para ejecutar órdenes específicas para luego continuar con la tareas del programa principal.
<<ENTRADAS>>
<<PD_12>>
Sensor de Interrupción (Entrada digital que activa la interrupción)
<<PA_2>>
Señal para comunicación serial (Transmisión)
<<PA_3>>
Señal para comunicación serial (Recepción)
<<SALIDAS>>
<<PD_13>>
Pin digital de salida, variable alarma_interrup
<<PD_14>>
Pin digital de salida, variable led. Simula el proceso principal; activación de un LED por cortos tiempo de ON / OFF. cada (2 segundos)
SOLUCIONES:
Estos temas mencionados pueden ser soluciones para diferentes proyectos entre los cuales tenemos:
- Contador de vehículos en un parqueadero.
- Contador de productos en una banda transportadora.
- Activación de una alarma de seguridad; haciendo válido una señal principal para cualquier evento; es decir no importa que pase en el desarrollo del programa de vigilancia. cuando el sensor se activa la interrupción hace su trabajo.
- En ventanillas de atención al cliente puede activarse una señal cuando el puesto esté disponible para atención.
DESARROLLO:
1.- Circuito electrónico:
Consiste en activar una señal sonora junto con un LED, indicando que la interrupción es correcta.
2.- Software HERCULES UTILITIES
include the mbed library with this snippet
#include "mbed.h" InterruptIn sensor(PD_12); // Entrada digital que activa la interrupción Serial pc(PA_2,PA_3,115200); // Variable (pc) para comunicación serial PA_2 y PA_3 a una velocidad de 115200 DigitalOut alarma_interrup(PD_13); // Pin digital de salida, variable alarma_interrup direccionado al pin PD_13 DigitalOut led(PD_14); // Pin digital de salida, variable LED al pin PD_14 simulando un ejecución de programa int Contador = 0; // variable entera llamada Contador void activa(void); // Llamado de función "activa" int main() { sensor.rise(&activa); // Relaciona la señal de interrupción y la función creada while(1) { // Desarrollo del programa base. led = 1; wait(0.2); led = 0; wait(0.2); } } void activa() // Ejecución de la función "activa" /* Activa un señal de alarma, y envía un conteo por medio del puerto serial; esto puede ser mostrado por el programa Hercules Utilities. */ { alarma_interrup = 1; wait(0.2); alarma_interrup = 0; Contador = Contador++; // Contador aumentando el valor en 1 pc.printf("El programa se ha interrumpido %d veces\n\r",Contador); // Cadena de caracteres enviadas por el puerto serial }