Czytałem, że millis()
funkcja używa tego samego timera co kilka pinów PWM.
Jeśli używasz tych styków PWM, czy millis()
nadal zwróci prawidłową wartość?
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.
millis()
po prostu używa liczników przepełnienia Timera 0.micros()
wczytuje bezpośrednią wartość wTCNT0
.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 oddelay
)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)
.źródło
millis ()
lub wdelay ()
każdym razie