Go Down

Topic: Fonction Millis (Read 344 times) previous topic - next topic

vidalv

Bonjour à tous, j'ai une question sur la fonction Millis, sur quel horloge cette fonction est basée (en interne) ?
En d'autres termes y'a-t-il une relation (ou pas) avec la fréquence d'utilisation de l'UC ? Merci.

kammo

Millis est à zéro au démarrage de ton arduino et est cadencée, me semble-t-il, non pas par le µC mais par le cristal. L'utilisation de ton µC n'influence pas millis().

Des avis plus pointus vont suivre.
Make it, or make it burn.
carte des membres:
https://drive.google.com/open?id=1QmXJT44QyZHM3SIgDaMo7MGUbBSKAaVD&usp=sharing

kamill

Bonjour,

millis() est basé sur l'utilisation d'un timer, donc il y a bien sur une relation avec la fréquence horloge du processeur.
Le framework programme correctement le timer en fonction de l'horloge du micro. C'est pour ça que millis() fonctionnera correctement sur une arduino UNO ou sur un attiny85 fonctionnant à 1MHz (pourvu que tu ais déclaré la bonne fréquence d'horloge dans l'IDE).

vidalv

Merci pour les réponses, en fait si je veux programmer un Attiny85 à partir d'un sketch UNO j'ai tout intérêt à utiliser la clock interne à la même fréquence (par exemple 1Mhz) si je ne veux pas avoir de surprise au final.
Vu la diversité de carte qui existe et donc de UC cette fonction peut renvoyer des résultats différents d'une carte (ou UC) à un autre ?
Si par exemple je démarre en même temps un Uno et un Mega l'un à 1Mhz l'autre à 8Mhz j'obtiens quoi ? Sachant qu'au départ tous le monde est à zéro le Mega comptera 8X plus vite ou pas  ....
Merci.

_pepe_

#4
Jun 26, 2018, 11:29 am Last Edit: Aug 19, 2018, 01:45 am by _pepe_
Supprimé

_pepe_

#5
Jun 26, 2018, 11:49 am Last Edit: Aug 19, 2018, 01:45 am by _pepe_
Supprimé

kamill

Merci pour les réponses, en fait si je veux programmer un Attiny85 à partir d'un sketch UNO j'ai tout intérêt à utiliser la clock interne à la même fréquence (par exemple 1Mhz) si je ne veux pas avoir de surprise au final.
Non, le framework se charge d'initialiser le timer pour avoir la bonne valeur de millis (si tu as bien déclaré la bonne valeur d'horloge dans l'IDE).
Au passage une UNO fonctionne à 16MHz.

vidalv

Merci pour tous ces détails.
En fait une fonction qui cache quelques petites lacunes, compréhensibles, mais auxquelles il faut faire attention.
A utiliser en connaissance de cause.
Merci encore pour ces éclaircissements.
 ;D

Go Up