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@6:5a2c3d7d4623, 2022-06-16 (annotated)
- Committer:
- Giamarchi
- Date:
- Thu Jun 16 17:05:58 2022 +0000
- Revision:
- 6:5a2c3d7d4623
maj
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Giamarchi | 6:5a2c3d7d4623 | 1 | //============================================================================== |
| Giamarchi | 6:5a2c3d7d4623 | 2 | // Fichier : anemo.h |
| Giamarchi | 6:5a2c3d7d4623 | 3 | // |
| Giamarchi | 6:5a2c3d7d4623 | 4 | // Description de fonctions utilisées pour la station météo |
| Giamarchi | 6:5a2c3d7d4623 | 5 | //============================================================================== |
| Giamarchi | 6:5a2c3d7d4623 | 6 | // Déclaration des variables et des constantes |
| Giamarchi | 6:5a2c3d7d4623 | 7 | |
| Giamarchi | 6:5a2c3d7d4623 | 8 | InterruptIn Anem(PB_4); // La ligne est déclarée en interruption |
| Giamarchi | 6:5a2c3d7d4623 | 9 | Timer Fenetre_Temps; // Déclaration d'un compteur |
| Giamarchi | 6:5a2c3d7d4623 | 10 | Ticker Tick_Anemo; |
| Giamarchi | 6:5a2c3d7d4623 | 11 | |
| Giamarchi | 6:5a2c3d7d4623 | 12 | uint16_t nombre; |
| Giamarchi | 6:5a2c3d7d4623 | 13 | int16_t vitesse_anemo; // vitesse anemometre |
| Giamarchi | 6:5a2c3d7d4623 | 14 | uint8_t etat_anemo; |
| Giamarchi | 6:5a2c3d7d4623 | 15 | uint8_t anemo_ok; |
| Giamarchi | 6:5a2c3d7d4623 | 16 | |
| Giamarchi | 6:5a2c3d7d4623 | 17 | void ISR_Compteur(void) // Fonction d'interruption (Interrupt Sub Routine) |
| Giamarchi | 6:5a2c3d7d4623 | 18 | { |
| Giamarchi | 6:5a2c3d7d4623 | 19 | nombre++; // Compte le nombre de rotation de l'axe |
| Giamarchi | 6:5a2c3d7d4623 | 20 | } |
| Giamarchi | 6:5a2c3d7d4623 | 21 | |
| Giamarchi | 6:5a2c3d7d4623 | 22 | void Init_Anemo(void) |
| Giamarchi | 6:5a2c3d7d4623 | 23 | { |
| Giamarchi | 6:5a2c3d7d4623 | 24 | Anem.mode(PullUp); // Activation résistance de Pullup |
| Giamarchi | 6:5a2c3d7d4623 | 25 | etat_anemo = 0; // Initialisation de la machine à états |
| Giamarchi | 6:5a2c3d7d4623 | 26 | anemo_ok = 0; // Lecture non disponible |
| Giamarchi | 6:5a2c3d7d4623 | 27 | } |
| Giamarchi | 6:5a2c3d7d4623 | 28 | //============================================================================== |
| Giamarchi | 6:5a2c3d7d4623 | 29 | // Fonction : Gestion Anemometre |
| Giamarchi | 6:5a2c3d7d4623 | 30 | // Entrée : On Off de la tache |
| Giamarchi | 6:5a2c3d7d4623 | 31 | // Sortie : Pas de paramètre en sortie |
| Giamarchi | 6:5a2c3d7d4623 | 32 | // Interne: variable d'état et de mesure |
| Giamarchi | 6:5a2c3d7d4623 | 33 | |
| Giamarchi | 6:5a2c3d7d4623 | 34 | void Gestion_Anemometre (unsigned int val_anemo) |
| Giamarchi | 6:5a2c3d7d4623 | 35 | { |
| Giamarchi | 6:5a2c3d7d4623 | 36 | switch (etat_anemo) |
| Giamarchi | 6:5a2c3d7d4623 | 37 | { |
| Giamarchi | 6:5a2c3d7d4623 | 38 | case 0: // Tache au repos |
| Giamarchi | 6:5a2c3d7d4623 | 39 | if((val_anemo & 0x02) == 0x02) |
| Giamarchi | 6:5a2c3d7d4623 | 40 | etat_anemo = 1; |
| Giamarchi | 6:5a2c3d7d4623 | 41 | else |
| Giamarchi | 6:5a2c3d7d4623 | 42 | { |
| Giamarchi | 6:5a2c3d7d4623 | 43 | anemo_ok = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 44 | Fenetre_Temps.stop(); // Mettre à 0 |
| Giamarchi | 6:5a2c3d7d4623 | 45 | Anem.disable_irq(); |
| Giamarchi | 6:5a2c3d7d4623 | 46 | } |
| Giamarchi | 6:5a2c3d7d4623 | 47 | break; |
| Giamarchi | 6:5a2c3d7d4623 | 48 | case 1: |
| Giamarchi | 6:5a2c3d7d4623 | 49 | Fenetre_Temps.start(); // Déclenche le timer |
| Giamarchi | 6:5a2c3d7d4623 | 50 | Fenetre_Temps.reset(); // Mettre à 0 |
| Giamarchi | 6:5a2c3d7d4623 | 51 | Anem.rise(&ISR_Compteur); // Interruption sur front montant |
| Giamarchi | 6:5a2c3d7d4623 | 52 | Anem.fall(&ISR_Compteur); // et sur front descendant |
| Giamarchi | 6:5a2c3d7d4623 | 53 | Anem.enable_irq(); |
| Giamarchi | 6:5a2c3d7d4623 | 54 | |
| Giamarchi | 6:5a2c3d7d4623 | 55 | etat_anemo = 2; |
| Giamarchi | 6:5a2c3d7d4623 | 56 | break; |
| Giamarchi | 6:5a2c3d7d4623 | 57 | case 2: |
| Giamarchi | 6:5a2c3d7d4623 | 58 | if(Fenetre_Temps.read_ms() >= 1000) // Mesure d'une fréquence |
| Giamarchi | 6:5a2c3d7d4623 | 59 | { |
| Giamarchi | 6:5a2c3d7d4623 | 60 | vitesse_anemo = nombre/2; // Formule de conversion |
| Giamarchi | 6:5a2c3d7d4623 | 61 | nombre = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 62 | Fenetre_Temps.stop(); // Mettre à 0 |
| Giamarchi | 6:5a2c3d7d4623 | 63 | etat_anemo = 3; |
| Giamarchi | 6:5a2c3d7d4623 | 64 | } |
| Giamarchi | 6:5a2c3d7d4623 | 65 | break; |
| Giamarchi | 6:5a2c3d7d4623 | 66 | case 3: // Lecture disponible |
| Giamarchi | 6:5a2c3d7d4623 | 67 | anemo_ok = 1; |
| Giamarchi | 6:5a2c3d7d4623 | 68 | etat_anemo = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 69 | break; |
| Giamarchi | 6:5a2c3d7d4623 | 70 | default: |
| Giamarchi | 6:5a2c3d7d4623 | 71 | etat_anemo = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 72 | break; |
| Giamarchi | 6:5a2c3d7d4623 | 73 | } |
| Giamarchi | 6:5a2c3d7d4623 | 74 | } |
| Giamarchi | 6:5a2c3d7d4623 | 75 | //============================================================================== |
| Giamarchi | 6:5a2c3d7d4623 | 76 | // Fonction : Lecture Anemometre |
| Giamarchi | 6:5a2c3d7d4623 | 77 | // Entrée : Pas de paramètres en entrée |
| Giamarchi | 6:5a2c3d7d4623 | 78 | // Sortie : vitesse anemometre |
| Giamarchi | 6:5a2c3d7d4623 | 79 | // Interne: variable d'état |
| Giamarchi | 6:5a2c3d7d4623 | 80 | |
| Giamarchi | 6:5a2c3d7d4623 | 81 | int Lecture_Anemometre(void) |
| Giamarchi | 6:5a2c3d7d4623 | 82 | { |
| Giamarchi | 6:5a2c3d7d4623 | 83 | int resultat; |
| Giamarchi | 6:5a2c3d7d4623 | 84 | |
| Giamarchi | 6:5a2c3d7d4623 | 85 | if (anemo_ok == 1) |
| Giamarchi | 6:5a2c3d7d4623 | 86 | { |
| Giamarchi | 6:5a2c3d7d4623 | 87 | resultat = vitesse_anemo; |
| Giamarchi | 6:5a2c3d7d4623 | 88 | anemo_ok = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 89 | } |
| Giamarchi | 6:5a2c3d7d4623 | 90 | else |
| Giamarchi | 6:5a2c3d7d4623 | 91 | { |
| Giamarchi | 6:5a2c3d7d4623 | 92 | resultat = 0; |
| Giamarchi | 6:5a2c3d7d4623 | 93 | } |
| Giamarchi | 6:5a2c3d7d4623 | 94 | return resultat; |
| Giamarchi | 6:5a2c3d7d4623 | 95 | } |
| Giamarchi | 6:5a2c3d7d4623 | 96 | //============================================================================== |
| Giamarchi | 6:5a2c3d7d4623 | 97 | // Nucleo - L031K6 |
| Giamarchi | 6:5a2c3d7d4623 | 98 | |
| Giamarchi | 6:5a2c3d7d4623 | 99 | // PA_9 Vin |
| Giamarchi | 6:5a2c3d7d4623 | 100 | // PA_10 Gnd |
| Giamarchi | 6:5a2c3d7d4623 | 101 | // NRST NRST |
| Giamarchi | 6:5a2c3d7d4623 | 102 | // Gnd 5V |
| Giamarchi | 6:5a2c3d7d4623 | 103 | // PA_12 PA_2 |
| Giamarchi | 6:5a2c3d7d4623 | 104 | // PB_0 PA_7 |
| Giamarchi | 6:5a2c3d7d4623 | 105 | // PB_7 PA_6 |
| Giamarchi | 6:5a2c3d7d4623 | 106 | // PB_6 PA_5 |
| Giamarchi | 6:5a2c3d7d4623 | 107 | // PB_1 PA_4 |
| Giamarchi | 6:5a2c3d7d4623 | 108 | // NC PA_3 |
| Giamarchi | 6:5a2c3d7d4623 | 109 | // NC PA_1 |
| Giamarchi | 6:5a2c3d7d4623 | 110 | // PA_8 PA_0 |
| Giamarchi | 6:5a2c3d7d4623 | 111 | // PA_11 Aref |
| Giamarchi | 6:5a2c3d7d4623 | 112 | // PB_5 3V3 |
| Giamarchi | 6:5a2c3d7d4623 | 113 | // PB_4 PB_3 |
| Giamarchi | 6:5a2c3d7d4623 | 114 | |
| Giamarchi | 6:5a2c3d7d4623 | 115 |