Odpowiedzi:
Nie powodują konfliktu, ponieważ millis()
ściśle odczytuje bezpośrednią wartość, podczas TCNT0
gdy PWM przez zegar 0 wykorzystuje zdolność sprzętu do porównania wartości TCNT0
z wartościami OCR0x
bez wpływu na wartość którejkolwiek z nich.
Wystarczy dodać do odpowiedzi @ Ignacio, która bezpośrednio odpowiedziała na twoje pytanie. „Konflikt”, o którym mówisz, odnosi się do Timer0
preskalera.
W większości przypadków możesz używać tych pinów (nawiasem mówiąc, pinów 5 i 6 w UNO) z PWM bez problemu i odczytać prawidłową wartość millis()
(a także uzyskać oczekiwane opóźnienie od delay
)
Występują problemy, jeśli chcesz zmienić preskaler (zwykle w celu modyfikacji częstotliwości sygnału PWM). Jeśli to zmienisz, bezpośrednio wpłyniesz na obliczenia, raportowanie millis()
i długość delay(x)
.
millis ()
lub w delay ()
każdym razie
millis()
po prostu używa liczników przepełnienia Timera 0.micros()
wczytuje bezpośrednią wartość wTCNT0
.