app4
Dependencies: mbed-rtos mbed CRC16
Fork of S5info_APP2 by
Diff: main.cpp
- Revision:
- 3:3ecbcc05bc85
- Parent:
- 2:c6465d4e82d2
- Child:
- 4:87e9b434bb4d
diff -r c6465d4e82d2 -r 3ecbcc05bc85 main.cpp --- a/main.cpp Tue Jan 31 00:51:06 2017 +0000 +++ b/main.cpp Tue Jan 31 19:05:27 2017 +0000 @@ -1,4 +1,4 @@ -#include "mbed.h" +//#include "mbed.h" #include "rtos.h" #define UN_HUITIEME_SHORT 0x1FFF @@ -20,13 +20,11 @@ Thread* t1; Thread* t2; -Thread* t3; DigitalIn* en_1; DigitalIn* en_2; AnalogIn* ea_1; AnalogIn* ea_2; -Serial* pc; Mutex* mutex; Mail<message_t, 16>* Mailbox; @@ -91,16 +89,12 @@ mutex->lock(); Mailbox->put(msg); mutex->unlock(); - - // Signal the new message - t3->signal_set(1); - t1->yield(); - t2->yield(); } void lecture_analog() { while (true) { // synchronisation sur la période d'échantillonnage + t1->signal_clr(1); t1->signal_wait(1); // lecture de l'étampe temporelle @@ -123,14 +117,12 @@ u16Last_p19 = res_p19; u16Last_p20 = res_p20; - - t1->signal_clr(1); - t1->yield(); } } void lecture_num() { while (true) { // synchronisation sur la période d'échantillonnage + t2->signal_clr(1); t2->signal_wait(1); // lecture de l'étampe temporelle @@ -147,37 +139,16 @@ if (en_1->read() == bP15 && bP15 != bLast_p15) { MailBox_put(curTime, 15, bP15); + bLast_p15 = bP15; } if (en_2->read() == bP16 && bP16 != bLast_p16) { MailBox_put(curTime, 16, bP16); + bLast_p16 = bP16; } - bLast_p15 = bP15; - bLast_p16 = bP16; - - t2->signal_clr(1); - t2->yield(); } } -void collection() { - while (true) { - // attente et lecture d'un événement - t3->signal_wait(1); - mutex->lock(); - while (Mailbox->get().status == osEventMail) - { - message_t* msg = (message_t*)Mailbox->get().value.p; - - // écriture de l'événement en sortie (port série) - pc->printf("[%s] Evenement de la pin %d avec valeur %d\n", ctime(&(msg->timestamp)), msg->pin_id, msg->value); - - Mailbox->free(msg); - } - mutex->unlock(); - t3->signal_clr(1); - t3->yield(); - } -} + int main() { // Initialization de tous les globals Mailbox = new Mail<message_t, 16>(); @@ -188,19 +159,16 @@ ea_1 = new AnalogIn(p19); ea_2 = new AnalogIn(p20); mutex = new Mutex(); - pc = new Serial(USBTX, USBRX); // set the time - set_time(1485887400); + set_time(1485887400 - 18000); // -18000 car GMT -5, hardcodé pour 31 janvier 13h30 // démarrage des tâches t1 = new Thread(); t2 = new Thread(); - t3 = new Thread(); t1->start(lecture_analog); t2->start(lecture_num); - t3->start(collection); Ticker tick1; Ticker tick2; @@ -208,6 +176,17 @@ tick1.attach(&signal_digital, 0.1); tick2.attach(&signal_analog, 0.25); - while(1) { + while(true) { + // attente et lecture d'un événement + osEvent Mail = Mailbox->get(); + if (Mail.status == osEventMail) + { + message_t* msg = (message_t*)Mail.value.p; + + // écriture de l'événement en sortie (port série) + printf("%s - Evenement de la pin %d avec valeur %d\n\n", ctime(&(msg->timestamp)), msg->pin_id, msg->value); + + Mailbox->free(msg); + } } } \ No newline at end of file