Forum: Mikrocontroller und Digitale Elektronik Wie generiere ich eine Pwm mit fester Frequenz aber variablem Tastverhältnis


von AVR Anfänger (Gast)


Lesenswert?

hallo, wie generiere ich eine Pwm mit fester Frequenz (ca 25kHz) aber 
mit einem variablem Tastverhältnis per hardware?
kome nicht weiter...

controller: Attiny2313

grüße

von Karl H. (kbuchegg)


Lesenswert?

AVR Anfänger schrieb im Beitrag #2020268:
> hallo, wie generiere ich eine Pwm mit fester Frequenz (ca 25kHz) aber
> mit einem variablem Tastverhältnis per hardware?

so wie alle anderen auch.
Indem man den richtigen Timermode auswählt, die richtigen Register 
besetzt und den µC arbeiten lässt.

Vor die grobe Vorgehensweise liest man in den Tutorien
AVR-Tutorial
AVR-GCC-Tutorial
nach, selbst wenn die nicht für den tatsächlich benutzten Prozessor 
geschrieben sind.

Denn die Details (die aber ähnlich oder analog zu dem im Tut gesagte 
funktionierern) finden sich dann im Datenblatt des spezifischen 
Prozessors.

von AVR Anfänger (Gast)


Lesenswert?

Die tutorien habe ich bereits durch, pwm erzeugen ist kein problem aber 
womit ändere ich mein Tastverhältins??
dachte an den ctc modus. aber wo und wie kann ich jetzt mein tv 
einstellen (ausser am icr1, das wird für input capture benötigt)

von Karl H. (kbuchegg)


Lesenswert?

AVR Anfänger schrieb im Beitrag #2020284:
> Die tutorien habe ich bereits durch, pwm erzeugen ist kein problem aber
> womit ändere ich mein Tastverhältins??

Tastverhältnis ist normalerweise eines der OCR Register. Welches genau, 
hängt vom verwendeten Timer bzw. vom verwendeten Timermodus ab-

> dachte an den ctc modus.

Nö. CTC brauchst du hier überhaupt nicht, solange die PWM Frequenz nicht 
aufs Hz genau sein muss.

von AVR Anfänger (Gast)


Lesenswert?

also wähle ich zb fast pwm nicht invertiert und kann mit ocr0a die 
frequenz und mit ocr0b das tv einstellen oder? mal ganz blöd gefragt 
beim attiny2313 gibt es:

(OC0B/T1)     PD5 und
(OC0A/PCINT2) PB2,

an welchem der beiden kommt jetzt meine pwm raus?

von Peter D. (peda)


Lesenswert?

AVR Anfänger schrieb im Beitrag #2020292:
> also wähle ich zb fast pwm nicht invertiert und kann mit ocr0a die
> frequenz und mit ocr0b das tv einstellen

Du solltest Dich mal enscheiden.
Erst wolltest Du doch die Frequenz nicht ändern.


Peter

von Karl H. (kbuchegg)


Lesenswert?

AVR Anfänger schrieb im Beitrag #2020292:
> also wähle ich zb fast pwm nicht invertiert

Das heißt Modus 7 vom Timer 0

> und kann mit ocr0a die
> frequenz und mit ocr0b das tv einstellen oder?

genau

> mal ganz blöd gefragt
> beim attiny2313 gibt es:
>
> (OC0B/T1)     PD5 und
> (OC0A/PCINT2) PB2,
>
> an welchem der beiden kommt jetzt meine pwm raus?

OCR0A ist für das Zurücksetzen des Timers auf 0 verantwortlich, hat also 
mit der PWM an sich nichts zu tun, sondern nur damit, wie weit der Timer 
zählt.

Die PWM wird mittels OCR0B erzeugt (weil OCR0A ja schon anderweitig 
benutzt wird). Dieser Compare-Match steuert, wann der Pin auf 0 bzw. 
wann er auf 1 ist. Du musst diesen Compare Match freischalten und du 
musst Tabelle 38 benutzen um den Output Pin zu konfigurieren. Überall 
kommt 'B' vor. Also wo wird jetzt deine PWM rauskommen?

von AVR Anfänger (Gast)


Lesenswert?

@ peter:
die frequenz möchte ich auch zur laufzeit nicht ändern sondern einmal 
fix einstellen.

@Karl heinz:
okay, also über ocr0b wird das tv eingestellt und in ocr0a die frequenz 
(zb bis 0xff) . ich benötige aber noch zur verwaltung der tasks einen 
overflow interrupt welcher mir eine variable zählt von timer0, das wäre 
doch dann timer0_compa oder der normale timer0 overflow int??

von spess53 (Gast)


Lesenswert?

Hi

>okay, also über ocr0b wird das tv eingestellt und in ocr0a die frequenz
>(zb bis 0xff) .

$FF als Top-Wert für PWM haben alle Timer. Da brauchst du kein Register.

>ich benötige aber noch zur verwaltung der tasks einen
>overflow interrupt welcher mir eine variable zählt von timer0, das wäre
>doch dann timer0_compa oder der normale timer0 overflow int??

Bei PWM wird immer, wenn der Timer wieder auf Null springt ein 
Overflow-Interrupt ausgelöst.

MfG Spess

von AVR Anfänger (Gast)


Lesenswert?

also der ganz normale TIMER0_OVF_vect?
danke!

von spess53 (Gast)


Lesenswert?

Hi

>also der ganz normale TIMER0_OVF_vect?
>danke!

Ja. Steht so im Datenblatt.

MfG Spess

von Bernd S. (Firma: Anscheinend Corner-Cases ;-)) (bernd_stein)


Angehängte Dateien:

Lesenswert?

Hallo,

habe mich vor einiger Zeit auch damit beschäftigt.
Den Fast PWM-Mode 7 kann man anscheinend nur als symetrischen 
Rechteckgenerator benutzen ( Puls,- zu Pausenverhältnis 1:1 ).

Setze hier mal mein Assembler Programm rein,
das eine Power-LED über eine N-MOSFET per PWM
in drei Helligkeitsstufen betreibt oder bis zur einer minimalsten
Helligkeitsstufe dimmt.

Hoffe Du kannst daraus ein paar Passagen gebrauchen.


Viel Erfolg wünscht Dir

Bernd_Stein

von Karl H. (kbuchegg)


Lesenswert?

Bernd Stein schrieb:
> Hallo,
>
> habe mich vor einiger Zeit auch damit beschäftigt.
> Den Fast PWM-Mode 7 kann man anscheinend nur als symetrischen
> Rechteckgenerator benutzen ( Puls,- zu Pausenverhältnis 1:1 ).

Das würde mich jetzt aber wundern.

von spess53 (Gast)


Lesenswert?

Hi

>Das würde mich jetzt aber wundern.

Mich auch.

MfG Spess

von AVR Anfänger (Gast)


Lesenswert?

und ich danke trotz allem :))

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.