Réponses:
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.
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 de delay
)
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 de delay(x)
.
millis ()
ou de delay ()
toute façon
millis()
utilise simplement le nombre de dépassements du temporisateur 0.micros()
lit la valeur immédiate enTCNT0
.