teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
main.cpp@34:348991c54ff3, 2018-06-02 (annotated)
- Committer:
- brunofgc
- Date:
- Sat Jun 02 14:48:26 2018 +0000
- Revision:
- 34:348991c54ff3
- Parent:
- 33:a60abda630f7
- Child:
- 35:11a51a36c494
vers?o 30/05/2018 Ainda dando WDT com Bootloader
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunofgc | 0:1c0a769988ee | 1 | #include "mbed.h" //API mBed com diversos drivers para os periféricos LPC1768 |
brunofgc | 0:1c0a769988ee | 2 | #include "stdio.h" |
brunofgc | 0:1c0a769988ee | 3 | #include "cmsis_os.h" //Nucleo do Real Time Operational System |
brunofgc | 0:1c0a769988ee | 4 | #include "main.h" //Inicializações de maquina e demais ajustes de hardware |
brunofgc | 0:1c0a769988ee | 5 | #include "funcoesSDCard.h" //Funções para manipulação do SDCard que incluem rotinas de inicialização, setar pastas e arquivos e demais usos |
brunofgc | 0:1c0a769988ee | 6 | #include "RTC.h" //API de uso das interrupções do Real Time Clock |
brunofgc | 0:1c0a769988ee | 7 | #include "serialPC.h" //Funções de comunicação entre RAD e PC via usb |
brunofgc | 0:1c0a769988ee | 8 | #include "modbusMaster1.h" |
brunofgc | 13:b9183b4bc049 | 9 | //#include "lpc17xx_nvic.h" |
brunofgc | 13:b9183b4bc049 | 10 | |
brunofgc | 0:1c0a769988ee | 11 | |
brunofgc | 7:ae9c47f62946 | 12 | //Definições de Hardware acessÃveis em qualquer modulo |
brunofgc | 7:ae9c47f62946 | 13 | /*LEDs de informação visual*/ |
brunofgc | 7:ae9c47f62946 | 14 | DigitalOut ledLigado(P1_0); |
brunofgc | 7:ae9c47f62946 | 15 | DigitalOut ledEmComunicacao(P1_1); |
brunofgc | 7:ae9c47f62946 | 16 | DigitalOut ledConectadoInternet(P1_4); |
brunofgc | 7:ae9c47f62946 | 17 | DigitalOut ledUsoGeral(P1_8); |
brunofgc | 7:ae9c47f62946 | 18 | /*LEDs de informação visual*/ |
brunofgc | 7:ae9c47f62946 | 19 | |
brunofgc | 7:ae9c47f62946 | 20 | /*Pinos de controle do modulo WiFi*/ |
brunofgc | 0:1c0a769988ee | 21 | DigitalOut ESP_CH_PD(P0_6); |
brunofgc | 0:1c0a769988ee | 22 | DigitalOut ESP_RESET(P0_0); |
brunofgc | 0:1c0a769988ee | 23 | DigitalOut ESP_ESPGPIO_2(P0_1); |
brunofgc | 7:ae9c47f62946 | 24 | /*Pinos de controle do modulo WiFi*/ |
brunofgc | 0:1c0a769988ee | 25 | |
brunofgc | 7:ae9c47f62946 | 26 | /*Interrupções externas para contagem de pulsos rapidos*/ |
brunofgc | 6:d4ebbaaba295 | 27 | InterruptIn eInt1(P2_11); |
brunofgc | 6:d4ebbaaba295 | 28 | InterruptIn eInt2(P2_12); |
brunofgc | 6:d4ebbaaba295 | 29 | InterruptIn eInt3(P2_13); |
brunofgc | 7:ae9c47f62946 | 30 | /*Interrupções externas para contagem de pulsos rapidos*/ |
brunofgc | 6:d4ebbaaba295 | 31 | |
brunofgc | 21:b9315cdd9275 | 32 | /*Leituras analógicas*/ |
brunofgc | 21:b9315cdd9275 | 33 | /*AnalogIn ain1(p17); |
brunofgc | 21:b9315cdd9275 | 34 | AnalogIn ain2(p18); |
brunofgc | 21:b9315cdd9275 | 35 | AnalogIn ain3(p19); |
brunofgc | 21:b9315cdd9275 | 36 | AnalogIn ain4(p20);*/ |
brunofgc | 21:b9315cdd9275 | 37 | /*Leituras analógicas*/ |
brunofgc | 21:b9315cdd9275 | 38 | |
brunofgc | 7:ae9c47f62946 | 39 | //Função para reset do ARM |
brunofgc | 0:1c0a769988ee | 40 | extern "C" void mbed_reset(); |
brunofgc | 0:1c0a769988ee | 41 | |
brunofgc | 30:8a06a85d8807 | 42 | //Devices |
brunofgc | 0:1c0a769988ee | 43 | uint8_t devices=0; |
brunofgc | 30:8a06a85d8807 | 44 | uint16_t alarmes=0; |
brunofgc | 30:8a06a85d8807 | 45 | uint16_t leituras=0; |
brunofgc | 30:8a06a85d8807 | 46 | uint16_t qtdSchedules=0; |
brunofgc | 30:8a06a85d8807 | 47 | uint16_t qtdScheduleExceptions=0; |
brunofgc | 0:1c0a769988ee | 48 | //Devices |
brunofgc | 0:1c0a769988ee | 49 | |
brunofgc | 0:1c0a769988ee | 50 | //Variáveis para envio de arquivo em qualquer lugar do código |
brunofgc | 0:1c0a769988ee | 51 | extern arquivoSD *arquivoEnvioPointer = NULL; |
brunofgc | 0:1c0a769988ee | 52 | |
brunofgc | 7:ae9c47f62946 | 53 | uint32_t act; |
brunofgc | 7:ae9c47f62946 | 54 | bool boolExecAct; |
brunofgc | 7:ae9c47f62946 | 55 | bool inicializaModemBool; |
brunofgc | 21:b9315cdd9275 | 56 | char debug = false; |
brunofgc | 30:8a06a85d8807 | 57 | char xeretaModem = false; |
brunofgc | 0:1c0a769988ee | 58 | bool hardwareReset = false; |
brunofgc | 30:8a06a85d8807 | 59 | char firmVersion[20]; |
brunofgc | 33:a60abda630f7 | 60 | char resetCauses[30]; |
brunofgc | 0:1c0a769988ee | 61 | |
brunofgc | 0:1c0a769988ee | 62 | |
brunofgc | 0:1c0a769988ee | 63 | MediaMovel FiltroAI4(5); |
brunofgc | 0:1c0a769988ee | 64 | MediaMovel FiltroAI3(5); |
brunofgc | 0:1c0a769988ee | 65 | MediaMovel FiltroAI2(5); |
brunofgc | 0:1c0a769988ee | 66 | MediaMovel FiltroAI1(5); |
brunofgc | 0:1c0a769988ee | 67 | |
brunofgc | 0:1c0a769988ee | 68 | uint16_t aiFiltrada[4]; |
brunofgc | 0:1c0a769988ee | 69 | bool entradasDigitais[9]; |
brunofgc | 0:1c0a769988ee | 70 | |
brunofgc | 30:8a06a85d8807 | 71 | CircularBuffer bufModem(maxBufInModem);// __attribute__ ((section("AHBSRAM0"))); |
brunofgc | 0:1c0a769988ee | 72 | CircularBuffer bufPC(128); |
brunofgc | 2:55b7b466e742 | 73 | CircularBuffer sdCardBuf(1024); |
brunofgc | 0:1c0a769988ee | 74 | |
brunofgc | 0:1c0a769988ee | 75 | uint8_t enviaDadosPorAlarme = 255; |
brunofgc | 2:55b7b466e742 | 76 | //bool reportaMudancaAoServer; |
brunofgc | 0:1c0a769988ee | 77 | bool executaComandoServer; |
brunofgc | 7:ae9c47f62946 | 78 | |
brunofgc | 0:1c0a769988ee | 79 | //typeConfig flashConfig; |
brunofgc | 0:1c0a769988ee | 80 | |
brunofgc | 7:ae9c47f62946 | 81 | //Instancia das portas Seriais do ARM |
brunofgc | 0:1c0a769988ee | 82 | Serial pc(USBTX, USBRX); //Instancia de recurso Serial uart pc |
brunofgc | 7:ae9c47f62946 | 83 | Serial modem(P0_10,P0_11); //Instancia de recurso Serial uart Modem |
brunofgc | 0:1c0a769988ee | 84 | DigitalOut max_de(P2_7); //Pino de habilitação max485 para porta Energy Metering ModBus |
brunofgc | 0:1c0a769988ee | 85 | Serial modBusMaster1Serial(P2_0,P2_1); //Recurso serial para porta Energy Metering ModBus |
brunofgc | 0:1c0a769988ee | 86 | |
brunofgc | 0:1c0a769988ee | 87 | /* |
brunofgc | 0:1c0a769988ee | 88 | //Interrupções externas e botões |
brunofgc | 0:1c0a769988ee | 89 | InterruptIn int_wh(P2_11); |
brunofgc | 0:1c0a769988ee | 90 | InterruptIn int_varh(P2_12); |
brunofgc | 0:1c0a769988ee | 91 | |
brunofgc | 0:1c0a769988ee | 92 | void whCount(void){ |
brunofgc | 0:1c0a769988ee | 93 | whled=1; |
brunofgc | 0:1c0a769988ee | 94 | wait(0.2); |
brunofgc | 0:1c0a769988ee | 95 | whled=0; |
brunofgc | 0:1c0a769988ee | 96 | } |
brunofgc | 0:1c0a769988ee | 97 | |
brunofgc | 0:1c0a769988ee | 98 | void varhCount(void){ |
brunofgc | 0:1c0a769988ee | 99 | varhled=1; |
brunofgc | 0:1c0a769988ee | 100 | wait(0.2); |
brunofgc | 0:1c0a769988ee | 101 | varhled=0; |
brunofgc | 0:1c0a769988ee | 102 | }*/ |
brunofgc | 0:1c0a769988ee | 103 | //Definições de Hardware acessÃveis em qualquer modulo |
brunofgc | 0:1c0a769988ee | 104 | |
brunofgc | 0:1c0a769988ee | 105 | /* |
brunofgc | 0:1c0a769988ee | 106 | void loadStandardConfig(){ |
brunofgc | 0:1c0a769988ee | 107 | strcpy(flashConfig.apnList[0],"claro.com.br"); |
brunofgc | 0:1c0a769988ee | 108 | strcpy(flashConfig.apnList[1],"zap.vivo.com.br"); |
brunofgc | 0:1c0a769988ee | 109 | strcpy(flashConfig.apnList[2],"tim.br"); |
brunofgc | 0:1c0a769988ee | 110 | strcpy(flashConfig.apnList[3],"generica.oi.com.br"); |
brunofgc | 0:1c0a769988ee | 111 | |
brunofgc | 0:1c0a769988ee | 112 | strcpy(flashConfig.login[0],"claro"); |
brunofgc | 0:1c0a769988ee | 113 | strcpy(flashConfig.login[1],"vivo"); |
brunofgc | 0:1c0a769988ee | 114 | strcpy(flashConfig.login[2],"tim"); |
brunofgc | 0:1c0a769988ee | 115 | strcpy(flashConfig.login[3],"oi"); |
brunofgc | 0:1c0a769988ee | 116 | |
brunofgc | 0:1c0a769988ee | 117 | strcpy(flashConfig.senha[0],"claro"); |
brunofgc | 0:1c0a769988ee | 118 | strcpy(flashConfig.senha[1],"vivo"); |
brunofgc | 0:1c0a769988ee | 119 | strcpy(flashConfig.senha[2],"tim"); |
brunofgc | 0:1c0a769988ee | 120 | strcpy(flashConfig.senha[3],"oi"); |
brunofgc | 0:1c0a769988ee | 121 | |
brunofgc | 2:55b7b466e742 | 122 | strcpy(flashConfig.serverAddress,serverAddress); |
brunofgc | 0:1c0a769988ee | 123 | |
brunofgc | 0:1c0a769988ee | 124 | strcpy(flashConfig.serverPort,"80"); |
brunofgc | 0:1c0a769988ee | 125 | |
brunofgc | 0:1c0a769988ee | 126 | flashConfig.periodoDeEnvioDeDadosMinutos=15; //Padrão 15 minutos |
brunofgc | 0:1c0a769988ee | 127 | flashConfig.ultimoEstadoLigadoDesligado=0; //Padrão de fábrica desligado |
brunofgc | 0:1c0a769988ee | 128 | } |
brunofgc | 0:1c0a769988ee | 129 | */ |
brunofgc | 0:1c0a769988ee | 130 | |
brunofgc | 0:1c0a769988ee | 131 | void leiturasDigitais(){ |
brunofgc | 0:1c0a769988ee | 132 | entradasDigitais[0] = ED1; |
brunofgc | 0:1c0a769988ee | 133 | entradasDigitais[1] = ED2; |
brunofgc | 0:1c0a769988ee | 134 | entradasDigitais[2] = ED3; |
brunofgc | 0:1c0a769988ee | 135 | entradasDigitais[3] = ED4; |
brunofgc | 0:1c0a769988ee | 136 | entradasDigitais[4] = ED5; |
brunofgc | 0:1c0a769988ee | 137 | entradasDigitais[5] = ED6; |
brunofgc | 0:1c0a769988ee | 138 | entradasDigitais[6] = ED7; |
brunofgc | 0:1c0a769988ee | 139 | entradasDigitais[7] = ED8; |
brunofgc | 0:1c0a769988ee | 140 | entradasDigitais[8] = ED9; |
brunofgc | 0:1c0a769988ee | 141 | } |
brunofgc | 0:1c0a769988ee | 142 | |
brunofgc | 21:b9315cdd9275 | 143 | HighSpeedAnalogIn ain(p17, p18, p19, p20); |
brunofgc | 0:1c0a769988ee | 144 | |
brunofgc | 0:1c0a769988ee | 145 | void leiturasAnalogicas(){ |
brunofgc | 21:b9315cdd9275 | 146 | static uint8_t leituraAtual; |
brunofgc | 21:b9315cdd9275 | 147 | switch(leituraAtual){ |
brunofgc | 21:b9315cdd9275 | 148 | case 0: |
brunofgc | 21:b9315cdd9275 | 149 | aiFiltrada[0] = FiltroAI1.get(ain.read_u16(p17)); |
brunofgc | 21:b9315cdd9275 | 150 | break; |
brunofgc | 21:b9315cdd9275 | 151 | case 1: |
brunofgc | 21:b9315cdd9275 | 152 | aiFiltrada[1] = FiltroAI2.get(ain.read_u16(p18)); |
brunofgc | 21:b9315cdd9275 | 153 | break; |
brunofgc | 21:b9315cdd9275 | 154 | case 2: |
brunofgc | 21:b9315cdd9275 | 155 | aiFiltrada[2] = FiltroAI3.get(ain.read_u16(p19)); |
brunofgc | 21:b9315cdd9275 | 156 | break; |
brunofgc | 21:b9315cdd9275 | 157 | case 3: |
brunofgc | 21:b9315cdd9275 | 158 | aiFiltrada[3] = FiltroAI4.get(ain.read_u16(p20)); |
brunofgc | 21:b9315cdd9275 | 159 | break; |
brunofgc | 0:1c0a769988ee | 160 | } |
brunofgc | 21:b9315cdd9275 | 161 | if(leituraAtual<3){leituraAtual++;} |
brunofgc | 21:b9315cdd9275 | 162 | else{leituraAtual=0;} |
brunofgc | 0:1c0a769988ee | 163 | } |
brunofgc | 0:1c0a769988ee | 164 | |
brunofgc | 21:b9315cdd9275 | 165 | void verificaSaidasDigitais(){ |
brunofgc | 21:b9315cdd9275 | 166 | SD_OE_R = 1; |
brunofgc | 21:b9315cdd9275 | 167 | /*if(SD_FAULT){ |
brunofgc | 30:8a06a85d8807 | 168 | if(debug)pc.printf("Fault\r\n"); |
brunofgc | 21:b9315cdd9275 | 169 | }else{ |
brunofgc | 30:8a06a85d8807 | 170 | if(debug)pc.printf("No Fault\r\n"); |
brunofgc | 21:b9315cdd9275 | 171 | }*/ |
brunofgc | 21:b9315cdd9275 | 172 | } |
brunofgc | 4:13ff9c81dc10 | 173 | |
brunofgc | 0:1c0a769988ee | 174 | //Thread timers é utilizada para dar start nos timers de dentro das ISRs de comunicação serial porque não é permitido inicializar osTimers de dentro de ISRs. |
brunofgc | 0:1c0a769988ee | 175 | osThreadId idThreadTimers; |
brunofgc | 0:1c0a769988ee | 176 | void threadTimers(void const *args){ |
brunofgc | 0:1c0a769988ee | 177 | while(true){ |
brunofgc | 30:8a06a85d8807 | 178 | osSignalWait(0x1,1000); //Executo compulsoriamente mesmo que não haja sinal num periodo de 1 segundo |
brunofgc | 30:8a06a85d8807 | 179 | //if(enviaDadosPorAlarme==255){//debug |
brunofgc | 30:8a06a85d8807 | 180 | if(serialPC::startTimer_pacote){ |
brunofgc | 30:8a06a85d8807 | 181 | serialPC::startTimer_pacote = false; |
brunofgc | 30:8a06a85d8807 | 182 | osTimerStart(serialPC::timer_pacote,100); |
brunofgc | 30:8a06a85d8807 | 183 | } |
brunofgc | 30:8a06a85d8807 | 184 | if(serialModem::startTimer_pacote){ |
brunofgc | 30:8a06a85d8807 | 185 | serialModem::startTimer_pacote = false; |
brunofgc | 30:8a06a85d8807 | 186 | osTimerStart(serialModem::timer_pacote,modemCom::timeOutModem); |
brunofgc | 30:8a06a85d8807 | 187 | } |
brunofgc | 30:8a06a85d8807 | 188 | //} |
brunofgc | 0:1c0a769988ee | 189 | if(modBusMaster1::startThreadModBusMaster){ |
brunofgc | 0:1c0a769988ee | 190 | modBusMaster1::startThreadModBusMaster = false; |
brunofgc | 0:1c0a769988ee | 191 | osTimerStart(modBusMaster1::timer_pacote,4); |
brunofgc | 4:13ff9c81dc10 | 192 | } |
brunofgc | 0:1c0a769988ee | 193 | } |
brunofgc | 0:1c0a769988ee | 194 | } |
brunofgc | 9:cf406384efd9 | 195 | osThreadDef(threadTimers, osPriorityNormal, 128); |
brunofgc | 29:823a9da3696b | 196 | |
brunofgc | 0:1c0a769988ee | 197 | |
brunofgc | 0:1c0a769988ee | 198 | osThreadId idThreadProcessaPacote; |
brunofgc | 0:1c0a769988ee | 199 | void threadProcessaPacote(void const *args){ |
brunofgc | 0:1c0a769988ee | 200 | while(true){ |
brunofgc | 29:823a9da3696b | 201 | osSignalWait(0x1,100); //Executo compulsoriamente mesmo que não haja sinal num periodo de 1 segundo |
brunofgc | 4:13ff9c81dc10 | 202 | if(serialModem::processarPacote){ |
brunofgc | 4:13ff9c81dc10 | 203 | serialModem::processarPacote = false; |
brunofgc | 4:13ff9c81dc10 | 204 | modemCom::processaPacote(NULL); |
brunofgc | 21:b9315cdd9275 | 205 | } |
brunofgc | 4:13ff9c81dc10 | 206 | } |
brunofgc | 0:1c0a769988ee | 207 | } |
brunofgc | 23:f3c87afb6548 | 208 | osThreadDef(threadProcessaPacote, osPriorityNormal, DEFAULT_STACK_SIZE); |
brunofgc | 0:1c0a769988ee | 209 | |
brunofgc | 0:1c0a769988ee | 210 | |
brunofgc | 7:ae9c47f62946 | 211 | |
brunofgc | 2:55b7b466e742 | 212 | //Thread que gerencia as comunicacoes (DROME - SERVER) |
brunofgc | 0:1c0a769988ee | 213 | osThreadId idThreadComunicacoes; |
brunofgc | 0:1c0a769988ee | 214 | void threadComunicacoes(void const *args){ |
brunofgc | 0:1c0a769988ee | 215 | //Esta thread faz todo o tratamento de comunicação. |
brunofgc | 0:1c0a769988ee | 216 | |
brunofgc | 7:ae9c47f62946 | 217 | //char aux[30]; |
brunofgc | 7:ae9c47f62946 | 218 | while(true){ |
brunofgc | 29:823a9da3696b | 219 | osSignalWait(0x1,1000); //Libero processamento e executo compulsoriamente mesmo que não haja sinal num periodo de um segundo |
brunofgc | 29:823a9da3696b | 220 | if(inicializaModemBool){ |
brunofgc | 29:823a9da3696b | 221 | inicializaModemBool = false; |
brunofgc | 29:823a9da3696b | 222 | modemCom::conectaWiFi(); |
brunofgc | 29:823a9da3696b | 223 | } |
brunofgc | 29:823a9da3696b | 224 | if(hardwareReset){ |
brunofgc | 29:823a9da3696b | 225 | //Resetando |
brunofgc | 32:7cf1fb8a8bf3 | 226 | printf("hardwareReset = true.\r\n"); |
brunofgc | 33:a60abda630f7 | 227 | osDelay(50); //Para dar tempo de enviar todo o printf. |
brunofgc | 33:a60abda630f7 | 228 | //diversos::wdt.kick(0.1); |
brunofgc | 33:a60abda630f7 | 229 | NVIC_SystemReset(); |
brunofgc | 29:823a9da3696b | 230 | while(true); |
brunofgc | 29:823a9da3696b | 231 | } |
brunofgc | 29:823a9da3696b | 232 | if(eventosRTC::rotinaEnvioDeDados){ |
brunofgc | 30:8a06a85d8807 | 233 | //Faço aqui o que for devido. |
brunofgc | 30:8a06a85d8807 | 234 | if((!modemCom::status.recebendoArquivoDoServer)&&(enviaDadosPorAlarme==255)){ |
brunofgc | 33:a60abda630f7 | 235 | if(!modemCom::timeOutEnvioDados){ |
brunofgc | 33:a60abda630f7 | 236 | modemCom::timeOutEnvioDados=maxTimeEnvioDados; |
brunofgc | 33:a60abda630f7 | 237 | } |
brunofgc | 30:8a06a85d8807 | 238 | if(debug){pc.printf("Enviando dados de hora completa ao server.\n");} |
brunofgc | 30:8a06a85d8807 | 239 | modemCom::status.emComunicacao = true; |
brunofgc | 29:823a9da3696b | 240 | eventosRTC::rotinaEnvioDeDados--; |
brunofgc | 29:823a9da3696b | 241 | modemCom::status.periodo = 900; |
brunofgc | 33:a60abda630f7 | 242 | diversos::wdt.kick(); |
brunofgc | 29:823a9da3696b | 243 | if(modemCom::verificaConexao()){ |
brunofgc | 33:a60abda630f7 | 244 | //Estou conectado |
brunofgc | 29:823a9da3696b | 245 | if(modemCom::enviaDados()){ |
brunofgc | 29:823a9da3696b | 246 | eventosRTC::rotinaEnvioDeDados=0; |
brunofgc | 33:a60abda630f7 | 247 | modemCom::timeOutEnvioDados=0; |
brunofgc | 29:823a9da3696b | 248 | modemCom::status.periodo = modemCom::status.periodoConfiguracao; //Restaurando o período configurado no sistema |
brunofgc | 25:a6da63ed025b | 249 | } |
brunofgc | 29:823a9da3696b | 250 | } |
brunofgc | 30:8a06a85d8807 | 251 | modemCom::status.emComunicacao = false; |
brunofgc | 25:a6da63ed025b | 252 | } |
brunofgc | 30:8a06a85d8807 | 253 | |
brunofgc | 29:823a9da3696b | 254 | } |
brunofgc | 29:823a9da3696b | 255 | |
brunofgc | 29:823a9da3696b | 256 | if(arquivoEnvioPointer!=NULL){ |
brunofgc | 30:8a06a85d8807 | 257 | if(debug){pc.printf("Enviando o arquivo <%s> ao server.\n",arquivoEnvioPointer->nome);} |
brunofgc | 29:823a9da3696b | 258 | if(modemCom::postFileCommandMode(modemCom::status.serverIP,modemCom::status.host,"/drome/parser/index.php",arquivoEnvioPointer)){ |
brunofgc | 29:823a9da3696b | 259 | //if(modemCom::postFileCommandMode(modemCom::status.serverIP,modemCom::status.host,"/sistema/Parser/index.php",arquivoEnvioPointer)){ |
brunofgc | 30:8a06a85d8807 | 260 | if(debug){pc.printf("Enviado o arquivo <%s>.\n",arquivoEnvioPointer->nome);} |
brunofgc | 29:823a9da3696b | 261 | arquivoEnvioPointer = NULL; |
brunofgc | 29:823a9da3696b | 262 | }else{ |
brunofgc | 30:8a06a85d8807 | 263 | if(debug){pc.printf("Erro enviando o arquivo <%s>.\n",arquivoEnvioPointer->nome);} |
brunofgc | 29:823a9da3696b | 264 | } |
brunofgc | 7:ae9c47f62946 | 265 | } |
brunofgc | 29:823a9da3696b | 266 | |
brunofgc | 29:823a9da3696b | 267 | if(modemCom::status.SRINGsockEntrante){ |
brunofgc | 29:823a9da3696b | 268 | modemCom::status.SRINGsockEntrante=false; |
brunofgc | 29:823a9da3696b | 269 | modemCom::atendeSRING(modemCom::status.connIDServerCommand); |
brunofgc | 29:823a9da3696b | 270 | } |
brunofgc | 29:823a9da3696b | 271 | modemCom::timeOutModem = 30; |
brunofgc | 29:823a9da3696b | 272 | } |
brunofgc | 0:1c0a769988ee | 273 | } |
brunofgc | 29:823a9da3696b | 274 | //osThreadDef(threadComunicacoes, osPriorityNormal, 3072); |
brunofgc | 29:823a9da3696b | 275 | osThreadDef(threadComunicacoes, osPriorityNormal, (DEFAULT_STACK_SIZE*2)); |
brunofgc | 0:1c0a769988ee | 276 | |
brunofgc | 0:1c0a769988ee | 277 | void RTC_POR_SEGUNDO(void){ |
brunofgc | 0:1c0a769988ee | 278 | time_t seconds; |
brunofgc | 0:1c0a769988ee | 279 | seconds = time(NULL); |
brunofgc | 29:823a9da3696b | 280 | //osSignalSet(idThreadComunicacoes, 0x1); |
brunofgc | 0:1c0a769988ee | 281 | eventosRTC::rotina1segundo=true; |
brunofgc | 0:1c0a769988ee | 282 | |
brunofgc | 7:ae9c47f62946 | 283 | if(((seconds+5)%10)==0){ |
brunofgc | 19:5559f7570e6f | 284 | eventosRTC::rotina10Segundos = true; |
brunofgc | 0:1c0a769988ee | 285 | } |
brunofgc | 0:1c0a769988ee | 286 | |
brunofgc | 0:1c0a769988ee | 287 | if((seconds%60)==0){ |
brunofgc | 0:1c0a769988ee | 288 | eventosRTC::minutos = true; |
brunofgc | 0:1c0a769988ee | 289 | } |
brunofgc | 0:1c0a769988ee | 290 | |
brunofgc | 33:a60abda630f7 | 291 | if(((seconds-15)%modemCom::status.periodo)==0){ |
brunofgc | 9:cf406384efd9 | 292 | //if((seconds%300)==0){ |
brunofgc | 21:b9315cdd9275 | 293 | eventosRTC::rotinaEnvioDeDados = maxTentativasEnvioDados; |
brunofgc | 29:823a9da3696b | 294 | osSignalSet(idThreadComunicacoes, 0x1); |
brunofgc | 29:823a9da3696b | 295 | } |
brunofgc | 0:1c0a769988ee | 296 | } |
brunofgc | 0:1c0a769988ee | 297 | |
brunofgc | 0:1c0a769988ee | 298 | void loadDevices(){ |
brunofgc | 0:1c0a769988ee | 299 | if(sdCard::abreArquivo(&sdCard::devices,"r")){ |
brunofgc | 0:1c0a769988ee | 300 | criaDevices(sdCard::devices.fp); |
brunofgc | 0:1c0a769988ee | 301 | if(devices){ |
brunofgc | 0:1c0a769988ee | 302 | configuraDevices(sdCard::devices.fp); |
brunofgc | 2:55b7b466e742 | 303 | printf("Dispositivos configurados.\n"); |
brunofgc | 0:1c0a769988ee | 304 | } |
brunofgc | 21:b9315cdd9275 | 305 | sdCard::fechaArquivo(&sdCard::devices); |
brunofgc | 2:55b7b466e742 | 306 | if(devices){testaTudoDevices();} |
brunofgc | 0:1c0a769988ee | 307 | } |
brunofgc | 0:1c0a769988ee | 308 | } |
brunofgc | 0:1c0a769988ee | 309 | |
brunofgc | 0:1c0a769988ee | 310 | void inicializaMaquina(){ |
brunofgc | 33:a60abda630f7 | 311 | |
brunofgc | 33:a60abda630f7 | 312 | |
brunofgc | 33:a60abda630f7 | 313 | //Resetei pq? |
brunofgc | 33:a60abda630f7 | 314 | |
brunofgc | 33:a60abda630f7 | 315 | sprintf(resetCauses,"POR"); |
brunofgc | 33:a60abda630f7 | 316 | if((LPC_WDT->WDMOD >> 2) & 1){ |
brunofgc | 33:a60abda630f7 | 317 | strcat(resetCauses,",WDT"); |
brunofgc | 33:a60abda630f7 | 318 | } |
brunofgc | 33:a60abda630f7 | 319 | |
brunofgc | 33:a60abda630f7 | 320 | diversos::wdt.kick(90.0); |
brunofgc | 33:a60abda630f7 | 321 | |
brunofgc | 14:c0162ab2a951 | 322 | pwmPeriod = 100000; |
brunofgc | 0:1c0a769988ee | 323 | SD1.period_us(pwmPeriod); |
brunofgc | 0:1c0a769988ee | 324 | modemCom::atendendoWebServer = false; |
brunofgc | 34:348991c54ff3 | 325 | |
brunofgc | 30:8a06a85d8807 | 326 | printf("Versao: %s.\r\n",firmVersion); |
brunofgc | 33:a60abda630f7 | 327 | printf("Reset Causes: %s.\r\n",resetCauses); |
brunofgc | 0:1c0a769988ee | 328 | modemCom::timeOutModem = 30; |
brunofgc | 14:c0162ab2a951 | 329 | serialModem::serial_init(); |
brunofgc | 14:c0162ab2a951 | 330 | numeroDeBytesPorEnvio = 768; |
brunofgc | 14:c0162ab2a951 | 331 | modBusMaster1::modBusMaster(&modBusMaster1Serial,19200,&max_de); |
brunofgc | 14:c0162ab2a951 | 332 | inicializaSensoresTemperatura(); |
brunofgc | 0:1c0a769988ee | 333 | |
brunofgc | 0:1c0a769988ee | 334 | if(sdCard::init()){ |
brunofgc | 30:8a06a85d8807 | 335 | printf("SD Card inicializado com sucesso.\n"); |
brunofgc | 0:1c0a769988ee | 336 | //Carregando a lista de dispositivos |
brunofgc | 0:1c0a769988ee | 337 | loadDevices(); |
brunofgc | 0:1c0a769988ee | 338 | }else{ |
brunofgc | 30:8a06a85d8807 | 339 | printf("Nao foi possivel inicializar o SD Card.\n"); |
brunofgc | 13:b9183b4bc049 | 340 | } |
brunofgc | 13:b9183b4bc049 | 341 | |
brunofgc | 13:b9183b4bc049 | 342 | |
brunofgc | 7:ae9c47f62946 | 343 | //Tick Timer por segundo |
brunofgc | 0:1c0a769988ee | 344 | RTC::attach(&RTC_POR_SEGUNDO, RTC::Second); |
brunofgc | 7:ae9c47f62946 | 345 | |
brunofgc | 7:ae9c47f62946 | 346 | /*Chamada de threads*/ |
brunofgc | 7:ae9c47f62946 | 347 | |
brunofgc | 7:ae9c47f62946 | 348 | //Thread timers |
brunofgc | 0:1c0a769988ee | 349 | idThreadTimers = osThreadCreate(osThread(threadTimers), NULL); |
brunofgc | 7:ae9c47f62946 | 350 | //Thread comunicacoes |
brunofgc | 0:1c0a769988ee | 351 | idThreadComunicacoes = osThreadCreate(osThread(threadComunicacoes), NULL); |
brunofgc | 7:ae9c47f62946 | 352 | //Thread processaPacote |
brunofgc | 0:1c0a769988ee | 353 | idThreadProcessaPacote = osThreadCreate(osThread(threadProcessaPacote), NULL); |
brunofgc | 7:ae9c47f62946 | 354 | |
brunofgc | 33:a60abda630f7 | 355 | /*Chamada de threads*/ |
brunofgc | 33:a60abda630f7 | 356 | modemCom::status.connIDServerCommand = 255; |
brunofgc | 33:a60abda630f7 | 357 | modemCom::status.connIDWebServer = 255; |
brunofgc | 33:a60abda630f7 | 358 | modemCom::status.connIDSendData = 255; |
brunofgc | 0:1c0a769988ee | 359 | } |
brunofgc | 0:1c0a769988ee | 360 | |
brunofgc | 0:1c0a769988ee | 361 | //Inicio do programa; |
brunofgc | 34:348991c54ff3 | 362 | int main() { |
brunofgc | 34:348991c54ff3 | 363 | flashPrepare(); |
brunofgc | 34:348991c54ff3 | 364 | firmDescToRam(); |
brunofgc | 34:348991c54ff3 | 365 | serialPC::serialPC_init(); |
brunofgc | 34:348991c54ff3 | 366 | pc.printf("firmDesc: nome <%s> tamFirmware = %lu executaBootLoader = %u.\r\n",(char*)&memBufConfigBootLoader[5],tamFirmware,executaBootLoader); |
brunofgc | 34:348991c54ff3 | 367 | |
brunofgc | 34:348991c54ff3 | 368 | if(executaBootLoader==1){ |
brunofgc | 34:348991c54ff3 | 369 | executaBootLoader=0; |
brunofgc | 34:348991c54ff3 | 370 | pc.printf("Chamando o bootloader logo apos dar reset.\r\n"); |
brunofgc | 34:348991c54ff3 | 371 | while( ((LPC_UART0->LSR >> 6) &0x1) == 0 ); |
brunofgc | 34:348991c54ff3 | 372 | //__disable_irq(); |
brunofgc | 34:348991c54ff3 | 373 | SysTick->CTRL &= ~0x00000002; // disable SysTick interrupt |
brunofgc | 34:348991c54ff3 | 374 | NVIC_DeInit(); |
brunofgc | 34:348991c54ff3 | 375 | firmDescToFlash(); |
brunofgc | 34:348991c54ff3 | 376 | bootLoader(); |
brunofgc | 34:348991c54ff3 | 377 | } |
brunofgc | 34:348991c54ff3 | 378 | |
brunofgc | 34:348991c54ff3 | 379 | sprintf(firmVersion,"30/05/18(BL)"); |
brunofgc | 30:8a06a85d8807 | 380 | |
brunofgc | 33:a60abda630f7 | 381 | |
brunofgc | 6:d4ebbaaba295 | 382 | eInt1.rise(&diversos::processaPulsosEDs); |
brunofgc | 6:d4ebbaaba295 | 383 | eInt2.rise(&diversos::processaPulsosEDs); |
brunofgc | 33:a60abda630f7 | 384 | eInt3.rise(&diversos::processaPulsosEDs); |
brunofgc | 0:1c0a769988ee | 385 | |
brunofgc | 0:1c0a769988ee | 386 | modem.baud(76800); |
brunofgc | 0:1c0a769988ee | 387 | ESP_CH_PD = 1; |
brunofgc | 0:1c0a769988ee | 388 | ESP_ESPGPIO_2 = 1; |
brunofgc | 0:1c0a769988ee | 389 | ESP_RESET = 1; |
brunofgc | 0:1c0a769988ee | 390 | |
brunofgc | 33:a60abda630f7 | 391 | wait(10); |
brunofgc | 33:a60abda630f7 | 392 | |
brunofgc | 33:a60abda630f7 | 393 | inicializaMaquina(); |
brunofgc | 0:1c0a769988ee | 394 | modemCom::inicializaModem(); |
brunofgc | 33:a60abda630f7 | 395 | /*if(!modemCom::verificaConexao()){ |
brunofgc | 21:b9315cdd9275 | 396 | modemCom::conectaWiFi(); |
brunofgc | 33:a60abda630f7 | 397 | }*/ |
brunofgc | 33:a60abda630f7 | 398 | |
brunofgc | 33:a60abda630f7 | 399 | //Agendando primeiro envio de cara. |
brunofgc | 33:a60abda630f7 | 400 | eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; |
brunofgc | 33:a60abda630f7 | 401 | osSignalSet(idThreadComunicacoes, 0x1); |
brunofgc | 33:a60abda630f7 | 402 | |
brunofgc | 34:348991c54ff3 | 403 | |
brunofgc | 21:b9315cdd9275 | 404 | |
brunofgc | 29:823a9da3696b | 405 | while(true){ |
brunofgc | 29:823a9da3696b | 406 | osDelay(100); |
brunofgc | 13:b9183b4bc049 | 407 | if(callBootLoader){ |
brunofgc | 30:8a06a85d8807 | 408 | diversos::wdt.kick(90.0); |
brunofgc | 13:b9183b4bc049 | 409 | SysTick->CTRL &= ~0x00000002; // disable SysTick interrupt |
brunofgc | 34:348991c54ff3 | 410 | NVIC_DeInit(); |
brunofgc | 33:a60abda630f7 | 411 | |
brunofgc | 33:a60abda630f7 | 412 | //Bloco novo |
brunofgc | 33:a60abda630f7 | 413 | //SysTick->CTRL = 0; |
brunofgc | 33:a60abda630f7 | 414 | //SysTick->LOAD = 0; |
brunofgc | 33:a60abda630f7 | 415 | //SysTick->VAL = 0; |
brunofgc | 33:a60abda630f7 | 416 | |
brunofgc | 33:a60abda630f7 | 417 | /** |
brunofgc | 33:a60abda630f7 | 418 | * Step: Disable all interrupts |
brunofgc | 33:a60abda630f7 | 419 | */ |
brunofgc | 33:a60abda630f7 | 420 | //__disable_irq(); |
brunofgc | 33:a60abda630f7 | 421 | |
brunofgc | 33:a60abda630f7 | 422 | /* ARM Cortex-M Programming Guide to Memory Barrier Instructions.*/ |
brunofgc | 33:a60abda630f7 | 423 | //__DSB(); |
brunofgc | 33:a60abda630f7 | 424 | //Bloco novo |
brunofgc | 13:b9183b4bc049 | 425 | //__disable_irq(); |
brunofgc | 34:348991c54ff3 | 426 | //__disable_irq(); |
brunofgc | 13:b9183b4bc049 | 427 | bootloader_fillUpFlash(&sdCard::newFirmware); |
brunofgc | 34:348991c54ff3 | 428 | pc.printf("Logo depois de fillUpFlash firmDesc: nome <%s> tamFirmware = %lu\r\n",(char*)&memBufConfigBootLoader[5],tamFirmware); |
brunofgc | 34:348991c54ff3 | 429 | |
brunofgc | 34:348991c54ff3 | 430 | |
brunofgc | 34:348991c54ff3 | 431 | NVIC_SystemReset(); |
brunofgc | 34:348991c54ff3 | 432 | /*while( ((LPC_UART0->LSR >> 6) &0x1) == 0 ); |
brunofgc | 13:b9183b4bc049 | 433 | //__enable_irq(); |
brunofgc | 34:348991c54ff3 | 434 | bootLoader();*/ |
brunofgc | 13:b9183b4bc049 | 435 | } |
brunofgc | 29:823a9da3696b | 436 | |
brunofgc | 33:a60abda630f7 | 437 | /*---------------------Bloco de prevenção de bloqueio-------------------------------*/ |
brunofgc | 29:823a9da3696b | 438 | if((!modemCom::status.recebendoArquivoDoServer)&&(!modemCom::status.emComunicacao)){ |
brunofgc | 33:a60abda630f7 | 439 | diversos::wdt.kick(90); |
brunofgc | 33:a60abda630f7 | 440 | }else{ |
brunofgc | 33:a60abda630f7 | 441 | /*-----------------Bloco temporizador de recepção de arquivo--------------*/ |
brunofgc | 29:823a9da3696b | 442 | if(modemCom::status.recebendoArquivoDoServer){ |
brunofgc | 33:a60abda630f7 | 443 | if(modemCom::status.recebendoArquivoDoServer==1){ |
brunofgc | 33:a60abda630f7 | 444 | modemCom::closeConnection(&modemCom::status.connIDServerCommand); |
brunofgc | 33:a60abda630f7 | 445 | //Insere erro no arquivo. |
brunofgc | 33:a60abda630f7 | 446 | } |
brunofgc | 33:a60abda630f7 | 447 | modemCom::status.recebendoArquivoDoServer--; |
brunofgc | 33:a60abda630f7 | 448 | if(xeretaModem){pc.printf("recebendoArquivoDoServer = %lu.\r\n",modemCom::status.recebendoArquivoDoServer);} |
brunofgc | 33:a60abda630f7 | 449 | } |
brunofgc | 33:a60abda630f7 | 450 | /*-----------------Bloco temporizador de recepção de arquivo--------------*/ |
brunofgc | 33:a60abda630f7 | 451 | |
brunofgc | 33:a60abda630f7 | 452 | /*-----------------Bloco temporizador de recepção de envio de dados-------*/ |
brunofgc | 33:a60abda630f7 | 453 | if(modemCom::status.emComunicacao){ |
brunofgc | 33:a60abda630f7 | 454 | if(modemCom::timeOutEnvioDados==1){ |
brunofgc | 33:a60abda630f7 | 455 | modemCom::status.emComunicacao=0; |
brunofgc | 33:a60abda630f7 | 456 | modemCom::closeConnection(&modemCom::status.connIDServerCommand); |
brunofgc | 33:a60abda630f7 | 457 | modemCom::closeConnection(&modemCom::status.connIDWebServer); |
brunofgc | 33:a60abda630f7 | 458 | modemCom::closeConnection(&modemCom::status.connIDSendData); |
brunofgc | 33:a60abda630f7 | 459 | //Insere erro no arquivo. |
brunofgc | 29:823a9da3696b | 460 | } |
brunofgc | 33:a60abda630f7 | 461 | modemCom::timeOutEnvioDados--; |
brunofgc | 33:a60abda630f7 | 462 | if(xeretaModem){pc.printf("timeOutEnvioDados = %lu.\r\n",modemCom::timeOutEnvioDados);} |
brunofgc | 29:823a9da3696b | 463 | } |
brunofgc | 33:a60abda630f7 | 464 | /*-----------------Bloco temporizador de recepção de envio de dados-------*/ |
brunofgc | 29:823a9da3696b | 465 | } |
brunofgc | 33:a60abda630f7 | 466 | /*---------------------Bloco de prevenção de bloqueio-------------------------------*/ |
brunofgc | 29:823a9da3696b | 467 | |
brunofgc | 33:a60abda630f7 | 468 | if(executaComandoServer){ |
brunofgc | 33:a60abda630f7 | 469 | executaComandoServer = false; |
brunofgc | 33:a60abda630f7 | 470 | |
brunofgc | 33:a60abda630f7 | 471 | commands::exec(modemCom::status.connIDServerCommand); |
brunofgc | 33:a60abda630f7 | 472 | if(!modemCom::status.recebendoArquivoDoServer){ |
brunofgc | 33:a60abda630f7 | 473 | if(debug){pc.printf("Fechando socket chave 4.\r\n");} |
brunofgc | 33:a60abda630f7 | 474 | modemCom::closeConnection(&modemCom::status.connIDServerCommand); |
brunofgc | 33:a60abda630f7 | 475 | } |
brunofgc | 33:a60abda630f7 | 476 | } |
brunofgc | 33:a60abda630f7 | 477 | |
brunofgc | 33:a60abda630f7 | 478 | if(sdCard::deleteSentFiles){ |
brunofgc | 33:a60abda630f7 | 479 | printf("Recebido comando para deletar arquivos enviados.\n"); |
brunofgc | 33:a60abda630f7 | 480 | sdCard::deleteBanks(sdCard::currentBankSending); |
brunofgc | 33:a60abda630f7 | 481 | if(sdCard::modificaCurrentBank(sdCard::currentBank,!sdCard::currentBankSending)){ |
brunofgc | 33:a60abda630f7 | 482 | sdCard::deleteSentFiles=false; |
brunofgc | 33:a60abda630f7 | 483 | } |
brunofgc | 33:a60abda630f7 | 484 | } |
brunofgc | 33:a60abda630f7 | 485 | |
brunofgc | 33:a60abda630f7 | 486 | if(modemCom::atendendoWebServer){ |
brunofgc | 33:a60abda630f7 | 487 | modemCom::atendendoWebServer = false; |
brunofgc | 33:a60abda630f7 | 488 | if(debug){pc.printf("Atendendo webServer na conexao %u.\r\n",modemCom::status.connIDWebServer);} |
brunofgc | 33:a60abda630f7 | 489 | modemCom::status.emComunicacao=true; |
brunofgc | 33:a60abda630f7 | 490 | modemCom::webServer(modemCom::status.connIDWebServer); |
brunofgc | 33:a60abda630f7 | 491 | modemCom::status.emComunicacao=false; |
brunofgc | 33:a60abda630f7 | 492 | } |
brunofgc | 33:a60abda630f7 | 493 | |
brunofgc | 33:a60abda630f7 | 494 | if(boolExecAct){ |
brunofgc | 33:a60abda630f7 | 495 | execAct(act); |
brunofgc | 33:a60abda630f7 | 496 | boolExecAct = false; |
brunofgc | 33:a60abda630f7 | 497 | } |
brunofgc | 30:8a06a85d8807 | 498 | |
brunofgc | 30:8a06a85d8807 | 499 | if((!modemCom::status.recebendoArquivoDoServer)&&(!modemCom::status.emComunicacao)){ |
brunofgc | 2:55b7b466e742 | 500 | if(eventosRTC::rotina1segundo){ |
brunofgc | 29:823a9da3696b | 501 | eventosRTC::rotina1segundo = false; |
brunofgc | 2:55b7b466e742 | 502 | if(enviaDadosPorAlarme!=255){ |
brunofgc | 2:55b7b466e742 | 503 | enviaDadosPorAlarme--; |
brunofgc | 2:55b7b466e742 | 504 | if(enviaDadosPorAlarme==0){ |
brunofgc | 18:1eefda1f7736 | 505 | eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; |
brunofgc | 30:8a06a85d8807 | 506 | enviaDadosPorAlarme=255; |
brunofgc | 2:55b7b466e742 | 507 | } |
brunofgc | 29:823a9da3696b | 508 | } |
brunofgc | 21:b9315cdd9275 | 509 | leiturasAnalogicas(); |
brunofgc | 21:b9315cdd9275 | 510 | verificaSaidasDigitais(); |
brunofgc | 26:c246eacf6815 | 511 | leiturasDigitais(); |
brunofgc | 30:8a06a85d8807 | 512 | |
brunofgc | 21:b9315cdd9275 | 513 | if(debug){ |
brunofgc | 21:b9315cdd9275 | 514 | pc.printf("\nMemoria RAM disponivel = %lu\n",diversos::memAvailable()); |
brunofgc | 21:b9315cdd9275 | 515 | pc.printf("\nEntrada 4 = %lu.\nEntrada 3 = %lu.\nEntrada 2 = %lu.\nEntrada 1 = %lu.\r\n",aiFiltrada[3],aiFiltrada[2],aiFiltrada[1],aiFiltrada[0]); |
brunofgc | 21:b9315cdd9275 | 516 | pc.printf("Pulsos <%lu><%lu><%lu>.\r\n",pulsosEDs[0],pulsosEDs[1],pulsosEDs[2]); |
brunofgc | 30:8a06a85d8807 | 517 | |
brunofgc | 21:b9315cdd9275 | 518 | for(debug=0;debug<9;debug++){ |
brunofgc | 30:8a06a85d8807 | 519 | printf("EntradaDigital[%u]=%u.\r\n",debug,(entradasDigitais[debug]>1)); |
brunofgc | 21:b9315cdd9275 | 520 | } |
brunofgc | 33:a60abda630f7 | 521 | } |
brunofgc | 2:55b7b466e742 | 522 | time_t seconds = time(NULL); |
brunofgc | 30:8a06a85d8807 | 523 | printf("Drome %s, Hora-> %s\n",firmVersion,ctime(&seconds)); |
brunofgc | 33:a60abda630f7 | 524 | } |
brunofgc | 2:55b7b466e742 | 525 | |
brunofgc | 2:55b7b466e742 | 526 | if(eventosRTC::rotina10Segundos){ |
brunofgc | 25:a6da63ed025b | 527 | //Executo abaixo a rotina de 10 segundos |
brunofgc | 26:c246eacf6815 | 528 | eventosRTC::rotina10Segundos = false; |
brunofgc | 25:a6da63ed025b | 529 | verifySchedules(); |
brunofgc | 29:823a9da3696b | 530 | verifyAlarms(); |
brunofgc | 7:ae9c47f62946 | 531 | } |
brunofgc | 33:a60abda630f7 | 532 | |
brunofgc | 33:a60abda630f7 | 533 | if((eventosRTC::minutos)&&(!modemCom::status.recebendoArquivoDoServer)){ |
brunofgc | 33:a60abda630f7 | 534 | //Executo abaixo a rotina de 1 minuto |
brunofgc | 33:a60abda630f7 | 535 | eventosRTC::minutos = false; |
brunofgc | 33:a60abda630f7 | 536 | refreshSensoresTemperatura(); |
brunofgc | 33:a60abda630f7 | 537 | writeReadingsToSD(); |
brunofgc | 11:631bea162800 | 538 | } |
brunofgc | 2:55b7b466e742 | 539 | } |
brunofgc | 0:1c0a769988ee | 540 | } |
brunofgc | 0:1c0a769988ee | 541 | } |