Hi, ich möchte ein Pulsweitenmoduliertes Signal mit einem ATmega8 auswerten. Kann mir jemand eventuell eine kleine Anleitung ( stichpunktartig) geben, wie ich da vorgehe. Hardware ist alles vorhanden. kann ich das mit dem 8bit Timer lösen oder nicht... das Signal ist maximal 10ms lang vielen Dank Lutz
Hallo, ich habe sowas auch mal benötigt und es mit der Capture/Compare-Unit gelöst. Das sah in etwa so aus: - Timer im Capture Mode starten - mit externen Interrupt wartet man auf pos. oder neg. Flanke und speichert den Inhalt vom Capture-Register in eine Variable (= aktueller Timerstand) - beim nächsten Interrupt wieder dann aktuellen Timerstand einfangen und in eine zweite Variable speichern - dann diese beiden Werte subtrahieren und man erhält die Dauer an Maschinentakten für eine Periodendauer - nun mittels Oszillatorfreq. und ggf. Prescaler die Dauer eines Maschinentaktes berechnen und das o.g. Ergebnis aus der Subtraktion hiermit multiplizieren und in Variablen speichern - jetzt kann man in einer dritten Variablen das Ergebnis in sek. abrufen - aber sehr ungenau - wenn das PWM schnell ändert! - daher ist es angebracht eine Mittelwertbildung einzuführen z.B. über Ringspeicher, dann hat man immer den aktuellsten Wert, oder ganz stupide z.B. 10 Werte speichern dann arithm. Mittel bilden und Wert ausgeben, auf LCD oder wo auch immer, Nachteil: es müssen immer erst eine bestimmte Anzahl Werte gesammelt werden. Daher Vorteil beim Ringspeicher: Wenn ein neuer Wert ankommt, fällt der erste raus und das Mittel wird sofort gebildet, usw. Viel Spaß beim probieren...Enrico P.S.: Das ist natürlich nur ein Lösungsweg und vielleicht auch nicht der eleganteste, but it works...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.