Respostas:
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.
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 esperado delay
)
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 de delay(x)
.
millis ()
ou delay ()
de qualquer maneira
millis()
apenas usa contagens de estouro do timer 0.micros()
lê o valor imediato emTCNT0
.