App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

Revision:
3:fa3112b2216c
Parent:
2:94e2eebf1524
Child:
4:8f40ed50c04b
--- a/main.cpp	Thu Jan 26 21:24:12 2017 +0000
+++ b/main.cpp	Fri Jan 27 01:05:21 2017 +0000
@@ -2,19 +2,26 @@
 #include "rtos.h"
 #include "RTC.h"
 
+Ticker ticker;
 DigitalIn en_1(p15);
 DigitalIn en_2(p16);
+
 AnalogIn ea_1(p19);
 AnalogIn ea_2(p20);
-DigitalOut led(LED1);
+
+DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 
 Thread *t1;
 Thread *t2;
 Thread *t3;
 
-bool isReadyToRead = false;
-bool isFirstData = true; //#Cheap Bool
+uint8_t compteur = 0;
+
+// -------------------------------------------------------
+// -------------------------------------------------------
+
+
 void lecture_analog(void const *args) {
     while (true) {
         // synchronisation sur la période d'échantillonnage
@@ -26,30 +33,31 @@
 }
 
 void lecture_num(void const *args) {
+    // prise en charge du phénomène de rebond
+    // génération éventuelle d'un événement
+    
     while (true) {
-        //led = en_1;
-        //printf("1: %d\n", en_1.read());
-        //wait(0.25);
-        //led2 = en_2;
-        //printf("2: %d\n", en_2.read());
-        //wait(0.25);
-        
-        // synchronisation sur la période d'échantillonnage
+        // Synchronisation sur la période d'échantillonnage
         Thread::signal_wait(0x1);
-        
-        // lecture de l'étampe temporelle
+           
+        // Lecture des échantillons numériques
+        uint8_t entreenum_1 = en_1.read();
+        uint8_t entreenum_2 = en_2.read();
+        printf("Valeur de l''entree numerique 1 %d", entreenum_1);
+        printf("Valeur de 2''entree numerique 2 %d", entreenum_2);
         
-        // lecture des échantillons numériques
-        uint8_t en1Read = en_1.read();
-        uint8_t en2Read = en_2.read();
         Thread::yield();
-        // prise en charge du phénomène de rebond
-        Thread::signal_wait(0x2);
+        
+        // Lecture de l'étampe temporelle
+        time_t t = std::time(NULL);
+        printf("%ld\n", (long)t);
+
+        //Thread::signal_wait(0x2);
         //if changement valider si on a une valeur et si oui demander d'aller le lire dans 50 ms.
         //Signal ISR que dans 50ms on veut qu'il nous rappel dans 50ms
         // génération éventuelle d'un événement
-        if(en1Read == en_1.read()) printf("C'est pareil");
-        if(en2Read == en_2.read()) printf("C'est pareil");
+        //if(en1Read == en_1.read()) printf("C'est pareil");
+        //if(en2Read == en_2.read()) printf("C'est pareil");
     }
 }
 
@@ -60,28 +68,31 @@
     }
 }
 
-void signalThread()
-{
-    //Compter jusqu'à 10
-    //Si modulo 2 num
-    //modulo 5 anal
-    //modulo 10 remettre 0
-
-    //if(flag)
-    if(isFirstData)
-    {
-        isFirstData = false;
-        return;
+void alarm() {
+    compteur++;
+    printf("ISR");
+    led1 = 1;
+    
+    if (compteur % 2 == 0) {
+        // Entrées numériques échantillionnées à tous les 100 ms
+        led1 = 2;
+        printf("Echantillonnage des entrees numeriques\n");
+        t1->signal_set(0x1);
+    } else if (compteur % 5 == 0) {
+        // Entrées analogiques échantillonnées à tous les 250 ms
+        printf("Echantillonnage des entrees analogiques\n");
+        t1->signal_set(0x1);
     }
-    printf("test");
-    if(isReadyToRead) t1->signal_set(0x1);
-    else t1->signal_set(0x2);
-    //t2.signal_set(0x1);
+    
+    if (compteur % 10 == 0) {
+        compteur = 0;
+    }
 }
 
 int main() {
-    /*
     // Démarrage des tâches
+    printf("Demarrage des taches...");
+
     Thread t_lectureNum(lecture_num);
     Thread t_lectureAna(lecture_analog);
     Thread t_collection(collection);
@@ -89,12 +100,12 @@
     t1 = &t_lectureNum;
     t2 = &t_lectureAna;
     t3 = &t_collection;
-    printf("test1");
+    
     // Initialisation du RTC
-    tm t = RTC::getDefaultTM();
-    t.tm_sec = 0.05;
-    RTC::alarm(&signalThread, t);
-    */
-     printf("test1");
-    //while(1) {}
+    //tm t = RTC::getDefaultTM();
+    //t.tm_sec = 5; 
+    //RTC::alarm(&ISR, t);
+    ticker.attach(&alarm, 2.0);
+    
+    while(1) { };
 }
\ No newline at end of file