|
|
|
|
|
#ifndef DaKTASK
|
|
|
#define DaKTASK
|
|
|
|
|
|
// la tàche est effectuee avec un delai de PeriodeMilliSecondes entre deux executions.
|
|
|
// consomme 4 octets de RAM
|
|
|
// exemple : cron(1000){ // code <20> r<>p<EFBFBD>ter toutes les secondes }
|
|
|
#define cron(PeriodeMilliSecondes) for( \
|
|
|
static unsigned long __nextmillis = 0; \
|
|
|
millis() - __nextmillis >= (unsigned long)(PeriodeMilliSecondes); \
|
|
|
__nextmillis = millis() \
|
|
|
)
|
|
|
|
|
|
// la tàche est effectuee avec un delai de PeriodeMilliSecondes entre deux executions.
|
|
|
// consomme 4 octets de RAM
|
|
|
#define task(NomTache,PeriodeMilliSecondes) for( \
|
|
|
static unsigned long DaKTASK_ ## NomTache = 0; \
|
|
|
millis() - DaKTASK_ ## NomTache >= (unsigned long)(PeriodeMilliSecondes); \
|
|
|
DaKTASK_ ## NomTache = millis() \
|
|
|
)
|
|
|
|
|
|
// la tàche est effectuee pr<70>cis<69>ment toutes les PeriodeMilliSecondes.
|
|
|
// consomme 8 octets de RAM
|
|
|
#define ftask(NomTache,PeriodeMilliSecondes) for( \
|
|
|
static unsigned long DaKTASK_ ## NomTache = 0, millis_ ## NomTache = 0; \
|
|
|
(millis_ ## NomTache = millis()) - DaKTASK_ ## NomTache >= (unsigned long)(PeriodeMilliSecondes); \
|
|
|
DaKTASK_ ## NomTache = millis_ ## NomTache \
|
|
|
)
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
void setup() {
|
|
|
Serial.begin(9600);
|
|
|
pinMode(13, OUTPUT);
|
|
|
}
|
|
|
|
|
|
void loop() {
|
|
|
Task( Toto, 1500 ){
|
|
|
Serial.print("Toto=");
|
|
|
Serial.println( millis() );
|
|
|
}
|
|
|
|
|
|
Task( line, 3000) Serial.println(F("-----------------"));
|
|
|
|
|
|
FTask( LED, 100 ){ PORTB ^= 0x20; } // clignoter la LED
|
|
|
|
|
|
cron(500){ PORTB ^= 0x20; } // clignoter la LED toutes les secondes
|
|
|
|
|
|
delay(11);
|
|
|
}
|
|
|
*/
|