delay et millis

Bonsoir
Au cas où quelqu’un est encore réveillé, voici ma question : si je mets un delay dans un code, est-ce que millis() est stoppé pendant la durée du delay, ou bien le chrono continue t-il de tourner ?
Merci

Bonne nuit !

millis() renvoie le nombre de millisecondes depuis le lancement du programme, rien ne l'arrête :wink:

unsigned long t0 = millis();
delay ( 5000 );
unsigned long t1 = millis();
Serial.println ( t1 - t0 );

xartefact:
millis() renvoie le nombre de millisecondes depuis le lancement du programme, rien ne l'arrête :wink:

pas tout à fait correct, dans le code d’une ISR ( interruption ) la fonction millis() ne compte plus par exemple

Le compteur du timer ne s'arrète jamais une fois lancé parce que c'est de l'électronique spécialisée et indépendante à l'intérieur de la puce.

Par contre la lecture et le traitement de ce compteur sont bloqués par un delay().

A mon avis le résultat va dépendre de la longueur du delay().
Si le compteur du timer n'a pas débordé millis() devrait retomber sur ses pieds, dans le cas contraire c'est impossible.

Bonjour,

Le compteur millis est géré par une interruption timer environ toutes les ms.
Ce compteur peut être perturbé si on masque cette interruption plus de 2ms (même si on masque les interruptions plus de 1ms mais moins de 2ms l'interruption sera traitée car elle est latchée).

Donc delay() ne perturbe pas mills() (encore heureux car delay utilise le compteur de millis)

68tjs:
Par contre la lecture et le traitement de ce compteur sont bloqués par un delay().

Non - millis est géré par interruption et delay ne bloque pas les interruptions

Edit - mon blabla se résumé à celui de kamill :slight_smile: pas de valeur ajoutée :slight_smile:

Ok, merci à tous ; je vois qu'il y en a qui font nocturne !!