Does millis() conflict with the PWM pins associated with timer 0?
They do not conflict as millis()
strictly reads the immediate value in TCNT0
whereas PWM via timer 0 uses the hardware's ability to compare the value of TCNT0
with the values in OCR0x
without affecting the value of any of them.
Just to add to @Ignacio's answer which has directly answered your question. The "conflict" you speak of is in relation to Timer0
's prescaler.
For the most part, you can use those pins (incidentally pins 5 and 6 on the UNO) with PWM without an issue, and read the correct value of millis()
(as well as get the expected delay from delay
)
Where you run into problems is if you want to change the prescaler (usually to modify the frequency of the PWM signal). If you change this, then you directly affect the calculation and reporting of millis()
and the length of delay(x)
.