ATtiny13A - PWM Frage

OP #1571881
Lesenswert?

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. :(
#1572313
Lesenswert?

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 #1572366
Lesenswert?

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!
#1572406
Lesenswert?

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 #1572426
Lesenswert?

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 #1572505
Lesenswert?

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 #1572541
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren