J'ai lu que la millis()
fonction utilise la même minuterie que quelques broches PWM.
Si vous utilisez ces broches PWM, millis()
renverra- t-il toujours la valeur correcte?
Ils n'entrent pas en conflit car millis()
lit strictement la valeur immédiate dans TCNT0
alors que PWM via le temporisateur 0 utilise la capacité du matériel pour comparer la valeur de TCNT0
avec les valeurs dans OCR0x
sans affecter la valeur de l'un d'eux.
millis()
utilise simplement le nombre de dépassements du temporisateur 0.micros()
lit la valeur immédiate enTCNT0
.Juste pour ajouter à la réponse de @ Ignacio qui a directement répondu à votre question. Le «conflit» dont vous parlez est lié au
Timer0
prescaler de.Pour la plupart, vous pouvez utiliser ces broches (accessoirement les broches 5 et 6 sur l'UNO) avec PWM sans problème, et lire la valeur correcte de
millis()
(ainsi qu'obtenir le retard attendu dedelay
)Lorsque vous rencontrez des problèmes, c'est si vous souhaitez modifier le pré-échelle (généralement pour modifier la fréquence du signal PWM). Si vous changez cela, vous affectez directement le calcul et le rapport de
millis()
et la longueur dedelay(x)
.la source
millis ()
ou dedelay ()
toute façon