Yanıtlar:
Onlar çatışma yok millis()
kesinlikle acil değerini okur TCNT0
zamanlayıcı 0 kullanımları yoluyla değerini karşılaştırmak için donanım yeteneğini PWM oysa TCNT0
değerlerle OCR0x
bunlardan herhangi değerini etkilemeden.
Sorunuzu doğrudan cevaplayan @ Ignacio'nun cevabına eklemek için. Bahsettiğiniz "çatışma", Timer0
ön ölçekleyici ile ilgilidir.
Çoğunlukla, bu pinleri (tesadüfen UNO üzerindeki 5 ve 6 pinleri) PWM ile sorunsuz bir şekilde kullanabilir ve doğru değerini okuyabilirsiniz millis()
(ve beklenen gecikmeyi de alabilirsiniz delay
)
Sorunlarla karşılaştığınız yer, ön ölçekleyiciyi değiştirmek istiyorsanız (genellikle PWM sinyalinin frekansını değiştirmek için). Bunu değiştirirseniz, hesaplamasını ve raporlamasını millis()
ve uzunluğunu doğrudan etkiler delay(x)
.
millis ()
ya da delay ()
yine de sarmalayıcılar yazabiliyorsunuz
millis()
Zamanlayıcı 0 taşma sayılarını kullanır.micros()
içindeki anlık değeri okurTCNT0
.