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.
main.cpp@3:fa3112b2216c, 2017-01-27 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |