Anderson Cunha
/
monitoramento_ativos
Programa Teste para monitoramento de ativos eletricos
main.cpp@4:bdc930225ade, 2019-05-08 (annotated)
- 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?
User | Revision | Line number | New 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 | } |