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.
Diff: main.cpp
- 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