www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32 PWM Ausgabe 4 kHz


Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mit dem Timer hatte ich eine Frequenz von ca. 4 kHz erzeugt. Der Ton ist 
allerdings nicht sauber (Jitter).

Deshalb habe ich mich an den PWM gewagt. Ich kriege aber nur eine 
Frequenz zustande mit Hilfe einer while-Schleife. Das geht doch bestimmt 
auch ohne, da der PWM eine eigene Einheit im µC ist, oder?

Der Atmega32 hat einen internen Takt von 1 MHz, bei einem 8-Bit-Timer 
und einem Prescaler von 1 wäre das eine Frquenz von 3,9 kHz.
Soweit, so gut. Ich habe aber gelesen, dass man kein ISR braucht(??) und 
die while-Schleife in der Hauptroutine der Anwendung ist auch nicht sehr 
toll.

Kann mir bitte jemand helfen, wo fehlt da ein Parameter. Ihr seht schon 
an meiner Beschreibung, dass ich noch Anfänger bin und mich mit Mühe 
durch den Bit-Dschungel des Atmega taste.

Hier mein Code:
// Timer Testprogramm für PWM

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

  int main(void)
  {  
  TCCR2 |= (1<<CS20);       // Prescaler 1
  TCCR2 |= (1<<WGM21) | (1<<WGM20);  // Timer aktivieren, 8-Bit, Fast PWM
  TCCR2 |= (1<<COM21) | (0<<COM20) ;  // Compare match, Fast PWM, nicht invertiert
  OCR2 =  255;  // Vergleichswert setzen

  DDRD |= (1<<PD7); // Port D Pin 7 als Ausgang

  uint8_t wert;
  while(1)
  {
    for (wert=0; wert<255; wert++)
    {
    OCR2 = wert;
    }
  }
  }//main


Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was glaubst du wie schnell diese Schleife abgearbeitet wird?

    for (wert=0; wert<255; wert++)
    {
    OCR2 = wert;
    }

Du musst schon ein bißchen warten damit die PWM überhaupt
sinnvoll arbeiten kann.

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK,
hatte es auch schon mit einem delay in der for-Schleife probiert. Das 
ändert aber am Grundprinzip, dass es wohl ohne schleife gehen ja nichts, 
oder?

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte dein Signal sein ;)
// Timer Testprogramm für Rechteck ca. 4 kHz

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

  int main(void)
  {  
  DDRD |= (1<<PD7);     // Port D Pin 7 als Ausgang

  TCCR2 |= (1<<WGM21);  // Timer CTC
  TCCR2 |= (1<<COM20);  // Pin (PD7) toggle
  OCR2 =  0x7b;         // Vergleichswert setzen
  TCCR2 |= (1<<CS20);   // Prescaler 1 Timer startet

  while(1); // Ich drehe Däumchen

  }//main


avr

Autor: Dietmar P. (dietmar2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super,
das war's, danke!

Das werde ich mit dem Datenblatt nochmals auflösen und dann hoffentlich 
verstehen, was ich da verkehrt gemacht habe.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das werde ich mit dem Datenblatt nochmals auflösen und dann hoffentlich
>verstehen, was ich da verkehrt gemacht habe.

Wozu eigentlich PWM? Das ist eigentlich nichts anderes als CTC.

MfG Spess

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 schrieb:
> Wozu eigentlich PWM? Das ist eigentlich nichts anderes als CTC.

Deswegen habe ich ja Rechteck geschrieben und die
Kommentare angepast;)

Reicht ja auch für etwas Lärm.

avr

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.