Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
anemo.h
00001 //============================================================================== 00002 // Fichier : anemo.h 00003 // 00004 // Description de fonctions utilisées pour la station météo 00005 //============================================================================== 00006 // Déclaration des variables et des constantes 00007 00008 InterruptIn Anem(PB_4); // La ligne est déclarée en interruption 00009 Timer Fenetre_Temps; // Déclaration d'un compteur 00010 Ticker Tick_Anemo; 00011 00012 uint16_t nombre; 00013 int16_t vitesse_anemo; // vitesse anemometre 00014 uint8_t etat_anemo; 00015 uint8_t anemo_ok; 00016 00017 void ISR_Compteur(void) // Fonction d'interruption (Interrupt Sub Routine) 00018 { 00019 nombre++; // Compte le nombre de rotation de l'axe 00020 } 00021 00022 void Init_Anemo(void) 00023 { 00024 Anem.mode(PullUp); // Activation résistance de Pullup 00025 etat_anemo = 0; // Initialisation de la machine à états 00026 anemo_ok = 0; // Lecture non disponible 00027 } 00028 //============================================================================== 00029 // Fonction : Gestion Anemometre 00030 // Entrée : On Off de la tache 00031 // Sortie : Pas de paramètre en sortie 00032 // Interne: variable d'état et de mesure 00033 00034 void Gestion_Anemometre (unsigned int val_anemo) 00035 { 00036 switch (etat_anemo) 00037 { 00038 case 0: // Tache au repos 00039 if((val_anemo & 0x02) == 0x02) 00040 etat_anemo = 1; 00041 else 00042 { 00043 anemo_ok = 0; 00044 Fenetre_Temps.stop(); // Mettre à 0 00045 Anem.disable_irq(); 00046 } 00047 break; 00048 case 1: 00049 Fenetre_Temps.start(); // Déclenche le timer 00050 Fenetre_Temps.reset(); // Mettre à 0 00051 Anem.rise(&ISR_Compteur); // Interruption sur front montant 00052 Anem.fall(&ISR_Compteur); // et sur front descendant 00053 Anem.enable_irq(); 00054 00055 etat_anemo = 2; 00056 break; 00057 case 2: 00058 if(Fenetre_Temps.read_ms() >= 1000) // Mesure d'une fréquence 00059 { 00060 vitesse_anemo = nombre/2; // Formule de conversion 00061 nombre = 0; 00062 Fenetre_Temps.stop(); // Mettre à 0 00063 etat_anemo = 3; 00064 } 00065 break; 00066 case 3: // Lecture disponible 00067 anemo_ok = 1; 00068 etat_anemo = 0; 00069 break; 00070 default: 00071 etat_anemo = 0; 00072 break; 00073 } 00074 } 00075 //============================================================================== 00076 // Fonction : Lecture Anemometre 00077 // Entrée : Pas de paramètres en entrée 00078 // Sortie : vitesse anemometre 00079 // Interne: variable d'état 00080 00081 int Lecture_Anemometre(void) 00082 { 00083 int resultat; 00084 00085 if (anemo_ok == 1) 00086 { 00087 resultat = vitesse_anemo; 00088 anemo_ok = 0; 00089 } 00090 else 00091 { 00092 resultat = 0; 00093 } 00094 return resultat; 00095 } 00096 //============================================================================== 00097 // Nucleo - L031K6 00098 00099 // PA_9 Vin 00100 // PA_10 Gnd 00101 // NRST NRST 00102 // Gnd 5V 00103 // PA_12 PA_2 00104 // PB_0 PA_7 00105 // PB_7 PA_6 00106 // PB_6 PA_5 00107 // PB_1 PA_4 00108 // NC PA_3 00109 // NC PA_1 00110 // PA_8 PA_0 00111 // PA_11 Aref 00112 // PB_5 3V3 00113 // PB_4 PB_3 00114 00115
Generated on Thu Dec 1 2022 07:53:58 by
1.7.2