Guten Tag, ich habe mit einem Atmega32 ein PWM Signal generiert. Verwendet wird es für Servos, Motorregler, ... also der 50Hz Standard. Für z.B. 1ms habe ich 1975 als COMPARE-Wert (gemessen mit Oszi). Wie kann ich z.B. einen Wert von 3000 (ohne mit dem Oszi zu messen) in eine Zeit umrechnen? Danke im vorraus
3000*50ms/1975
Dreisatz? 1ms / 1975 * 3000 = 1,5ms Im absoluten Notfall kann man ja auch den Prozessortakt hernehmen, durch den programmierten Vorteiler dividieren und dann die Schrittweite des Timers berechnen. Aber wirklich nur im Notfall ... Peter
^^ups, ich meinte 1ms nicht 50ms
Servus, naja sowas macht man normalerweise über die bekannte Frequenz vom µC sowie der CaputerCompare Unit (also beim XC164 von Infineon). Hier gibts dann Relaodwerte und aktuelle Werte. Über die Frequenz kannst du ja dann zählen, wie wieviele Zyklen ein Count benötigt. Und anahnd der Frequenz weist du wielange ein Zyklus dauert! MfG Mathias
Danke für die Antworten. Ich kann den Wert ungefähr berechnen, indem ich mir einen am Oszi anschaue und dann die anderen daraus mit Volksschulmathematik berechne, soweit hab ich das herausgelesen. Aber wie berechne ich das aus dem CPU-Takt und dem Vorteiler?
1/((CPU_clk / Vorteiler)/ Compare-Wert)
Gast
#2293833
Oder wenn es mit dem Dreisatz und dem Rechnen gar nicht klappen will, läßt sich das im Simulator von AVRStudio mit der Stopuhranzeige auch ausprobieren. Breakpoints an die richtige Stelle und laufen lassen ...
Danke, werde das gleich mal testen (:
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.