mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny13A - PWM Frage


Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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. :(

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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...?

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: X- Rocka (x-rocka)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.