Cambio de pin de entrada digital a PA10

Dependencies:   BufferedSerial PinDetect mbed

Fork of DTK-MEGAPACA_NUCLEO by Felícito Manzano

Committer:
fmanzano_dtk
Date:
Fri Jan 19 18:43:47 2018 +0000
Revision:
7:0ec9cc5b9fe0
Parent:
6:e0f528571367
Child:
8:f71b44b139f6
Se agrega filtrado de OK enviados constantemente por el GV300. Se elimina libreria para maple mini que no es necesaria en el nucleo. Se cambio pin de MYLED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmanzano_dtk 6:e0f528571367 1 /*
fmanzano_dtk 6:e0f528571367 2 * - Proyecto: Apagado Temporizado MEGAPACA
fmanzano_dtk 6:e0f528571367 3 * - Lenguaje: ANSI C/C++ (mbed)
fmanzano_dtk 6:e0f528571367 4 * - Tarjeta: NUCLEO F303K8
fmanzano_dtk 6:e0f528571367 5 * - Referencias:
fmanzano_dtk 6:e0f528571367 6 * - Fecha: 2017/Septiembre
fmanzano_dtk 6:e0f528571367 7 * - Autor(es): Felícito Manzano /
fmanzano_dtk 6:e0f528571367 8 Mario Vargas
fmanzano_dtk 6:e0f528571367 9 * - Compañia: V.S.R. de Centroamérica
fmanzano_dtk 6:e0f528571367 10 * - País: SV / CR
fmanzano_dtk 6:e0f528571367 11 */
fmanzano_dtk 6:e0f528571367 12
hudakz 0:d81be2ce0c05 13 #include "mbed.h"
fmanzano_dtk 6:e0f528571367 14 #include "BufferedSerial.h"
fmanzano_dtk 6:e0f528571367 15 #include "constantes.hpp"
fmanzano_dtk 6:e0f528571367 16 #include "funciones_basicas.h"
fmanzano_dtk 6:e0f528571367 17
fmanzano_dtk 6:e0f528571367 18 /* CONFIGURACIÓN DE HARDWARE
fmanzano_dtk 6:e0f528571367 19 ************************************** */
fmanzano_dtk 6:e0f528571367 20 BufferedSerial gv300(PA_9, PA_10);
fmanzano_dtk 6:e0f528571367 21 Serial pcusb(USBTX, USBRX);
fmanzano_dtk 6:e0f528571367 22 InterruptIn input(PB_5);
fmanzano_dtk 7:0ec9cc5b9fe0 23 DigitalOut myled(PB_3);
fmanzano_dtk 6:e0f528571367 24
fmanzano_dtk 6:e0f528571367 25 // DECLARACIÓN DE VARIABLES
fmanzano_dtk 6:e0f528571367 26 //**************************************
fmanzano_dtk 6:e0f528571367 27 float tiempo_actual = 0.0; // Para almacenar el valor del temporizador
fmanzano_dtk 6:e0f528571367 28 int contador_tramas = 2; // Para contar las tramas enviadas a SKT300
fmanzano_dtk 6:e0f528571367 29 int factor = 1; // Para multiplicar
fmanzano_dtk 6:e0f528571367 30 int i = 0; // Uso genérico
fmanzano_dtk 6:e0f528571367 31 int apagar = 0;
fmanzano_dtk 6:e0f528571367 32 char skytrack_frame[128]; // Salida de datos para SKT300
fmanzano_dtk 6:e0f528571367 33 char buffered_frame[128]; // Salida temporal de datos
fmanzano_dtk 6:e0f528571367 34
fmanzano_dtk 6:e0f528571367 35 // DECLARACIÓN DE TEMPORIZADORES
fmanzano_dtk 6:e0f528571367 36 //**************************************
fmanzano_dtk 6:e0f528571367 37 Timer funcionando; // Temporizador para generar el motivo por tiempo de lectura de la tarjeta NUCLEO
fmanzano_dtk 6:e0f528571367 38 Timer apagando_cp; // Temporizador para consultar el estatus de la puerta.
fmanzano_dtk 6:e0f528571367 39
fmanzano_dtk 6:e0f528571367 40
fmanzano_dtk 6:e0f528571367 41 void pressed_f()
fmanzano_dtk 6:e0f528571367 42 {
fmanzano_dtk 6:e0f528571367 43 apagar = 1;
fmanzano_dtk 6:e0f528571367 44 }
fmanzano_dtk 6:e0f528571367 45
hudakz 0:d81be2ce0c05 46 int main() {
fmanzano_dtk 6:e0f528571367 47 // CONFIGURAR INTERFACES
fmanzano_dtk 6:e0f528571367 48 //***********************************
fmanzano_dtk 6:e0f528571367 49 gv300.baud(115200);
fmanzano_dtk 6:e0f528571367 50 pcusb.baud(115200);
fmanzano_dtk 6:e0f528571367 51 input.fall(&pressed_f);
fmanzano_dtk 6:e0f528571367 52 wait(1.0);
fmanzano_dtk 6:e0f528571367 53 booting_gtdat(&gv300, &pcusb);
hudakz 3:98990a014463 54
fmanzano_dtk 6:e0f528571367 55 // Inicio de temporizadores y RTC
fmanzano_dtk 6:e0f528571367 56 funcionando.start();
hudakz 3:98990a014463 57
hudakz 0:d81be2ce0c05 58 while(1) {
fmanzano_dtk 6:e0f528571367 59 myled = !myled;
fmanzano_dtk 6:e0f528571367 60 wait(0.5);
fmanzano_dtk 6:e0f528571367 61
fmanzano_dtk 6:e0f528571367 62 // CONSULTAR SI SE HA PRESIONADO EL BOTÓN
fmanzano_dtk 6:e0f528571367 63 if (apagar) {
fmanzano_dtk 6:e0f528571367 64 pcusb.printf("\r\nBoton de panico presionado.\r\n");
fmanzano_dtk 6:e0f528571367 65 pcusb.printf("Apagando en T-15\r\n");
fmanzano_dtk 6:e0f528571367 66 apagar = 0;
fmanzano_dtk 6:e0f528571367 67 apagando_cp.start();
fmanzano_dtk 6:e0f528571367 68 sprintf(skytrack_frame, "%s%s%04X%s\r\n",
fmanzano_dtk 6:e0f528571367 69 ALIVE, FIN_CABECERA_TX, contador_tramas, ULTIMO_CARACTER);
fmanzano_dtk 6:e0f528571367 70 gv300.printf("%s\r\n", skytrack_frame);
fmanzano_dtk 6:e0f528571367 71 pcusb.printf("Iniciando temporizador 15 min.\r\n");
fmanzano_dtk 6:e0f528571367 72 memset(skytrack_frame, '\0', sizeof(skytrack_frame)); // Vaciar el buffer de Skytrack Frame
fmanzano_dtk 6:e0f528571367 73 incrementar_trama(&contador_tramas);
fmanzano_dtk 6:e0f528571367 74
fmanzano_dtk 6:e0f528571367 75 }
fmanzano_dtk 6:e0f528571367 76
fmanzano_dtk 6:e0f528571367 77 // VALIDAR SI SE DEBE ABORTAR
fmanzano_dtk 6:e0f528571367 78 // Leer puerto Serial
fmanzano_dtk 6:e0f528571367 79 i = leer_uart(&gv300, buffered_frame);
fmanzano_dtk 6:e0f528571367 80 if (i) {
fmanzano_dtk 6:e0f528571367 81 pcusb.printf("Trama recibida...\r\n");
fmanzano_dtk 6:e0f528571367 82 i = procesar_trama(buffered_frame);
fmanzano_dtk 6:e0f528571367 83 if(i == 1) { // 1 = ABORTAR
fmanzano_dtk 6:e0f528571367 84 apagando_cp.stop();
fmanzano_dtk 6:e0f528571367 85 apagando_cp.reset();
fmanzano_dtk 6:e0f528571367 86 factor = 1;
fmanzano_dtk 6:e0f528571367 87 gv300.printf("%s\r\n", CANC_SHUTDOWN);
fmanzano_dtk 6:e0f528571367 88 pcusb.printf("Apagado por panico ABORTADO.\r\n");
fmanzano_dtk 7:0ec9cc5b9fe0 89 } else if (i == 3){
fmanzano_dtk 7:0ec9cc5b9fe0 90 // Nada por hacer por el OK
fmanzano_dtk 6:e0f528571367 91 } else {
fmanzano_dtk 6:e0f528571367 92 pcusb.printf("Trama DESCONOCIDA.\r\n");
fmanzano_dtk 6:e0f528571367 93 }
fmanzano_dtk 6:e0f528571367 94 }
fmanzano_dtk 6:e0f528571367 95
fmanzano_dtk 6:e0f528571367 96 // CONSULTAR SI SE DEBE APAGAR
fmanzano_dtk 6:e0f528571367 97 tiempo_actual = apagando_cp.read(); // Leer el temporizador de Heartbeat
fmanzano_dtk 6:e0f528571367 98 if (tiempo_actual >= (MINUTO * factor)) {
fmanzano_dtk 6:e0f528571367 99 pcusb.printf("Apagando en T-%d\r\n", (T_15 - factor));
fmanzano_dtk 6:e0f528571367 100 factor++;
fmanzano_dtk 6:e0f528571367 101 }
fmanzano_dtk 6:e0f528571367 102
fmanzano_dtk 6:e0f528571367 103 if (tiempo_actual >= TIME_SHUTDOWN) {
fmanzano_dtk 6:e0f528571367 104 pcusb.printf("Apangado en progreso...\r\n");
fmanzano_dtk 6:e0f528571367 105 apagando_cp.stop();
fmanzano_dtk 6:e0f528571367 106 apagando_cp.reset();
fmanzano_dtk 6:e0f528571367 107 factor = 1;
fmanzano_dtk 6:e0f528571367 108 gv300.printf("%s\r\n", SHUTDOWN_TXT);
fmanzano_dtk 6:e0f528571367 109 wait_ms(T_TX);
fmanzano_dtk 6:e0f528571367 110 // Leer puerto Serial
fmanzano_dtk 6:e0f528571367 111 i = leer_uart(&gv300, buffered_frame);
fmanzano_dtk 6:e0f528571367 112 if (i) {
fmanzano_dtk 6:e0f528571367 113 // Confirmar resultado de Apagado
fmanzano_dtk 6:e0f528571367 114 i = procesar_trama(buffered_frame);
fmanzano_dtk 6:e0f528571367 115 if (i == 2) { // +ACK
fmanzano_dtk 6:e0f528571367 116 gv300.printf("%s\r\n", SHUTDOWN_DONE);
fmanzano_dtk 6:e0f528571367 117 pcusb.printf("Apagado remoto +EXITOSO!\r\n");
fmanzano_dtk 6:e0f528571367 118 } else {
fmanzano_dtk 6:e0f528571367 119 gv300.printf("%s\r\n", SHUTDOWN_ERRO);
fmanzano_dtk 6:e0f528571367 120 pcusb.printf("Apagado remoto -FALLIDO!\r\n");
fmanzano_dtk 6:e0f528571367 121 }
fmanzano_dtk 6:e0f528571367 122 } else {
fmanzano_dtk 6:e0f528571367 123 gv300.printf("%s\r\n", SHUTDOWN_ERRO);
fmanzano_dtk 6:e0f528571367 124 pcusb.printf("Apagado remoto -FALLIDO!\r\n");
fmanzano_dtk 6:e0f528571367 125 }
fmanzano_dtk 6:e0f528571367 126 }
fmanzano_dtk 6:e0f528571367 127
fmanzano_dtk 6:e0f528571367 128 // ENVIAR HEARTBEAT A SKYTRACK
fmanzano_dtk 6:e0f528571367 129 tiempo_actual = funcionando.read(); // Leer el temporizador de Heartbeat
fmanzano_dtk 6:e0f528571367 130 if (tiempo_actual >= TIME_HEARTBEAT) {
fmanzano_dtk 6:e0f528571367 131 pcusb.printf("\r\nMultipuertos estable.\r\n");
fmanzano_dtk 6:e0f528571367 132 funcionando.reset();
fmanzano_dtk 6:e0f528571367 133 sprintf(skytrack_frame, "%s%s%04X%s\r\n",
fmanzano_dtk 6:e0f528571367 134 ALIVE, FIN_CABECERA_TX, contador_tramas, ULTIMO_CARACTER);
fmanzano_dtk 6:e0f528571367 135 gv300.printf("%s\r\n", skytrack_frame);
fmanzano_dtk 6:e0f528571367 136 memset(skytrack_frame, '\0', sizeof(skytrack_frame)); // Vaciar el buffer de Skytrack Frame
fmanzano_dtk 6:e0f528571367 137 incrementar_trama(&contador_tramas);
fmanzano_dtk 6:e0f528571367 138 }
hudakz 0:d81be2ce0c05 139 }
fmanzano_dtk 6:e0f528571367 140 }