UniverSpace 2022 / Mbed 2 deprecated IniSat_TP5_Trame

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*******************************************************************************
00002     Université de Montpellier
00003     NemoSpace   IUT de Nîmes
00004     IniSat Modèle 1 Version 2
00005 *******************************************************************************/
00006 //  La lecture du GPS utilise une liaison série software
00007 
00008 //      TP n°5 : Correction
00009 
00010 //  Exo 1 : Enregistrement des coordonnées GPS sur carte SD
00011 //  Exo 2 : Gestion de messages descendants (Supervision) et montants (Commande)
00012 //  Exo 3 : Tracer sur My Maps votre déplacement autour du batiment (Mission)
00013 
00014 #include "mbed.h"
00015 //#include "platform/mbed_thread.h"
00016 #include "SDFileSystem.h"
00017 
00018 #include "system.h"
00019 #include "user.h"
00020 #include "soft_uart.h"
00021 #include "gps.h"
00022 
00023 SDFileSystem sd(PB_5, PB_4, PB_3, PA_11, "sd"); // MOSI, MISO, SCK, CS -> SPI pins on the Inisat
00024 
00025 uint8_t etat, etat_mem;
00026 uint16_t compteur;
00027 float mes_accu;
00028 
00029 int main()
00030 {
00031     Init_System();
00032     etat = 0;
00033     Init_Soft_UART();
00034 //    thread_sleep_for(1000);
00035 
00036 // Setup a serial interrupt function to receive data
00037     
00038     wait_ms(1000);
00039 
00040     while (1) {
00041 //        thread_sleep_for(1);        // Boucle toutes les 1 milliseconde environ
00042         wait_ms(1);
00043         compteur++;
00044         
00045 //      Gestion des modes avec une machine d'états
00046         switch (etat) {
00047 /******************************************************************************/
00048 // Mode Init :      Mise sous tension
00049 //                  Initialisation du µC
00050             case 0: {
00051                 Init_User_Fonctions();
00052 //                thread_sleep_for(1000);
00053                 wait_ms(1000);
00054                 Stop_Led();
00055                 GPS_Init();
00056                 Start_Led();
00057                 Set_Led(Ve);
00058 //                thread_sleep_for(1000);
00059                 wait_ms(1000);
00060                 etat = 1;
00061                 break; }
00062 /******************************************************************************/
00063 //  Mode Gestion :  Gestion des actions
00064 //                  Contrôle du système
00065             case 1:
00066                 mes_accu = Mes_Bat();
00067                 if(mes_accu < BAT_SEUIL_BAS_1) {
00068                     etat = 4;
00069                     Set_Led(Ro);
00070                 } else {
00071                     etat = 2;
00072                     Set_Led(Ve);
00073                 }
00074 //                thread_sleep_for(1000);
00075                 wait_ms(1000);
00076                 break;
00077 /******************************************************************************/
00078 //  Mode Mission :  Acquisition de données
00079 //                      Mesure Batterie
00080 //                      Mesure Courant faces solaires
00081 //                      Stockage
00082             case 2: 
00083                 Lect_GPS();
00084                 GPS_Decodage();
00085                 Mes_SP();
00086                 Mes_Temp();
00087                 mes_accu = Mes_Bat();
00088                 if(mes_accu > BAT_SEUIL_HAUT_1)
00089                 {
00090                     etat = 3;
00091                     Set_Led(Ro_Ve);
00092                 }
00093                 else
00094                 {
00095                     etat = 1;
00096                 }
00097 //                thread_sleep_for(1000);
00098 //                wait_ms(1000);
00099                 break;
00100 /******************************************************************************/
00101 //  Mode Radio :    Transmission de données
00102 //                  Mise en forme pour affichage
00103             case 3:
00104                 Envoi_GPS();
00105                 Envoi_Mes_Bat();
00106 //                Envoi_Mes_SP();
00107 //                Envoi_Mes_Temp();
00108                 
00109 //                thread_sleep_for(1000);
00110 //                wait_ms(1000);
00111                 etat = 1;
00112                 break;
00113 /******************************************************************************/
00114 //  Mode Survie :   Attente recharge de l'accu
00115 
00116             case 4:
00117                 mes_accu = Mes_Bat();
00118                 if(mes_accu < BAT_SEUIL_BAS_2) {
00119                     etat = 5;
00120                     Stop_User_Fonctions();
00121                 }
00122 
00123                 if(mes_accu > BAT_SEUIL_HAUT_1) {
00124                     etat = 1;
00125                     Set_Led(Ve);
00126                 }
00127                 break;
00128 /******************************************************************************/
00129 //  Mode Zombie :   Coupure des consommateurs
00130 //                  Passage en mode faible consommation
00131 //                  Diminution de la fréquence du CPU
00132 //                  Passage en mode Sleep
00133             case 5:
00134                 sleep();
00135                 mes_accu = Mes_Bat();
00136                 if(mes_accu > BAT_SEUIL_HAUT_1)
00137                     etat = 0;
00138                 break;
00139 /******************************************************************************/
00140             default:
00141                 etat = 0;
00142                 break;
00143 /******************************************************************************/
00144         }   // end switch
00145 /*        if(etat != etat_mem)            //  Debug des états
00146         {
00147             pc.printf("Etat_%d\r\n",etat);
00148             etat_mem = etat;
00149         }*/
00150 /******************************************************************************/
00151     }   // end while
00152 }   // end main
00153 /******************************************************************************/