teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
Diff: main.cpp
- Revision:
- 21:b9315cdd9275
- Parent:
- 20:da1b8d80ba00
- Child:
- 22:cb832a9bc704
--- a/main.cpp Mon Jan 29 14:22:38 2018 +0000 +++ b/main.cpp Tue Feb 06 16:33:51 2018 +0000 @@ -29,6 +29,13 @@ InterruptIn eInt3(P2_13); /*Interrupções externas para contagem de pulsos rapidos*/ +/*Leituras analógicas*/ +/*AnalogIn ain1(p17); +AnalogIn ain2(p18); +AnalogIn ain3(p19); +AnalogIn ain4(p20);*/ +/*Leituras analógicas*/ + //Função para reset do ARM extern "C" void mbed_reset(); @@ -47,7 +54,7 @@ uint32_t act; bool boolExecAct; bool inicializaModemBool; - +char debug = false; bool hardwareReset = false; @@ -131,47 +138,36 @@ entradasDigitais[8] = ED9; } - - -HighSpeedAnalogIn analogInObject(P1_31,P1_30,P0_26,P0_25); +HighSpeedAnalogIn ain(p17, p18, p19, p20); void leiturasAnalogicas(){ - float ai1_filtrado=0.0; - float ai2_filtrado=0.0; - float ai3_filtrado=0.0; - float ai4_filtrado=0.0; - - uint8_t i; - - //LPC_SC->PCONP |= (1 << 12); //Set the PDADC bit residing in the 12th bit of the PCONP register - - for(i=0;i<5;i++){ - ai1_filtrado += analogInObject.read_u16(P0_25); - ai2_filtrado += analogInObject.read_u16(P0_26); - ai3_filtrado += analogInObject.read_u16(P1_30); - ai4_filtrado += analogInObject.read_u16(P1_31); + static uint8_t leituraAtual; + switch(leituraAtual){ + case 0: + aiFiltrada[0] = FiltroAI1.get(ain.read_u16(p17)); + break; + case 1: + aiFiltrada[1] = FiltroAI2.get(ain.read_u16(p18)); + break; + case 2: + aiFiltrada[2] = FiltroAI3.get(ain.read_u16(p19)); + break; + case 3: + aiFiltrada[3] = FiltroAI4.get(ain.read_u16(p20)); + break; } - - ai1_filtrado = ai1_filtrado/5; - ai2_filtrado = ai2_filtrado/5; - ai3_filtrado = ai3_filtrado/5; - ai4_filtrado = ai4_filtrado/5; - - - aiFiltrada[3] = ai4_filtrado; - aiFiltrada[2] = ai3_filtrado; - aiFiltrada[1] = ai2_filtrado; - aiFiltrada[0] = ai1_filtrado; - - - /*aiFiltrada[3] = FiltroAI4.get((uint16_t)floor(ai4_double)); - aiFiltrada[2] = FiltroAI3.get((uint16_t)floor(ai3_double)); - aiFiltrada[1] = FiltroAI2.get((uint16_t)floor(ai2_double)); - aiFiltrada[0] = FiltroAI1.get((uint16_t)floor(ai1_double));*/ - + if(leituraAtual<3){leituraAtual++;} + else{leituraAtual=0;} } - +void verificaSaidasDigitais(){ + SD_OE_R = 1; + /*if(SD_FAULT){ + pc.printf("Fault\r\n"); + }else{ + pc.printf("No Fault\r\n"); + }*/ +} //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. osThreadId idThreadTimers; @@ -202,11 +198,10 @@ if(serialModem::processarPacote){ serialModem::processarPacote = false; modemCom::processaPacote(NULL); - } - //diversos::processaPulsosEDs(); + } } } -osThreadDef(threadProcessaPacote, osPriorityNormal, DEFAULT_STACK_SIZE); +osThreadDef(threadProcessaPacote, osPriorityNormal, DEFAULT_STACK_SIZE/2); @@ -292,7 +287,7 @@ if(((seconds-5)%modemCom::status.periodo)==0){ //if((seconds%300)==0){ - eventosRTC::rotinaEnvioDeDados = maxTentativasEnvioDados; + eventosRTC::rotinaEnvioDeDados = maxTentativasEnvioDados; } if((seconds%3600)==0){ //Atuando a cada 3 minutos @@ -313,7 +308,7 @@ configuraDevices(sdCard::devices.fp); printf("Dispositivos configurados.\n"); } - sdCard::fechaArquivo(&sdCard::devices); + sdCard::fechaArquivo(&sdCard::devices); if(devices){testaTudoDevices();} } } @@ -323,7 +318,7 @@ SD1.period_us(pwmPeriod); modemCom::atendendoWebServer = false; serialPC::serialPC_init(); - pc.printf("Versao 27/01/2018.\r\n"); + pc.printf("Versao 04/01/2018.\r\n"); modemCom::timeOutModem = 30; serialModem::serial_init(); numeroDeBytesPorEnvio = 768; @@ -355,21 +350,9 @@ serialModem::configBaud(); } -void verificaSaidasDigitais(){ - SD_OE_R = 1; - /*if(SD_FAULT){ - pc.printf("Fault\r\n"); - }else{ - pc.printf("No Fault\r\n"); - }*/ -} - - - - //Inicio do programa; int main() { - + debug = false; eInt1.rise(&diversos::processaPulsosEDs); eInt2.rise(&diversos::processaPulsosEDs); eInt3.rise(&diversos::processaPulsosEDs); @@ -384,15 +367,14 @@ wait(2); inicializaMaquina(); modemCom::inicializaModem(); - modemCom::conectaWiFi(); + if(!modemCom::verificaConexao()){ + modemCom::conectaWiFi(); + } eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; sdCard::deleteSentFiles=false; - - - + while(true){ - osDelay(10); - + osDelay(100); if(callBootLoader){ diversos::wdt.kick(360.0); SysTick->CTRL &= ~0x00000002; // disable SysTick interrupt @@ -425,16 +407,23 @@ eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; enviaDadosPorAlarme=255; } - } - leiturasAnalogicas(); - leiturasDigitais(); - verifyAlarms(); - verificaSaidasDigitais(); - pc.printf("\nMemoria RAM disponivel = %lu\n",diversos::memAvailable()); + } + leiturasAnalogicas(); + verificaSaidasDigitais(); + leiturasDigitais(); + verifyAlarms(); + if(debug){ + pc.printf("\nMemoria RAM disponivel = %lu\n",diversos::memAvailable()); + pc.printf("\nEntrada 4 = %lu.\nEntrada 3 = %lu.\nEntrada 2 = %lu.\nEntrada 1 = %lu.\r\n",aiFiltrada[3],aiFiltrada[2],aiFiltrada[1],aiFiltrada[0]); + pc.printf("Pulsos <%lu><%lu><%lu>.\r\n",pulsosEDs[0],pulsosEDs[1],pulsosEDs[2]); + for(debug=0;debug<9;debug++){ + pc.printf("EntradaDigital[%u]=%u.\r\n",debug,(entradasDigitais[debug]>1)); + } + + } time_t seconds = time(NULL); printf("%s\n", ctime(&seconds)); - pc.printf("\nEntrada 3 = %lu.\nEntrada 2 = %lu.\nEntrada 1 = %lu.\n\n",aiFiltrada[2],aiFiltrada[1],aiFiltrada[0]); - //pc.printf("Pulsos <%lu><%lu><%lu>.\r\n",pulsosEDs[0],pulsosEDs[1],pulsosEDs[2]); + } if(eventosRTC::rotina10Segundos){