Uso de interrupciones y puerto serial

Dependencies:   mbed

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. Con ayuda de photosensor para la marcación de los vehículos
  • 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.

La foto indica el programa sin ser activada la interrupción.

https://os.mbed.com/media/uploads/cristhian1987/img_20200220_231530.jpg

Luego de la activaciónde la interrupción, se enciende el LED y una alarma sonoro.

https://os.mbed.com/media/uploads/cristhian1987/img_20200220_230943.jpg

2.- Software HERCULES UTILITIES

https://os.mbed.com/media/uploads/cristhian1987/img_20200220_231003_1.jpg

3.- Desarrollo de líneas de códigos; con sus respectivos comentarios para cada línea

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
}
Revision:
0:9a7dcd5303c5
diff -r 000000000000 -r 9a7dcd5303c5 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Feb 21 04:19:26 2020 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file