App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

Committer:
benjaminroy
Date:
Fri Jan 27 01:05:21 2017 +0000
Revision:
3:fa3112b2216c
Parent:
2:94e2eebf1524
Child:
4:8f40ed50c04b
Fonction Alarm() n'est jamais appel?e

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benjaminroy 0:4f447b02a32f 1 #include "mbed.h"
benjaminroy 1:d37b1a61bd0b 2 #include "rtos.h"
marc1119 2:94e2eebf1524 3 #include "RTC.h"
benjaminroy 0:4f447b02a32f 4
benjaminroy 3:fa3112b2216c 5 Ticker ticker;
benjaminroy 1:d37b1a61bd0b 6 DigitalIn en_1(p15);
benjaminroy 1:d37b1a61bd0b 7 DigitalIn en_2(p16);
benjaminroy 3:fa3112b2216c 8
benjaminroy 1:d37b1a61bd0b 9 AnalogIn ea_1(p19);
benjaminroy 1:d37b1a61bd0b 10 AnalogIn ea_2(p20);
benjaminroy 3:fa3112b2216c 11
benjaminroy 3:fa3112b2216c 12 DigitalOut led1(LED1);
marc1119 2:94e2eebf1524 13 DigitalOut led2(LED2);
benjaminroy 0:4f447b02a32f 14
marc1119 2:94e2eebf1524 15 Thread *t1;
marc1119 2:94e2eebf1524 16 Thread *t2;
marc1119 2:94e2eebf1524 17 Thread *t3;
marc1119 2:94e2eebf1524 18
benjaminroy 3:fa3112b2216c 19 uint8_t compteur = 0;
benjaminroy 3:fa3112b2216c 20
benjaminroy 3:fa3112b2216c 21 // -------------------------------------------------------
benjaminroy 3:fa3112b2216c 22 // -------------------------------------------------------
benjaminroy 3:fa3112b2216c 23
benjaminroy 3:fa3112b2216c 24
benjaminroy 1:d37b1a61bd0b 25 void lecture_analog(void const *args) {
benjaminroy 1:d37b1a61bd0b 26 while (true) {
benjaminroy 1:d37b1a61bd0b 27 // synchronisation sur la période d'échantillonnage
benjaminroy 1:d37b1a61bd0b 28 // lecture de l'étampe temporelle
benjaminroy 1:d37b1a61bd0b 29 // lecture des échantillons analogiques
benjaminroy 1:d37b1a61bd0b 30 // calcul de la nouvelle moyenne courante
benjaminroy 1:d37b1a61bd0b 31 // génération éventuelle d'un événement
benjaminroy 0:4f447b02a32f 32 }
benjaminroy 0:4f447b02a32f 33 }
marc1119 2:94e2eebf1524 34
benjaminroy 1:d37b1a61bd0b 35 void lecture_num(void const *args) {
benjaminroy 3:fa3112b2216c 36 // prise en charge du phénomène de rebond
benjaminroy 3:fa3112b2216c 37 // génération éventuelle d'un événement
benjaminroy 3:fa3112b2216c 38
benjaminroy 1:d37b1a61bd0b 39 while (true) {
benjaminroy 3:fa3112b2216c 40 // Synchronisation sur la période d'échantillonnage
marc1119 2:94e2eebf1524 41 Thread::signal_wait(0x1);
benjaminroy 3:fa3112b2216c 42
benjaminroy 3:fa3112b2216c 43 // Lecture des échantillons numériques
benjaminroy 3:fa3112b2216c 44 uint8_t entreenum_1 = en_1.read();
benjaminroy 3:fa3112b2216c 45 uint8_t entreenum_2 = en_2.read();
benjaminroy 3:fa3112b2216c 46 printf("Valeur de l''entree numerique 1 %d", entreenum_1);
benjaminroy 3:fa3112b2216c 47 printf("Valeur de 2''entree numerique 2 %d", entreenum_2);
marc1119 2:94e2eebf1524 48
marc1119 2:94e2eebf1524 49 Thread::yield();
benjaminroy 3:fa3112b2216c 50
benjaminroy 3:fa3112b2216c 51 // Lecture de l'étampe temporelle
benjaminroy 3:fa3112b2216c 52 time_t t = std::time(NULL);
benjaminroy 3:fa3112b2216c 53 printf("%ld\n", (long)t);
benjaminroy 3:fa3112b2216c 54
benjaminroy 3:fa3112b2216c 55 //Thread::signal_wait(0x2);
marc1119 2:94e2eebf1524 56 //if changement valider si on a une valeur et si oui demander d'aller le lire dans 50 ms.
marc1119 2:94e2eebf1524 57 //Signal ISR que dans 50ms on veut qu'il nous rappel dans 50ms
benjaminroy 1:d37b1a61bd0b 58 // génération éventuelle d'un événement
benjaminroy 3:fa3112b2216c 59 //if(en1Read == en_1.read()) printf("C'est pareil");
benjaminroy 3:fa3112b2216c 60 //if(en2Read == en_2.read()) printf("C'est pareil");
benjaminroy 1:d37b1a61bd0b 61 }
benjaminroy 1:d37b1a61bd0b 62 }
marc1119 2:94e2eebf1524 63
benjaminroy 1:d37b1a61bd0b 64 void collection(void const *args) {
benjaminroy 1:d37b1a61bd0b 65 while (true) {
benjaminroy 1:d37b1a61bd0b 66 // attente et lecture d'un événement
benjaminroy 1:d37b1a61bd0b 67 // écriture de l'événement en sortie (port série)
benjaminroy 1:d37b1a61bd0b 68 }
benjaminroy 1:d37b1a61bd0b 69 }
marc1119 2:94e2eebf1524 70
benjaminroy 3:fa3112b2216c 71 void alarm() {
benjaminroy 3:fa3112b2216c 72 compteur++;
benjaminroy 3:fa3112b2216c 73 printf("ISR");
benjaminroy 3:fa3112b2216c 74 led1 = 1;
benjaminroy 3:fa3112b2216c 75
benjaminroy 3:fa3112b2216c 76 if (compteur % 2 == 0) {
benjaminroy 3:fa3112b2216c 77 // Entrées numériques échantillionnées à tous les 100 ms
benjaminroy 3:fa3112b2216c 78 led1 = 2;
benjaminroy 3:fa3112b2216c 79 printf("Echantillonnage des entrees numeriques\n");
benjaminroy 3:fa3112b2216c 80 t1->signal_set(0x1);
benjaminroy 3:fa3112b2216c 81 } else if (compteur % 5 == 0) {
benjaminroy 3:fa3112b2216c 82 // Entrées analogiques échantillonnées à tous les 250 ms
benjaminroy 3:fa3112b2216c 83 printf("Echantillonnage des entrees analogiques\n");
benjaminroy 3:fa3112b2216c 84 t1->signal_set(0x1);
marc1119 2:94e2eebf1524 85 }
benjaminroy 3:fa3112b2216c 86
benjaminroy 3:fa3112b2216c 87 if (compteur % 10 == 0) {
benjaminroy 3:fa3112b2216c 88 compteur = 0;
benjaminroy 3:fa3112b2216c 89 }
marc1119 2:94e2eebf1524 90 }
marc1119 2:94e2eebf1524 91
benjaminroy 1:d37b1a61bd0b 92 int main() {
marc1119 2:94e2eebf1524 93 // Démarrage des tâches
benjaminroy 3:fa3112b2216c 94 printf("Demarrage des taches...");
benjaminroy 3:fa3112b2216c 95
marc1119 2:94e2eebf1524 96 Thread t_lectureNum(lecture_num);
marc1119 2:94e2eebf1524 97 Thread t_lectureAna(lecture_analog);
marc1119 2:94e2eebf1524 98 Thread t_collection(collection);
marc1119 2:94e2eebf1524 99
marc1119 2:94e2eebf1524 100 t1 = &t_lectureNum;
marc1119 2:94e2eebf1524 101 t2 = &t_lectureAna;
marc1119 2:94e2eebf1524 102 t3 = &t_collection;
benjaminroy 3:fa3112b2216c 103
marc1119 2:94e2eebf1524 104 // Initialisation du RTC
benjaminroy 3:fa3112b2216c 105 //tm t = RTC::getDefaultTM();
benjaminroy 3:fa3112b2216c 106 //t.tm_sec = 5;
benjaminroy 3:fa3112b2216c 107 //RTC::alarm(&ISR, t);
benjaminroy 3:fa3112b2216c 108 ticker.attach(&alarm, 2.0);
benjaminroy 3:fa3112b2216c 109
benjaminroy 3:fa3112b2216c 110 while(1) { };
benjaminroy 1:d37b1a61bd0b 111 }