S5Team
/
HelloWorld
none
Fork of HelloWorld by
main.cpp@4:2857c116c1e1, 2015-01-26 (annotated)
- Committer:
- JacquesEd
- Date:
- Mon Jan 26 22:29:40 2015 +0000
- Revision:
- 4:2857c116c1e1
- Parent:
- 3:58803195db3f
v1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:fb6bbc10ffa0 | 1 | #include "mbed.h" |
JacquesEd | 2:8d4c217c39e5 | 2 | //#include "rtos.h" |
JacquesEd | 2:8d4c217c39e5 | 3 | DigitalIn en_1(p15); |
JacquesEd | 2:8d4c217c39e5 | 4 | DigitalIn en_2(p16); |
JacquesEd | 2:8d4c217c39e5 | 5 | AnalogIn ea_1(p19); |
JacquesEd | 2:8d4c217c39e5 | 6 | AnalogIn ea_2(p20); |
JacquesEd | 2:8d4c217c39e5 | 7 | Serial pc (USBTX, USBRX); |
JacquesEd | 2:8d4c217c39e5 | 8 | |
JacquesEd | 4:2857c116c1e1 | 9 | int test[] = {1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,0,1,0 |
JacquesEd | 3:58803195db3f | 10 | ,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1 |
JacquesEd | 4:2857c116c1e1 | 11 | ,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,}; |
JacquesEd | 4:2857c116c1e1 | 12 | int indext = 0; |
JacquesEd | 2:8d4c217c39e5 | 13 | |
JacquesEd | 2:8d4c217c39e5 | 14 | //RtosTimer time ; |
JacquesEd | 2:8d4c217c39e5 | 15 | |
JacquesEd | 2:8d4c217c39e5 | 16 | int date = 0; |
JacquesEd | 2:8d4c217c39e5 | 17 | |
JacquesEd | 2:8d4c217c39e5 | 18 | int taille = 100; |
JacquesEd | 2:8d4c217c39e5 | 19 | int compteur = 0; |
JacquesEd | 2:8d4c217c39e5 | 20 | int index = 0; |
JacquesEd | 2:8d4c217c39e5 | 21 | int tableau[100][2]; |
JacquesEd | 2:8d4c217c39e5 | 22 | |
JacquesEd | 2:8d4c217c39e5 | 23 | int flag[2] = {0,1}; |
simon | 0:fb6bbc10ffa0 | 24 | |
JacquesEd | 2:8d4c217c39e5 | 25 | void lecture_analog(void const *args) |
JacquesEd | 2:8d4c217c39e5 | 26 | { |
JacquesEd | 2:8d4c217c39e5 | 27 | int sample[6][2]; |
JacquesEd | 2:8d4c217c39e5 | 28 | int i = 0; |
JacquesEd | 2:8d4c217c39e5 | 29 | for (i = 0; i <6; i ++) { |
JacquesEd | 3:58803195db3f | 30 | //sample[i][0] = args.read_u16(); |
JacquesEd | 3:58803195db3f | 31 | sample[i][0] = test[indext]; |
JacquesEd | 4:2857c116c1e1 | 32 | indext++; |
JacquesEd | 2:8d4c217c39e5 | 33 | // sample[i][1] = date; |
JacquesEd | 2:8d4c217c39e5 | 34 | } |
JacquesEd | 2:8d4c217c39e5 | 35 | i = 0; |
JacquesEd | 2:8d4c217c39e5 | 36 | while (true) { |
JacquesEd | 2:8d4c217c39e5 | 37 | |
JacquesEd | 2:8d4c217c39e5 | 38 | // synchronisation sur la période d'échantillonnage |
JacquesEd | 2:8d4c217c39e5 | 39 | flag[0] = 1; |
JacquesEd | 2:8d4c217c39e5 | 40 | while (flag[1] == 1) |
JacquesEd | 2:8d4c217c39e5 | 41 | thread.yield(); |
JacquesEd | 2:8d4c217c39e5 | 42 | |
JacquesEd | 2:8d4c217c39e5 | 43 | // lecture de l'étampe temporelle |
JacquesEd | 2:8d4c217c39e5 | 44 | //date = time.read_ms(); |
JacquesEd | 2:8d4c217c39e5 | 45 | // lecture des échantillons analogiques |
JacquesEd | 4:2857c116c1e1 | 46 | sample[i][0] = test[indext]; |
JacquesEd | 4:2857c116c1e1 | 47 | indext++; |
JacquesEd | 2:8d4c217c39e5 | 48 | i++; |
JacquesEd | 2:8d4c217c39e5 | 49 | |
JacquesEd | 2:8d4c217c39e5 | 50 | |
JacquesEd | 2:8d4c217c39e5 | 51 | // calcul de la nouvelle moyenne courante |
JacquesEd | 2:8d4c217c39e5 | 52 | if ((sample[i][0] - sample[(i+5)%6][0]) > 0x9FFF) { |
JacquesEd | 2:8d4c217c39e5 | 53 | tableau[i][0] = 1; // 1 pr analog |
JacquesEd | 2:8d4c217c39e5 | 54 | //tableau[i][1] = date; |
JacquesEd | 2:8d4c217c39e5 | 55 | } |
simon | 0:fb6bbc10ffa0 | 56 | |
JacquesEd | 2:8d4c217c39e5 | 57 | // génération éventuelle d'un événement |
JacquesEd | 2:8d4c217c39e5 | 58 | if (i >= 6) i = 0; |
JacquesEd | 2:8d4c217c39e5 | 59 | } |
JacquesEd | 2:8d4c217c39e5 | 60 | flag[0] = 0; |
JacquesEd | 2:8d4c217c39e5 | 61 | } |
JacquesEd | 2:8d4c217c39e5 | 62 | |
JacquesEd | 2:8d4c217c39e5 | 63 | void lecture_num(void const *args) |
JacquesEd | 2:8d4c217c39e5 | 64 | { |
JacquesEd | 2:8d4c217c39e5 | 65 | flag[1] = 1; |
JacquesEd | 2:8d4c217c39e5 | 66 | while (flag[0] == 1) |
JacquesEd | 2:8d4c217c39e5 | 67 | thread.yield(); |
JacquesEd | 4:2857c116c1e1 | 68 | |
JacquesEd | 2:8d4c217c39e5 | 69 | int value[2][2]; |
JacquesEd | 2:8d4c217c39e5 | 70 | int i = 0; |
JacquesEd | 4:2857c116c1e1 | 71 | value[i][0] = test[indext]; |
JacquesEd | 4:2857c116c1e1 | 72 | indext++; |
JacquesEd | 2:8d4c217c39e5 | 73 | //value[i][1] = date; |
JacquesEd | 2:8d4c217c39e5 | 74 | while (true) { |
JacquesEd | 2:8d4c217c39e5 | 75 | // synchronisation sur la période d'échantillonnage |
JacquesEd | 2:8d4c217c39e5 | 76 | |
JacquesEd | 2:8d4c217c39e5 | 77 | // lecture de l'étampe temporelle |
JacquesEd | 2:8d4c217c39e5 | 78 | //date = time.read_ms(); |
JacquesEd | 2:8d4c217c39e5 | 79 | // lecture des échantillons numériques |
JacquesEd | 2:8d4c217c39e5 | 80 | wait_ms(100); |
JacquesEd | 2:8d4c217c39e5 | 81 | i++; |
JacquesEd | 4:2857c116c1e1 | 82 | value[i][0] = test[indext]; |
JacquesEd | 4:2857c116c1e1 | 83 | indext++; |
JacquesEd | 2:8d4c217c39e5 | 84 | //value[i][1] = date; |
JacquesEd | 2:8d4c217c39e5 | 85 | // prise en charge du phénomène de rebond |
JacquesEd | 2:8d4c217c39e5 | 86 | if (value[0][0] != value[1][0]) { |
JacquesEd | 2:8d4c217c39e5 | 87 | wait_ms(50); |
JacquesEd | 4:2857c116c1e1 | 88 | int temp = test[indext]; |
JacquesEd | 4:2857c116c1e1 | 89 | indext++; |
JacquesEd | 2:8d4c217c39e5 | 90 | // génération éventuelle d'un événement |
JacquesEd | 4:2857c116c1e1 | 91 | if (temp == value[i][0]) { |
JacquesEd | 2:8d4c217c39e5 | 92 | tableau[compteur][0] = 0; //0 pr numérique |
JacquesEd | 2:8d4c217c39e5 | 93 | // tableau[compteur][1] = value[i][1]; |
JacquesEd | 2:8d4c217c39e5 | 94 | compteur++; |
JacquesEd | 2:8d4c217c39e5 | 95 | } |
JacquesEd | 2:8d4c217c39e5 | 96 | wait_ms(50); |
JacquesEd | 2:8d4c217c39e5 | 97 | } |
JacquesEd | 2:8d4c217c39e5 | 98 | if (i >=2) i = 0; |
JacquesEd | 2:8d4c217c39e5 | 99 | } |
JacquesEd | 2:8d4c217c39e5 | 100 | flag[1] = 0; |
JacquesEd | 2:8d4c217c39e5 | 101 | } |
JacquesEd | 2:8d4c217c39e5 | 102 | |
JacquesEd | 2:8d4c217c39e5 | 103 | void collection(void const *args) |
JacquesEd | 2:8d4c217c39e5 | 104 | { |
JacquesEd | 2:8d4c217c39e5 | 105 | int i = 0; |
JacquesEd | 2:8d4c217c39e5 | 106 | while (true) { |
JacquesEd | 2:8d4c217c39e5 | 107 | // attente et lecture d'un événement |
JacquesEd | 2:8d4c217c39e5 | 108 | |
JacquesEd | 2:8d4c217c39e5 | 109 | |
JacquesEd | 2:8d4c217c39e5 | 110 | // écriture de l'événement en sortie (port série) |
JacquesEd | 2:8d4c217c39e5 | 111 | if (tableau[i][0] == 0) |
JacquesEd | 2:8d4c217c39e5 | 112 | pc.printf("event_n at: "); |
JacquesEd | 2:8d4c217c39e5 | 113 | else |
JacquesEd | 2:8d4c217c39e5 | 114 | pc.printf("event_a at: "); |
JacquesEd | 2:8d4c217c39e5 | 115 | pc.printf ("%i", tableau[i][1]); |
JacquesEd | 2:8d4c217c39e5 | 116 | i++; |
simon | 0:fb6bbc10ffa0 | 117 | } |
simon | 0:fb6bbc10ffa0 | 118 | } |
JacquesEd | 2:8d4c217c39e5 | 119 | int main() |
JacquesEd | 2:8d4c217c39e5 | 120 | { |
JacquesEd | 2:8d4c217c39e5 | 121 | // initialisation du RTC |
JacquesEd | 2:8d4c217c39e5 | 122 | // time.start(); |
JacquesEd | 2:8d4c217c39e5 | 123 | // démarrage des tâches |
JacquesEd | 2:8d4c217c39e5 | 124 | while(1) { |
JacquesEd | 2:8d4c217c39e5 | 125 | // creation des threads |
JacquesEd | 2:8d4c217c39e5 | 126 | Thread event_n1 = new Thread(new lecture_num(en_1)); |
JacquesEd | 2:8d4c217c39e5 | 127 | Thread event_n2 = new Thread(new lecture_num(en_2)); |
JacquesEd | 2:8d4c217c39e5 | 128 | Thread event_a1 = new Thread(new lecture_analog(ea_1)); |
JacquesEd | 2:8d4c217c39e5 | 129 | Thread event_a2 = new Thread(new lecture_analog(ea_2)); |
JacquesEd | 2:8d4c217c39e5 | 130 | |
JacquesEd | 2:8d4c217c39e5 | 131 | event_n1.start(); |
JacquesEd | 2:8d4c217c39e5 | 132 | event_n2.start(); |
JacquesEd | 2:8d4c217c39e5 | 133 | event_a1.start(); |
JacquesEd | 2:8d4c217c39e5 | 134 | event_a2.start(); |
JacquesEd | 2:8d4c217c39e5 | 135 | } |
JacquesEd | 2:8d4c217c39e5 | 136 | // time.stop(); |
JacquesEd | 2:8d4c217c39e5 | 137 | } |