Forum: Mikrocontroller und Digitale Elektronik ATtiny13A - PWM Frage


von X- R. (x-rocka)


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. :(

von Volker S. (volkerschulz)


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

von X- R. (x-rocka)


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!

von Volker S. (volkerschulz)


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?

von spess53 (Gast)


Lesenswert?

Hi

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

Wie wäre es mit OCR0B?

MfG Spess

von X- R. (x-rocka)


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.

von Simon K. (simon) Benutzerseite


Lesenswert?

Geht es um MPPT? Klingt interessant jedenfalls, das mit nur einem 
kleinen Mikrokprozessor zu erledigen :-)

von spess53 (Gast)


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

von X- R. (x-rocka)


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?

von spess53 (Gast)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


Lesenswert?

Stimmt. Beim Tiny25 kann man aber auch ohne den Attiny15 Mode zu 
benutzen (Was auch immer das ist, hab gerade nur überflogen) den Timer 1 
im PLL Modus mit 25MHz Clock benutzen.

Leider nur diesen einen Timer.. Hm.

von X- R. (x-rocka)


Lesenswert?

Gut, dass ich gefragt habe.

Vielen Dank, der ATtiny25 hat alles was ich brauche, und netterweise 
noch ein wenig mehr Flash - uffz, das war noch eine andere Sorge.
Warum habe ich den nicht selber gefunden...?

von X- R. (x-rocka)


Lesenswert?

Ah, jetzt weiss ich auch wieder, warum ich den erst nicht genommen habe.
Ich hatte erstmal arge Platz-Probleme und deswegen den ATtiny13A in DFN 
gewählt. Tatsächlich habe ich dann doch SO-8 draufgewürgt.

von X- R. (x-rocka)


Lesenswert?

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.

von Simon K. (simon) Benutzerseite


Lesenswert?

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 :-)

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.