Antworten:
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.
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 erhalten delay
).
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 aus delay(x)
.
millis ()
oder delay ()
sowieso schreiben könnten
millis()
Verwendet nur Timer 0 Überlaufzählungen.micros()
liest den unmittelbaren Wert inTCNT0
.