Risposte:
Non sono in conflitto poiché millis()
leggono rigorosamente il valore immediato in TCNT0
mentre PWM tramite il timer 0 utilizza la capacità dell'hardware di confrontare il valore di TCNT0
con i valori in OCR0x
senza influenzare il valore di nessuno di essi.
Solo per aggiungere alla risposta di @ Ignacio che ha risposto direttamente alla tua domanda. Il "conflitto" di cui parli è in relazione al Timer0
prescaler.
Per la maggior parte, è possibile utilizzare quei pin (per inciso pin 5 e 6 su UNO) con PWM senza problemi e leggere il valore corretto di millis()
(nonché ottenere il ritardo previsto da delay
)
Il punto in cui si verificano problemi è se si desidera modificare il prescaler (di solito per modificare la frequenza del segnale PWM). Se lo modifichi, influisci direttamente sul calcolo e sulla segnalazione millis()
e sulla lunghezza di delay(x)
.
millis ()
o delay ()
comunque
millis()
utilizza solo i conteggi di overflow del Timer 0.micros()
legge il valore immediato inTCNT0
.