ATtiny13A - PWM Frage

OP #1571881
Ich habe eine Frage zur PWM-Erzeugung mit dem ATtiny13A.
Ein PWM Mode ist mir unklar:

- Fast PWM mit TOP = OCRA ( mode 7: WGM[2..0] = 111 )

Die "normale" Fast PWM (TOP = 255) funktioniert so, dass zB einer der 
Ausgänge OC0n bei Timer0 = 0 gesetzt wird, und bei Timer0 = OCR0n 
zurückgesetzt wird, schon habe wir eine PWM mit Frequenz f = ftimer / 
255 und einem Duty Cycle von OCR0n / 255.

In Mode 7 mit TOP = OCRA wird nun scheinbar OC0A (im Datenblatt 
Druckfehler "AC0A"!, Seite 66) getoggled.

------------
FRAGE:
Woher bekomme ich den Anfangszustand? einfach den Port vor den Timer 
Registern setzen?
-----------

Was ich eigentlich suche ist eine PWM mit fester hoher Frequenz 
(>f/255), leider scheint das in reiner Hardware nicht zu gehen (hab's 
schon mit nem ATmega8 gemacht, der kann da noch die ICRs nutzen).
Scheinbar muss ich Fast PWM mode nehmen und immer auf Overflow Interrupt 
den Timer-Wert setzen. Doof, wenn man noch ein bischen längere ADC 
interrupts laufen hat. :(
Bei Mode 3 ist TOP=255, bei Mode 7 kannst Du TOP selbst setzen. 
Ansonsten funktionieren beide gleich: Sie starten bei Bottom und setzen 
den Ausgabepin auf HIGH, wird der Compare-Wert erreicht setzen sie den 
Ausgabepin auf LOW, wird TOP ueberschritten, beginnt alles von vorne. 
Das ganze kannst Du auch invertiert ablaufen lassen.

Jetzt kommt es drauf an, wie genau Du Deine PWM steuern koennen willst. 
Die schnellstmoegliche PWM ist dann f/Steuerschritte.

Reichen Dir 10 moegliche PWM-Schritte, setzt du TOP auf 9 und kannst den 
Compare-Match dann im Bereich von 0-9 einstellen. Die PWM-Frequenz liegt 
dann bei f/10.

Bei Mode 3 (TOP=255) hast Du uebrigens eine PWM-Frequenz von f/256, 
nicht f/255. Auch der Sprung von 255 auf 0 braucht einen Tick.

Volker
OP
Danke schon mal für die Antwort!

In Mode 7 setze ich TOP selber über OCR0A.
ABER wo steht dann der Compare Wert?

So weit ich das verstehe eben nirgends, dann kann man nur Ausgang OC0A 
toggeln lassen bei TOP.
Aber es wäre genau das, was ich bräuchte, so hätte ich mit OCR0A = TOP 
meine feste Frequenz, und der Compare Wert wird zum PWM einstellen 
genutzt.

PS: klar 256, aua!
Fuer die Schwelle musst Du dann OCR0B benutzen. Zitat aus dem 
Datenblatt:

"The Output Compare Register B contains an 8-bit value that is 
continuously compared with the counter value (TCNT0). A match can be 
used to generate an Output Compare interrupt, or to generate a waveform 
output on the OC0B pin."

Zweiteres brauchst Du. Lies Dir doch den ganzen Abschnitt zum Timer 
nochmal genau durch...

Volker

P.S.: Wozu eigenlich die schnelle PWM, wenn ich fragen darf?
OP
Aha! Genau das habe ich übersehen. Schade, dass das nicht für beide Pins 
geht.
Nochmals danke und <verbeug>!

Volker Schulz schrieb:
> P.S.: Wozu eigenlich die schnelle PWM, wenn ich fragen darf?

Ich brauche einen intelligenten Schaltregler mit buck-boost Funktion für 
eine Solarzelle (oder mehrere). Aus Gründen des Stromverbrauchs muss der 
uC mit geringer Frequenz (~1MHz) laufen, deswegen geht fclk/256 gar 
nicht...
soll ja alles hübsch klein sein.
Gast
Hi

>Aus Gründen des Stromverbrauchs muss der uC mit geringer Frequenz (~1MHz)
>laufen, deswegen geht fclk/256 gar nicht...

Warum nicht einen ATTiny15? Der hat eine interne PLL mit der der Timer 
16x so schnell wie der Controller getaktet werden kann.

MfG Spess
OP
Simon K. schrieb:
> Geht es um MPPT? Klingt interessant jedenfalls, das mit nur einem
> kleinen Mikrokprozessor zu erledigen :-)

yep!
finde ich auch sehr interessant, mal ein privates Forschungsprojekt.


spess53 schrieb:
> Warum nicht einen ATTiny15? Der hat eine interne PLL mit der der Timer
> 16x so schnell wie der Controller getaktet werden kann.

Ich dachte der wäre tot?
Gast
Hi

>Ich dachte der wäre tot?

Da scheinst du recht zu haben. Nachfolger dürften ATTiny25/45/85 sein.
Zumindest steht im Datenblatt: '8-bit Timer/Counter1 in ATtiny15 Mode'.

MfG Spess
OP
Simon K. schrieb:

> Leider nur diesen einen Timer.. Hm.

Das reicht mir. Ich kann mit Timer1 meine 2 benötigten Ausgänge nutzen, 
habe ein extra TOP Register und kann so meine schnelle HW PWM 
realisieren, auch bei 1MHz Takt.
Persönliche Seite
X- Rocka schrieb:
> Simon K. schrieb:
>
>> Leider nur diesen einen Timer.. Hm.
>
> Das reicht mir. Ich kann mit Timer1 meine 2 benötigten Ausgänge nutzen,
> habe ein extra TOP Register und kann so meine schnelle HW PWM
> realisieren, auch bei 1MHz Takt.

Ah stimmt! Es gibt ja zwei PWM Outputs je Timer. Super :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.