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.
main.cpp
- Committer:
- benjaminroy
- Date:
- 2017-01-27
- Revision:
- 4:8f40ed50c04b
- Parent:
- 3:fa3112b2216c
- Child:
- 5:79b5773e6764
File content as of revision 4:8f40ed50c04b:
#include "mbed.h"
#include "rtos.h"
Ticker ticker;
DigitalIn en_1(p15);
DigitalIn en_2(p16);
AnalogIn ea_1(p19);
AnalogIn ea_2(p20);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
Thread *t1;
Thread *t2;
Thread *t3;
uint8_t compteur = 0;
// -------------------------------------------------------
// -------------------------------------------------------
void lecture_analog(void const *args) {
while (true) {
// synchronisation sur la période d'échantillonnage
// lecture de l'étampe temporelle
// lecture des échantillons analogiques
// calcul de la nouvelle moyenne courante
// génération éventuelle d'un événement
}
}
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) {
// Synchronisation sur la période d'échantillonnage
Thread::signal_wait(0x1);
// Lecture des échantillons numériques
led2 = 1;
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);
//Thread::yield();
// 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");
}
}
void collection(void const *args) {
while (true) {
// attente et lecture d'un événement
// écriture de l'événement en sortie (port série)
}
}
void alarm() {
compteur++;
led3 = !led3;
if (compteur % 2 == 0) {
// Entrées numériques échantillionnées à tous les 100 ms
led1 = 1;
printf("Echantillonnage des entrees numeriques\n");
t1->signal_set(0x1);
} else if (compteur % 5 == 0) {
// Entrées analogiques échantillonnées à tous les 250 ms
led4 = 1;
printf("Echantillonnage des entrees analogiques\n");
t1->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);
t1 = &t_lectureNum;
t2 = &t_lectureAna;
t3 = &t_collection;
// Initialisation du RTC
ticker.attach(&alarm, 2);
while(1) {}
}