teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

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){