www.mikrocontroller.net

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


Autor: AVR Anfänger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: AVR Anfänger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: AVR Anfänger (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: AVR Anfänger (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: AVR Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also der ganz normale TIMER0_OVF_vect?
danke!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>also der ganz normale TIMER0_OVF_vect?
>danke!

Ja. Steht so im Datenblatt.

MfG Spess

Autor: Bernd Stein (bernd_stein)
Datum:
Angehängte Dateien:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das würde mich jetzt aber wundern.

Mich auch.

MfG Spess

Autor: AVR Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und ich danke trotz allem :))

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.