none

Dependencies:   mbed Threads

Fork of HelloWorld by Simon Ford

Committer:
JacquesEd
Date:
Mon Jan 26 22:29:40 2015 +0000
Revision:
4:2857c116c1e1
Parent:
3:58803195db3f
v1

Who changed what in which revision?

UserRevisionLine numberNew 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 }