Ich versuche zu verstehen, wie man am einfachsten ein PWM Signal auswerten kann.
Das PWM Signal das ich schlussendlich verarbeiten muss habe ich gemessen und ist so aufgebaut: Periodendauer 5.0ms (200Hz), Duty Cycle ist zwischen 800us und 2200us.
Das Signal ist eigentlich für ein schnelles Digital Servo.
Mich interessiert nur die Zeit wie lange die Flanke oben ist, also das DutyCycle.
Nun habe ich als Anfänger ein Code gebastelt, statt das PWM Signal benutze ich einen Taster. Wenn dieser gedrückt wird, printet es die Zeit in us aus bis ich den Taster loslasse.
Wie aber baue ich das ganze Professionell auf?
Das Programm müsste den Wert jeweils nur einmal als integer speichern pro Periode.
Beim nächsten Zyklus diesen überschreiben.
müsste ich dies als Interrupt bauen?
Existiert eventuell schon eine Funktion dafür?
Anbei ein Bild vom PWM und der Test Code:
https://www.bilder-upload.eu/bild-6a297 ... 1.jpg.html

Code: Alles auswählen
import utime
from time import sleep
import machine
taster = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)
while True:
if taster.value() == 0:
timer_start = utime.ticks_us()
if taster.value() == 1:
timer_stop = utime.ticks_us()
print("%.f us" % (timer_start - timer_stop))
sleep(0.2)