You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LoRaGateway_BTS2A/LoRaEthernet/task.h

57 lines
1.5 KiB
C

#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);
}
*/