www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 25kHz PWM mit Mega32 @16MHz


Autor: Sir Sydom (sirsydom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich brauche an einem Mega32 4 PWMs mit 25kHz, bei denen ich das 
Tastverhältnis frei einstellen kann (ca. in 5% Schritten).

Damit arbeit eich im Moment mit dem Counter0 im FastPWM Modus.
Das Problem ist nur, mit clkIO von 16MHz komm ich dann ohne Prescaler 
auf 62,5KhZ und mit /8 Prescaler auf 7,8 kHz. Ich brauche aber zwischen 
21 und 28.

Was kann ich machen (außer einen anderen Quarz zu nehmen)?
Oder hab ich mich gar verrechnte? Ich hab leider kein Oszi zum messen..

Gruß

Autor: Uuhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist schlecht an einem anderen Quarz ?

Autor: Sir Sydom (sirsydom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ich
a) keinen da hab
b) auf meinem Evalboard ungern rumlöte
c) ich die Rechenleistung evtl brauche..

Autor: Uuhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. Und 65kHz PWM ist nicht gut weil ... ?

Autor: Alex W. (a20q90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uuhh wrote:
> Ok. Und 65kHz PWM ist nicht gut weil ... ?


Seine Schaltung 25kHz können soll...

Autor: Sir Sydom (sirsydom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau. Weil die Spec eben sagt ich brauche 25kHz +-4kHz

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sir Sydom,

hab mal kurz den hier oft geschmähten ICC gefragt:

//TIMER1 initialize - prescale:1
// WGM: 14) PWM fast, TOP=ICRn
// desired value: 25KHz
// actual value: 25,000KHz (0,0%)
void timer1_init(void)
{
 TCCR1B = 0x00; //stop
 TCNT1H = 0xFD; //setup
 TCNT1L = 0x81;
 OCR1AH = 0x02;
 OCR1AL = 0x7F;
 OCR1BH = 0x02;
 OCR1BL = 0x7F;
 ICR1H  = 0x02;
 ICR1L  = 0x7F;
 TCCR1A = 0xB2;
 TCCR1B = 0x19; //start Timer
}


Ich hab mal beide Varianten gemacht: A mit CLEAR und B mit SET am 
Ausgang.

Der PWM-Wert kommt in OCR1A/B, Bereich 0-639 (also ~0,15% Auflösung).

Das setzen der Register mit einzelnen Bitbezeichnungen beherscht
der ICC leider nicht!

gruß hans

Autor: Sir Sydom (sirsydom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, ber das löst das Problem nicht.
Mit ist klar dass ich mit dem 16bit Counter das hinkriege, aber davon 
habe ich nur EINEN.
Ich wollte 4 PWM Channel und dafür die beiden 8bit und den 16bit 
verwenden..

Was ich aber im Moment auch nicht hinbekomme ist mit dem 16bit Counter 2 
unabhängige PWM zu erzeugen..

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für 4 PWM-Kanäle in Software ist die Frequenz von 25 kHz zu hoch bzw.
die 16 MHz zu langsam. Bleibt ein Mega mit 2 16-Bit Timern (z.B.
Mega64) was auf einem fertigen Board schlecht geht, eine Lösung mit
Slaves (z.B. kleinen Atmels mit Seriellem interface) oder doch der
Quarz.

Bei 6 MHz hast du 23,4375 kHz (mit 6,144 MHz genau 24 kHz) und 8 Bit
Auflösung in Hardware.

gruß hans

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.