none

Dependencies:   mbed Threads

Fork of HelloWorld by Simon Ford

Revision:
2:8d4c217c39e5
Parent:
0:fb6bbc10ffa0
Child:
3:58803195db3f
diff -r 03c191369089 -r 8d4c217c39e5 main.cpp
--- a/main.cpp	Sun Jan 01 20:57:57 2012 +0000
+++ b/main.cpp	Mon Jan 26 21:56:51 2015 +0000
@@ -1,12 +1,129 @@
 #include "mbed.h"
+//#include "rtos.h"
+DigitalIn en_1(p15);
+DigitalIn en_2(p16);
+AnalogIn ea_1(p19);
+AnalogIn ea_2(p20);
+Serial pc (USBTX, USBRX);
+
+bool event_n = false;
+bool event_a = false;
+
+//RtosTimer time ;
+
+int date = 0;
+
+int taille = 100;
+int compteur = 0;
+int index = 0;
+int tableau[100][2];
+
+int flag[2] = {0,1};
 
-DigitalOut myled(LED1);
+void lecture_analog(void const *args)
+{
+    int sample[6][2];
+    int i = 0;
+    for (i = 0; i <6; i ++) {
+        sample[i][0] = args.read_u16();
+        // sample[i][1] = date;
+    }
+    i = 0;
+    while (true) {
+
+// synchronisation sur la période d'échantillonnage
+        flag[0] = 1;
+        while (flag[1] == 1)
+            thread.yield();
+
+// lecture de l'étampe temporelle
+        //date = time.read_ms();
+// lecture des échantillons analogiques
+        sample[i][0] = args.read_u16();
+        i++;
+
+
+// calcul de la nouvelle moyenne courante
+        if ((sample[i][0] - sample[(i+5)%6][0]) > 0x9FFF) {
+            tableau[i][0] = 1; // 1 pr analog
+            //tableau[i][1] = date;
+        }
 
-int main() {
-    while(1) {
-        myled = 1;
-        wait(0.2);
-        myled = 0;
-        wait(0.2);
+// génération éventuelle d'un événement
+        if (i >= 6) i = 0;
+    }
+    flag[0] = 0;
+}
+
+void lecture_num(void const *args)
+{
+    flag[1] = 1;
+    while (flag[0] == 1)
+        thread.yield();
+    int value[2][2];
+    int i = 0;
+    value[i][0] = args.read();
+    //value[i][1] = date;
+    while (true) {
+// synchronisation sur la période d'échantillonnage
+
+// lecture de l'étampe temporelle
+        //date = time.read_ms();
+// lecture des échantillons numériques
+        wait_ms(100);
+        i++;
+        value[i][0] =  args.read();
+        //value[i][1] = date;
+// prise en charge du phénomène de rebond
+        if (value[0][0] != value[1][0]) {
+            wait_ms(50);
+            int *temp = new int;
+            temp = args.read();
+            // génération éventuelle d'un événement
+            if (temp == value[i]) {
+                tableau[compteur][0] = 0;   //0 pr numérique
+                // tableau[compteur][1] = value[i][1];
+                compteur++;
+            }
+            wait_ms(50);
+        }
+        if (i >=2) i = 0;
+    }
+    flag[1] = 0;
+}
+
+void collection(void const *args)
+{
+    int i = 0;
+    while (true) {
+// attente et lecture d'un événement
+
+
+// écriture de l'événement en sortie (port série)
+        if (tableau[i][0] == 0)
+            pc.printf("event_n at: ");
+        else
+            pc.printf("event_a at: ");
+        pc.printf ("%i", tableau[i][1]);
+        i++;
     }
 }
+int main()
+{
+// initialisation du RTC
+   // time.start();
+// démarrage des tâches
+    while(1) {
+        // creation des threads
+        Thread event_n1 = new Thread(new lecture_num(en_1));
+        Thread event_n2 = new Thread(new lecture_num(en_2));
+        Thread event_a1 = new Thread(new lecture_analog(ea_1));
+        Thread event_a2 = new Thread(new lecture_analog(ea_2));
+
+        event_n1.start();
+        event_n2.start();
+        event_a1.start();
+        event_a2.start();
+    }
+   // time.stop();
+}
\ No newline at end of file