Saya pernah membaca bahwa millis()
fungsinya menggunakan timer yang sama dengan beberapa pin PWM.
Jika Anda menggunakan pin PWM itu, apakah millis()
masih akan mengembalikan nilai yang benar?
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.
millis()
hanya menggunakan Timer 0 jumlah limpahan.micros()
membaca nilai langsung diTCNT0
.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 daridelay
)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 panjangnyadelay(x)
.sumber
millis ()
ataudelay ()
tetap