Ich habe gelesen, dass die millis()
Funktion denselben Timer wie einige PWM-Pins verwendet.
Wenn Sie diese PWM-Pins verwenden, wird millis()
trotzdem der richtige Wert zurückgegeben?
Sie stehen nicht in Konflikt, da millis()
der unmittelbare Wert strikt eingelesen wird, TCNT0
während PWM über Timer 0 die Fähigkeit der Hardware nutzt, den Wert von TCNT0
mit den Werten in zu vergleichen, OCR0x
ohne den Wert eines von ihnen zu beeinflussen.
millis()
Verwendet nur Timer 0 Überlaufzählungen.micros()
liest den unmittelbaren Wert inTCNT0
.Nur um die Antwort von @ Ignacio zu ergänzen, die Ihre Frage direkt beantwortet hat. Der "Konflikt", von dem Sie sprechen
Timer0
, bezieht sich auf den Vorteiler.Zum größten Teil können Sie diese Pins (im Übrigen die Pins 5 und 6 der UNO) problemlos mit PWM verwenden und den korrekten Wert von lesen
millis()
(sowie die erwartete Verzögerung von erhaltendelay
).Probleme treten auf, wenn Sie den Vorteiler ändern möchten (normalerweise, um die Frequenz des PWM-Signals zu ändern). Wenn Sie dies ändern, wirken Sie sich direkt auf die Berechnung und Berichterstellung
millis()
sowie auf die Länge von ausdelay(x)
.quelle
millis ()
oderdelay ()
sowieso schreiben könnten