Programa Teste para monitoramento de ativos eletricos

Dependencies:   logger

Committer:
AndersonIctus (anderson.ictus@gmail.com)
Date:
Wed May 08 21:36:20 2019 -0300
Revision:
4:bdc930225ade
Parent:
2:b5367cf9b453
Child:
5:1b0cd3a1f3c7
#Teste com Threads, EventQueues e Interrupcao
---------------------------------------------------------
* Verificando como EventQueus funcionam Junto a Threads
* Fazendo um teste com uma interrup??o (IRQ)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndersonIctus 0:4084d6adce18 1 #include "mbed.h"
AndersonIctus 0:4084d6adce18 2 #include "Logger.h"
AndersonIctus 0:4084d6adce18 3
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 4 #include "Temperatura.h"
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 5 #include "Giroscopio.h"
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 6 #include "GPS.h"
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 7
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 8 #define ONE_SECOND 1000
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 9
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 10 #define MBED_CONF_EVENTS_PRESENT
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 11 #define MBED_CONF_RTOS_PRESENT
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 12 #define DEVICE_INTERRUPTIN
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 13
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 14 DigitalOut led1 (LED1);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 15
AndersonIctus 0:4084d6adce18 16 Logger l;
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 17 Temperatura temp;
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 18 Giroscopio giro;
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 19 GPS gps;
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 20
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 21 InterruptIn btn(BUTTON1);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 22
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 23 EventQueue eventQueue1;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 24 EventQueue eventQueue2;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 25
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 26 void interrupcaoMovimentacao() {
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 27 gps.enviaLocalizacao(10);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 28 }
AndersonIctus 0:4084d6adce18 29
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 30 void lancaMetodo() {
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 31 led1 = 1;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 32 temp.verificaTemperatura();
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 33 wait(0.4);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 34 led1 = 0;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 35 }
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 36
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 37 void contaFinalFuncao() {
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 38 int count = 0;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 39 while(count++ < 10) {
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 40 sprintf(l.buffer, "Contando ... %d", count);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 41 l.log(l.buffer);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 42 wait(1.0f);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 43 }
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 44
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 45 // eventQueue3.break_dispatch();
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 46 }
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 47
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 48 // IRQ CONTEXT !! (n pode haver LOG NA SERIAL NESSE CONTEXTO)
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 49 void button_pressed() {
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 50 eventQueue2.call(&contaFinalFuncao);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 51 }
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 52
AndersonIctus 0:4084d6adce18 53 int main() {
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 54 // Sistema.inicializar(/*Confs iniciais do sistema*/);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 55 temp.setLog(&l);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 56 giro.setLog(&l);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 57 gps.setLog(&l);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 58
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 59 Thread eventThread(osPriorityNormal);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 60 eventThread.start(callback(&eventQueue1, &EventQueue::dispatch_forever));
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 61
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 62 // call blink_led2 every second, automatically defering to the eventThread
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 63 Ticker ledTicker;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 64 ledTicker.attach(eventQueue1.event(&lancaMetodo), 5.0f);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 65
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 66 // 1 - Fazer um time out para verificar a temperatura a cada 15 Minutos
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 67 // Ticker tempTimeOut;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 68 // tempTimeOut.attach(
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 69 // eventQueue.event(&lancaMetodo),
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 70 // 3.0f);
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 71
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 72 // 2 - Verificar se houve alguma mudança no Giroscópio
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 73 // OBSERVA O EVENTO DE HAVER MUDANÇA
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 74 giro.ouvirMovimentacao( &interrupcaoMovimentacao );
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 75
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 76 Thread eventThread_count(osPriorityNormal);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 77 eventThread_count.start(callback(&eventQueue2, &EventQueue::dispatch_forever));
AndersonIctus (anderson.ictus@gmail.com) 2:b5367cf9b453 78
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 79 btn.fall(&button_pressed);
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 80
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 81 led1 = 0;
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 82 l.log("FINAL do main ... !");
AndersonIctus (anderson.ictus@gmail.com) 4:bdc930225ade 83 wait(osWaitForever);
AndersonIctus 0:4084d6adce18 84 }