Jawaban:
Mereka tidak bertentangan karena millis()
secara ketat membaca nilai langsung di mana TCNT0
PWM melalui timer 0 menggunakan kemampuan perangkat keras untuk membandingkan nilai TCNT0
dengan nilai-nilai OCR0x
tanpa mempengaruhi nilai dari mereka.
Hanya dengan menambahkan jawaban @ Ignacio yang langsung menjawab pertanyaan Anda. "Konflik" yang Anda bicarakan terkait dengan Timer0
prescaler.
Untuk sebagian besar, Anda dapat menggunakan pin tersebut (kebetulan pin 5 dan 6 pada UNO) dengan PWM tanpa masalah, dan membaca nilai yang benar dari millis()
(serta mendapatkan penundaan yang diharapkan dari delay
)
Di mana Anda mengalami masalah adalah jika Anda ingin mengubah prescaler (biasanya untuk mengubah frekuensi sinyal PWM). Jika Anda mengubah ini, maka Anda secara langsung mempengaruhi perhitungan dan pelaporan millis()
dan panjangnya delay(x)
.
millis ()
atau delay ()
tetap
millis()
hanya menggunakan Timer 0 jumlah limpahan.micros()
membaca nilai langsung diTCNT0
.