Guten Abend,
die 16 bit PWM ist mir nicht klar. Im DB heißt es:
"The PWM resolution for fast PWM can be fixed to 8-, 9-, or 10-bit, or
defined by either ICR1 or OCR1A. The minimum resolution allowed is 2-bit
(ICR1 or OCR1A set to 0x0003), and the maximum resolution is 16-bit
(ICR1 or OCR1A set to MAX)"
Ich denke in OCR1A wird der Wert für die Breite des Impulses
eingetragen.
Wenn ich ihn auf MAX (0xFFFF) setze, kann ich ja die PWM nicht mehr
steuern. Kann mir jemand auf die Sprünge helfen?
Vielen Dank
Joachim
Hi
>Ich denke in OCR1A wird der Wert für die Breite des Impulses>eingetragen.
Im Mode 9, 11 und 15 ist OCR1A das Top-Register und bestimmt Auflösung
und Frequenz der PWM. Als Compareregister steht nur OCR1B zur Verfügung.
Hallo,
vielen Dank für Deine Antwort.
Heißt das, daß ich dann die Werte für die Impulsdauer in OCR1B eintragen
muß? An welchem Ausgang liegt dann die PWM?
Gruß
Joachim
Hi
>Heißt das, daß ich dann die Werte für die Impulsdauer in OCR1B eintragen>muß? An welchem Ausgang liegt dann die PWM?
'Ausgang' für OCR1B ist immer OC1B.
mfG Spess
Hallo Spess,
Deine zweite Antwort habe ich erst nach dem Absenden gelesen.
Ich kann also entweder in ICR1 0xFFFF eintragen und den Compare-Wert in
OCR1A (H und L) und OCR1B (H und L) oder MAX in OCR1A und habe dann nur
noch OCR1B als Compare-Register zur Verfügung.
Richtig?
Vielen Dank für Deine Mühe.
Joachim
Joachim schrieb:> Hallo Spess,>> Deine zweite Antwort habe ich erst nach dem Absenden gelesen.> Ich kann also entweder in ICR1 0xFFFF eintragen und den Compare-Wert in> OCR1A (H und L) und OCR1B (H und L) oder MAX in OCR1A und habe dann nur> noch OCR1B als Compare-Register zur Verfügung.>> Richtig?
Richtig.
HI
>Richtig?
Ja. Die $FFFF im Topregister aber nur, wenn du die vollen 16 Bit nutzen
willst. Bei kleineren Werte dürfen natürlich die Compareregister nicht
größer sein (Wenn du noch PWM haben willst).
MfG Spess
@Karl-Heinz
Vielen Dank.
@Spess
Herzlichen Dank für Deine Antworten.
Ich verstehe nur nicht, wie Ihr das aus dem DB rausgelesen habt.
Schöne Grüße
Joachim
Joachim schrieb:> Ich verstehe nur nicht, wie Ihr das aus dem DB rausgelesen habt.
Logik.
Wenn OCR1A die Rolle des Top-Registers übernimmt, dann bedeutet das, das
der Compare Match, den OCR1A auslösen kann, immer nur am Ende einer PWM
Periode erfolgen kann.
Nicht wirklich das, was man von einer PWM erwarten würde, wenn die
einzig mögliche Einstellung der PWM 100% ist.
K.-H. schrieb:
>Wenn OCR1A die Rolle des Top-Registers übernimmt, dann bedeutet das, das>der Compare Match, den OCR1A auslösen kann, immer nur am Ende einer PWM>Periode erfolgen kann.>Nicht wirklich das, was man von einer PWM erwarten würde, wenn die>einzig mögliche Einstellung der PWM 100% ist.
Genau das war ja meine Überlegung.
Daß OCR1B hier den Compare auslösen kann, habe ich nicht aus dem DB
herausgelesen. Ich habe mir OCR1A und B als getrennte Einheiten
vorgestellt.
Joachim schrieb:> K.-H. schrieb:>>>Wenn OCR1A die Rolle des Top-Registers übernimmt, dann bedeutet das, das>>der Compare Match, den OCR1A auslösen kann, immer nur am Ende einer PWM>>Periode erfolgen kann.>>Nicht wirklich das, was man von einer PWM erwarten würde, wenn die>>einzig mögliche Einstellung der PWM 100% ist.>> Genau das war ja meine Überlegung.> Daß OCR1B hier den Compare auslösen kann, habe ich nicht aus dem DB> herausgelesen.
Die OCR1x Register hängen ja grundsätzlich mit nichts zusammen. Wenn der
Wert im Zählregister mit dem OCR Register übereinstimmt, dann ist das
ein Compare Match. Und der bewirkt etwas. Zb einen Pin abschalten, der
beim Zählerstand 0 eingeschaltet wurde.
Nur weil der Timermodus auf PWM ist, bedeutet das ja nicht, dass alle
Register ihre grundsätzliche Funktion verlieren. In diesem Modus kriegt
der Compare Match vom OCR1A eine spezielle Bedeutung, in dem er den
Timer auf 0 zurück setzt. Aber das beeinflusst ja Compare Matches vom
OCR1B nicht.
> Ich habe mir OCR1A und B als getrennte Einheiten> vorgestellt.
Sind sie ja auch.
Sind sie ja auch.
Vielen Dank Karl-Heinz,
so langsam wird mir das klarer.
Eine letzte Frage hätte ich noch.
Kann ich ein Word-Tabelle mit 256 Werten so auslesen:
ldi ZL,LOW(Tab16*2)
ldi ZH,HIGH(Tab16*2)
up:
lpm r16,Z+
lpm r17,Z+
out OCR1AH, r17
out OCR1AL, r16
wait10ms, 1
inc count
cpi count, 255
brne up
__________________________________________________
Tab16: Das sind die 16-Bit-Werte für die PWM.
>Ich bevorzuge letztere Variante, da der Vergleich entfällt.
Hast Recht. Herzlichen Dank, jetzt steht der Exponential-Dimmung
nichts mehr im Wege.
Schöne Grüße
Joachim
Hallo,
ihr scheint ja total Ahnung von dem Attiny24 zu haben.
Ich bin an einer ähnlichen Funktion dran.
Ich möchte ein 40kHz PWM Signal ausgeben.
Leider komme ich nicht so wirklich voran, da ich nicht weiss, wie man im
Fast PWM-Mode die Frequenz einstellen kann.
Vielleicht könnt ihr mir ja weiter helfen.
Manuel
Manuel schrieb:> Hallo,> ihr scheint ja total Ahnung von dem Attiny24 zu haben.> Ich bin an einer ähnlichen Funktion dran.> Ich möchte ein 40kHz PWM Signal ausgeben.> Leider komme ich nicht so wirklich voran, da ich nicht weiss, wie man im> Fast PWM-Mode die Frequenz einstellen kann.> Vielleicht könnt ihr mir ja weiter helfen.> Manuel
Du hast einen recht alten Beitrag ausgegraben, aber dein Problem ist nur
mit Rechnen zu lösen.
Du hast einen Timer, der muss laufen damit auch die PWM funktioniert. Er
läuft mit der Frequenz T_freq. Dann spielt für die PWM_freq noch der
Top-Wert, also bis wohin gezählt werden kann, eine Rolle. Auch der ist,
je nach PWM-Mode, einstellbar (eben um definierte Frequenzen zu
erzeugen). Als Gleichung kann man also sagen für eine Fast-PWM
So, oder so ähnlich, steht das auch im Datenblatt, bei der "normalen"
PWM kommt dann noch ein Faktor 2 hinzu, steht aber auch im Datenblatt.