He leído que la millis()
función usa el mismo temporizador que un par de pines PWM.
Si está utilizando esos pines PWM, ¿ millis()
aún devolverá el valor correcto?
No entran en conflicto, ya que millis()
lee estrictamente el valor inmediato, TCNT0
mientras que PWM a través del temporizador 0 usa la capacidad del hardware para comparar el valor de TCNT0
con los valores OCR0x
sin afectar el valor de ninguno de ellos.
millis()
solo usa el conteo de desbordamiento del temporizador 0.micros()
lee el valor inmediato enTCNT0
.Solo para agregar a la respuesta de @ Ignacio que ha respondido directamente a su pregunta. El "conflicto" del que hablas está relacionado con
Timer0
el preescalador.En su mayor parte, puede usar esos pines (incidentalmente los pines 5 y 6 en UNO) con PWM sin problemas y leer el valor correcto de
millis()
(así como obtener el retraso esperado dedelay
)Donde tiene problemas es si desea cambiar el preescalador (generalmente para modificar la frecuencia de la señal PWM). Si cambia esto, entonces afecta directamente el cálculo y la presentación de informes
millis()
y la duración dedelay(x)
.fuente
millis ()
o dedelay ()
todos modos