Forum: Mikrocontroller und Digitale Elektronik 16Bit-PWM mit ATtiny24


von Joachim (Gast)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

Hi

Mist, zu früh auf Absenden gedrückt.

Im Mode 8, 10 und 14 ist ICR1 das Top-Register. Da ist PWM mit OCR1A und 
OCR1B möglich.

MfG Spess

von Joachim (Gast)


Lesenswert?

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

von Spess53 (Gast)


Lesenswert?

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

von Joachim (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

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

von Joachim (Gast)


Lesenswert?

@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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Joachim (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Joachim (Gast)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

Hi

>Kann ich ein Word-Tabelle mit 256 Werten so auslesen:

Jain. Damit nur 255 Werte. Entweder
1
  inc count
2
  cpi count, 0
3
  brne up
4
5
6
oder
7
8
  clr count
9
  ...
10
11
  dec count
12
  brne up

Ich bevorzuge letztere Variante, da der Vergleich entfällt.

MfG Spess

von Joachim (Gast)


Lesenswert?

>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

von Manuel (Gast)


Lesenswert?

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

von M. K. (sylaina)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.