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

user.h

Committer:
Giamarchi
Date:
2021-07-06
Revision:
0:5cee4b7380b2

File content as of revision 0:5cee4b7380b2:

/*******************************************************************************
    user.h -> fichier de fonctions

    Gestion des 2 DELs de la carte CPU
    Mesure tension batterie
    Mesure courant panneaux solaires 
*******************************************************************************/
//  Initialistion du µC, Tests divers
/**
*   @param null
*/
void Init_System(void) {   
//  Hello World
    pc.printf("\r\nIniSat V2 : TP3\r\n\n");
    
//  Test de l'horloge Systeme
//   pc.printf("Horloge CPU a %d Hz\r\n", SystemCoreClock);  
}
/******************************************************************************/
//  Gestion des 2 Dels de la carte CPU
Ticker Compteur_Led;
uint16_t cmpt_led;
uint8_t etat_led;
enum {Off, Ro, Ve, Ro_Ve} couleur;

void Tache_Cmpt_Led(void) {
    cmpt_led++;
    if(cmpt_led >= 100) {        // Période : 1 sec
        cmpt_led = 0;
        DEL_R = etat_led & 1;
    }
    else if(cmpt_led == 5) {
        DEL_R = 0;
    }
    else if(cmpt_led == 50) {
        DEL_V = etat_led & 2;
    }
    else if(cmpt_led == 60) {
        DEL_V = 0;
    }
}

void Init_Led(void) {
    cmpt_led = 0;
    etat_led = 0;
    Compteur_Led.attach(&Tache_Cmpt_Led,0.01);      // 10ms
}

void Stop_Led(void) {
    DEL_R = 0;
    DEL_V = 0;
    Compteur_Led.detach();
}

void Set_Led(uint8_t couleur) {
    etat_led = couleur;
}
/******************************************************************************/
//  Mesure de la tension de la batterie
float mes_bat;

float Mes_Bat(void) {
    
    mes_bat = batin.read()*4.59f + 0.31f;        // 3.3 x 13.9/10 + 310mV(D2 carte EPS)
    return mes_bat;
}

void Envoi_Mes_Bat(void) {
    
    pc.printf("BAT: %.2f V\n",mes_bat);     // Format pour Terminal (Putty)
//    pc.printf("B%.2f\n",mes_bat);          // Format pour Serial Data Plotter
}
/******************************************************************************/
//  Mesure des courants des 2 panneaux solaires
float mes_sp1, mes_sp2;

void Mes_SP(void) {

    mes_sp1 = sp_1in.read()*165.0;           // 3.3 x 50
    mes_sp2 = sp_2in.read()*165.0;           // 3.3 x 50
}

void Envoi_Mes_SP(void) {
    
    pc.printf("SP1: %.1f mA\tSP2: %.1f mA\n",mes_sp1,mes_sp2);
}
/******************************************************************************/
//  Fonction pour initialiser les fonctions précédentes

void Init_User_Fonctions(void) {
    
    ctrl_reg = 1;       // Pour mettre sous tension le moniteur de courant des Solar Panels
    Init_Led();
}
//  Fonction pour stopper les fonctions précédentes

void Stop_User_Fonctions(void) {
    
    ctrl_reg = 0;
    Stop_Led();
}
/******************************************************************************/