IniSat Modèle 1 Version 2 TP 3 : Gestion des données Exo 1 : Lecture tension batterie Exo 2 : Lecture courants faces solaires Exo 3 : Modes de fonctionnement

Committer:
Giamarchi
Date:
Tue Jul 06 12:47:20 2021 +0000
Revision:
0:5cee4b7380b2
Revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:5cee4b7380b2 1 /*******************************************************************************
Giamarchi 0:5cee4b7380b2 2 Université de Montpellier
Giamarchi 0:5cee4b7380b2 3 NemoSpace IUT de Nîmes
Giamarchi 0:5cee4b7380b2 4 IniSat Modèle 1 Version 2
Giamarchi 0:5cee4b7380b2 5 *******************************************************************************/
Giamarchi 0:5cee4b7380b2 6 // TP n°3 : Correction
Giamarchi 0:5cee4b7380b2 7
Giamarchi 0:5cee4b7380b2 8 // Exo 1 : Lecture tension batterie
Giamarchi 0:5cee4b7380b2 9 // Exo 2 : Lecture courants faces solaires
Giamarchi 0:5cee4b7380b2 10 // Exo 3 : Modes de fonctionnement
Giamarchi 0:5cee4b7380b2 11
Giamarchi 0:5cee4b7380b2 12 #include "mbed.h"
Giamarchi 0:5cee4b7380b2 13 #include "platform/mbed_thread.h"
Giamarchi 0:5cee4b7380b2 14 #include "system.h"
Giamarchi 0:5cee4b7380b2 15 #include "user.h"
Giamarchi 0:5cee4b7380b2 16
Giamarchi 0:5cee4b7380b2 17 uint8_t etat, etat_mem;
Giamarchi 0:5cee4b7380b2 18 uint16_t compteur;
Giamarchi 0:5cee4b7380b2 19 float mes_accu;
Giamarchi 0:5cee4b7380b2 20
Giamarchi 0:5cee4b7380b2 21 int main()
Giamarchi 0:5cee4b7380b2 22 {
Giamarchi 0:5cee4b7380b2 23
Giamarchi 0:5cee4b7380b2 24 Init_System();
Giamarchi 0:5cee4b7380b2 25 etat = 0;
Giamarchi 0:5cee4b7380b2 26
Giamarchi 0:5cee4b7380b2 27 while (1) {
Giamarchi 0:5cee4b7380b2 28 thread_sleep_for(1); // Boucle toutes les 1 milliseconde environ
Giamarchi 0:5cee4b7380b2 29 compteur++;
Giamarchi 0:5cee4b7380b2 30 // Gestion des modes avec une machine d'états
Giamarchi 0:5cee4b7380b2 31 switch (etat) {
Giamarchi 0:5cee4b7380b2 32 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 33 // Mode Init : Mise sous tension
Giamarchi 0:5cee4b7380b2 34 // Initialisation du µC
Giamarchi 0:5cee4b7380b2 35 case 0:
Giamarchi 0:5cee4b7380b2 36 Init_User_Fonctions();
Giamarchi 0:5cee4b7380b2 37 etat = 1;
Giamarchi 0:5cee4b7380b2 38 Set_Led(Ve);
Giamarchi 0:5cee4b7380b2 39 thread_sleep_for(3000);
Giamarchi 0:5cee4b7380b2 40 break;
Giamarchi 0:5cee4b7380b2 41 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 42 // Mode Gestion : Gestion des actions
Giamarchi 0:5cee4b7380b2 43 // Contrôle du système
Giamarchi 0:5cee4b7380b2 44 case 1:
Giamarchi 0:5cee4b7380b2 45 mes_accu = Mes_Bat();
Giamarchi 0:5cee4b7380b2 46 if(mes_accu < BAT_SEUIL_BAS_1) {
Giamarchi 0:5cee4b7380b2 47 etat = 4;
Giamarchi 0:5cee4b7380b2 48 Set_Led(Ro);
Giamarchi 0:5cee4b7380b2 49 } else {
Giamarchi 0:5cee4b7380b2 50 etat = 2;
Giamarchi 0:5cee4b7380b2 51 Set_Led(Ve);
Giamarchi 0:5cee4b7380b2 52 }
Giamarchi 0:5cee4b7380b2 53 thread_sleep_for(1000);
Giamarchi 0:5cee4b7380b2 54 break;
Giamarchi 0:5cee4b7380b2 55 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 56 // Mode Mission : Acquisition de données
Giamarchi 0:5cee4b7380b2 57 // Mesure Batterie
Giamarchi 0:5cee4b7380b2 58 // Mesure Courant faces solaires
Giamarchi 0:5cee4b7380b2 59 // Stockage
Giamarchi 0:5cee4b7380b2 60 case 2:
Giamarchi 0:5cee4b7380b2 61 Mes_Bat();
Giamarchi 0:5cee4b7380b2 62 Mes_SP();
Giamarchi 0:5cee4b7380b2 63 if(mes_accu > BAT_SEUIL_HAUT_1)
Giamarchi 0:5cee4b7380b2 64 {
Giamarchi 0:5cee4b7380b2 65 etat = 3;
Giamarchi 0:5cee4b7380b2 66 Set_Led(Ro_Ve);
Giamarchi 0:5cee4b7380b2 67 } else
Giamarchi 0:5cee4b7380b2 68 {
Giamarchi 0:5cee4b7380b2 69 etat = 1;
Giamarchi 0:5cee4b7380b2 70 }
Giamarchi 0:5cee4b7380b2 71 thread_sleep_for(1000);
Giamarchi 0:5cee4b7380b2 72 break;
Giamarchi 0:5cee4b7380b2 73 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 74 // Mode Radio : Transmission de données
Giamarchi 0:5cee4b7380b2 75 // Mise en forme pour affichage
Giamarchi 0:5cee4b7380b2 76 case 3:
Giamarchi 0:5cee4b7380b2 77 Envoi_Mes_Bat();
Giamarchi 0:5cee4b7380b2 78 Envoi_Mes_SP();
Giamarchi 0:5cee4b7380b2 79 etat = 1;
Giamarchi 0:5cee4b7380b2 80 thread_sleep_for(1000);
Giamarchi 0:5cee4b7380b2 81 break;
Giamarchi 0:5cee4b7380b2 82 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 83 // Mode Survie : Attente recharge de l'accu
Giamarchi 0:5cee4b7380b2 84
Giamarchi 0:5cee4b7380b2 85 case 4:
Giamarchi 0:5cee4b7380b2 86 mes_accu = Mes_Bat();
Giamarchi 0:5cee4b7380b2 87 if(mes_accu < BAT_SEUIL_BAS_2) {
Giamarchi 0:5cee4b7380b2 88 etat = 5;
Giamarchi 0:5cee4b7380b2 89 Stop_User_Fonctions();
Giamarchi 0:5cee4b7380b2 90 }
Giamarchi 0:5cee4b7380b2 91
Giamarchi 0:5cee4b7380b2 92 if(mes_accu > BAT_SEUIL_HAUT_1) {
Giamarchi 0:5cee4b7380b2 93 etat = 1;
Giamarchi 0:5cee4b7380b2 94 Set_Led(Ve);
Giamarchi 0:5cee4b7380b2 95 }
Giamarchi 0:5cee4b7380b2 96 break;
Giamarchi 0:5cee4b7380b2 97 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 98 // Mode Zombie : Coupure des consommateurs
Giamarchi 0:5cee4b7380b2 99 // Passage en mode faible consommation
Giamarchi 0:5cee4b7380b2 100 // Diminution de la fréquence du CPU
Giamarchi 0:5cee4b7380b2 101 // Passage en mode Sleep
Giamarchi 0:5cee4b7380b2 102 case 5:
Giamarchi 0:5cee4b7380b2 103 sleep();
Giamarchi 0:5cee4b7380b2 104 mes_accu = Mes_Bat();
Giamarchi 0:5cee4b7380b2 105 if(mes_accu > BAT_SEUIL_HAUT_1)
Giamarchi 0:5cee4b7380b2 106 etat = 0;
Giamarchi 0:5cee4b7380b2 107 break;
Giamarchi 0:5cee4b7380b2 108 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 109 default:
Giamarchi 0:5cee4b7380b2 110 etat = 0;
Giamarchi 0:5cee4b7380b2 111 break;
Giamarchi 0:5cee4b7380b2 112 /******************************************************************************/
Giamarchi 0:5cee4b7380b2 113 } // end switch
Giamarchi 0:5cee4b7380b2 114 if(etat != etat_mem) // Debug des états
Giamarchi 0:5cee4b7380b2 115 {
Giamarchi 0:5cee4b7380b2 116 pc.printf("Etat_%d\r\n",etat);
Giamarchi 0:5cee4b7380b2 117 etat_mem = etat;
Giamarchi 0:5cee4b7380b2 118 }
Giamarchi 0:5cee4b7380b2 119 } // end while
Giamarchi 0:5cee4b7380b2 120 } // end main
Giamarchi 0:5cee4b7380b2 121 /******************************************************************************/