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
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?
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
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.
Geht es um MPPT? Klingt interessant jedenfalls, das mit nur einem kleinen Mikrokprozessor zu erledigen :-)
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
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?
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
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.
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...?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.