Eu li que a millis()
função usa o mesmo timer de dois pinos PWM.
Se você estiver usando esses pinos PWM, millis()
ainda retornará o valor correto?
Eles não entram em conflito, pois millis()
lê estritamente o valor imediato, TCNT0
enquanto o PWM via timer 0 usa a capacidade do hardware para comparar o valor TCNT0
com os valores OCR0x
inseridos sem afetar o valor de nenhum deles.
millis()
apenas usa contagens de estouro do timer 0.micros()
lê o valor imediato emTCNT0
.Apenas para adicionar à resposta de @ Ignacio, que respondeu diretamente à sua pergunta. O "conflito" de que você fala está em relação ao
Timer0
pré-calibrador.Na maioria das vezes, você pode usar esses pinos (aliás os pinos 5 e 6 no UNO) com o PWM sem problemas e ler o valor correto de
millis()
(além de obter o atraso esperadodelay
)Onde você encontra problemas é se deseja alterar o pré-calibrador (geralmente para modificar a frequência do sinal PWM). Se você alterar isso, você afetará diretamente o cálculo, os relatórios
millis()
e o comprimento dedelay(x)
.fonte
millis ()
oudelay ()
de qualquer maneira