PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 40kHz PWM Erzeugung mit 4MHz Takt - möglich?



spaceduck
04.04.2006, 18:13
Hallo,

Ist es möglich mit einem 4MHz Quarz eine 40kHz PWm (50% Duty Cycle) zu erzeugen? Nach meiner Rechnung komme ich auf
fmax = 7,8kHz, was der Mega8 mit Timer1 auch rausbringt. Prescaler ist 1. Gibt es dennoch einen Trick um 40kHz zu erzeugen?

Danke schon mal!

dennisstrehl
04.04.2006, 18:21
Es gibt bei einigen AtMegas die Möglichkeit, den Timer nur bis zu einem bestimmten Wert laufen zu lassen, d.h. statt bis 256 beispielsweise nur bis 100. Da der Timer immer noch mit der gleichen Geschwindigkeit zählt, wird die Frequenz dann größer, in diesem Fall müssten 40kHz rauskommen. (Fast-PWM angenommen).
Näheres dazu steht im Datenblatt.

E-Fan
05.04.2006, 15:11
Ein 8-Bit Hardware-PWM kann bei 20MHz etwa 78,1KHz Taktfrequenz bei fast vollständiger Ausnutzung der Quantisierung erzeugen wenn der Timer ausschließlich in eine Richtung zählt.
Bei 4Mhz wären demnach nur 15,6KHz per Hardware möglich. Per Software gehts zwar schneller und man kann die Zielfrequenzen besser treffen, aber auch auf Kosten der Prozessorbelastung und Einbußen in der Auflösung des Signals.
Wenn ich mich nicht irre läuft (kann laufen?!?) ein Timer des ATtiny26 mit 4-Facher Prozessortaktgeschwindigkeit wenn man den internen RC-Oszi benutzt.
Hab mich aber damit noch nicht so sehr beschäftigt und den Duty-Cycle legst Du doch selber fest. ;)

SprinterSB
05.04.2006, 15:25
Mit Timer1 in phasen- und frequenz-korrekter PWM mit einer Frequenz von 40kHz hat man 50 Schritte für den Duty, kann den also in 2%-Schritten anpassen.

Mie weniger strikten einstellungen einer 16-Bit-PWM (phasen- oder frequenz-korrekt) hat man 100 Inkremente, also eine Auflösung des Duty von 1%.

Eine Software-PWM von 40kHz halte ich für unrealistisch. Man hat eine Mindest-IRQ-Last von 80kHz. Bei deinerer Duty unterteilung als 50% entsprechend mehr. Bei äqidistanten Timer-IRQs -- also ohne bei jedem IRQ den Timer neu zu konfigurieren -- hast du eine IRQ-Last von f*(duty-1), wobei
f = Soft-PWM-Frequenz
duty = Anzahl Schritte, die der Duty annehen kann (Rasterung)

Soll der Duty dann in 11 Schritten einstellbar sein (also 0%, 10%...100%) wäre das eine IRQ-Last von 400kHz.