Hallo,
ich habe jetzt schon einige beispiele des PWM getestet, doch leider
keine Lösung gefunden.
Wolle gerne ein Hardware PWM mit 50 Hz erzeugen in dem ich die
Puls/Pausen Verhältnis
ändern kann.
Mit Soft PWM kein Thema, doch dann habe ich für nix anders mehr zeit ;-)
Der Contoller sollte mit 8Mhz laufen, da ich noch eine Anzeige mit
steuere.
meine soft Lösung war: (xadc bekommt werte von 0 - 100, durch ADC read
und Formel)
Du teilst mithilfe eines geeigneten Prescalers deinen "Haupttakt"
herunter, überlegst dir dann, wie lange der µC für einen "Hochzähltakt"
braucht und lässt den Timer solange hochzählen, bis du ingesamt auf eine
Zeit von 1/50 Hz kommst.
Das sind wirklich die Basics! Arbeite das Tutorial durch!
noch nee dumme frage,
wenn ich jetzt den timer auf pre 1024 stelle.
TCCR1B = (1<<CS10) | (1<<CS12);
OCR1A = 78
sollte doch dann ca. 50ms (25an/25aus) sein?
Das ist dann 50er tastverhltnis,
doch muss ich jetzt in irq die verschiebung regen?
Oder habe ich da noch was nicht verstanden?
Wollte immer ca. 50Hz nur ...
on 10%, off 90% bis on 90% und off 10%
...das will noch nicht kick machen,
bin schon den ganzen tag am tudo...
?? also, bei mir sind auch 8MHZ /1024 = 7,8125Khz -> 7812,5 Hz und sind
doch 0,000128s -> 128 us und f=1/t -> 1/128us = 7,8125 kHz? oder nicht?
aber mir das das mit dem verschieben des Tastverhältnisses noch nicht
klar und auch nicht in tutorial...?
Oliver R. schrieb:> ?? also, bei mir sind auch 8MHZ /1024 = 7,8125Khz -> 7812,5 Hz und sind> doch 0,000128s -> 128 us und f=1/t -> 1/128us = 7,8125 kHz? oder nicht?FAQ: Timer> aber mir das das mit dem verschieben des Tastverhältnisses noch nicht> klar und auch nicht in tutorial...?
Was genau ist dir da nicht klar?
Du hast ein Rechtecksignal (ok, du hast 2 Signale im Vergleich)
+------+ +------+ +--...
| | | | |
| | | | |
| | | | |
------+ +-------------------+ +--------------------+
+----------------------+ +-----------------------+ +--...
| | | | |
| | | | |
| | | | |
------+ +---+ +---+
beide haben die gleiche Frequenz, denn der Abstand von der steigenden
Flanke bis zur nächsten steigenden Flanke ist in beiden Fällen derselbe.
Der einzige Unterschied: im 2. Signal dauert die High-Phase länger,
dafür ist die Low-Phase dementsprechend kürzer. Das erste hat einen
Tastgrad von (über den Däumen) 30%, das zweite hat einen Tastgrad von
ca. 90%.
Wenn also der Timer für einen kompletten PWM Zyklus (von steigender
Flanke bis zur nächsten steigenden Flanke) einmal von 0 bis 255 zählen
muss, dann muss er für die 30% von 0 bis 0.3*255 = 76 zählen, während er
zur Realisierung der 90% PWM bis 0.9*255 = 229 zählen muss, ehe er dann
bei Hardware-PWM den Pin wieder auf Low ziehen soll.
Bei Hardware-PWM kann das die Hardware selber machen, bei Software-PWM
muss man das dann eben in einem Programm nachbilden.
Oliver R. schrieb:> ?? also, bei mir sind auch 8MHZ /1024 = 7,8125Khz -> 7812,5 Hz und sind> doch 0,000128s -> 128 us und f=1/t -> 1/128us = 7,8125 kHz? oder nicht?>> aber mir das das mit dem verschieben des Tastverhältnisses noch nicht> klar und auch nicht in tutorial...?
Du hast natürlich recht. 0.128 ms sind natürlich 128 us. Mein Fehler ;-)