Hallo... ich versuche mich jetzt schon eine Weile in die PWM-Erzeugung mittels ATtiny261 einzulesen und bin schier erschlagen. Ich sehe mittlerweile den Wald vor lauter Bäumen nicht mehr und suche daher jemanden, der mich mal kurz an die Hand nimmt ;) Ist es möglich, mit dem Timer(1) eine Frequenz zwischen 400KHz und 500KHz, bei einem möglichst frei einstellbarem Puls-Pausenverhältnis (20%-80%)zu erzeugen, ohne (!) zwischen jeder Flanke ein Output-Compare-Register umzuschreiben - also vollständig freilaufend ?! Der Tiny sollte nach Möglichkeit mit seinem internen RC-Oszillator laufen - gern die vollen 8MHz. Ich wünschte, ich hätte mich damals mit AVR/PWM befasst, als die Angelegenheit noch überschaubar und nicht so komplex war :-\ Gruß, Stefan ---
8 MHz / 500 kHz = 16. Du hättest also maximal 16 Schritte bei der höheren Frequenz über den gesamten Bereich von 0-100% zur Verfügung. Ich sehe zwar nicht, warum Du meinst, ständig irgendein Compare-Register ändern zu müssen (außer natürich, wenn Frequenz und/oder Tastverhältnis geändert werden müssen, aber das sollte eigentlich klar sein), aber mit ner gescheiten Auflösung wird das bei den Frequenzen nichts. Ich erinnere mich zwar, dass es zumindest mal AVRs mit sog. High Speed PWM gab, der Tiny261 hat das aber afaik nicht.
Andreas Kaiser wrote:
> Die TinyX61 haben einen solchen High Speed Timer.
Ah, ja, hab grad nachgeschaut. Damit könnte es gehen.
Aber nach wie vor muss man selbstverständlich bei einer Änderung von
Tastverhältnis und Frequenz die entsprechenden Register ändern. Anders
gehts nunmal nicht. Einmal eingestellt sollte das ganze aber
"freilaufend" arbeiten.
Der Tiny261 unterstützt Fast PWM mit 64 oder 32 MHZ. Also leider habe ich eben erst an das AVR-Tutorial gedacht -Schande über mich- und das war sogar recht hilfreich. Ich war irritiert, weil im Datenblatt etwas steht, nachdem OC1A beim hochzählenden Compare gesetzt und beim runterzählenden Compare gelöscht wird... Also, wenn ich das richtig verstanden habe, müsste ich für die Einstellung der absoluten Frequenz, den oberen Überlauf und für die Einstellung des Puls-Pausenverhältnisses den Comparewert vorgeben können !? Ist aber wohl nicht möglich, oder ?
Hi Du kannst den Timer mit der internen PLL mit 64 oder 32 MHz laufen lassen. Bei einem 8-Bit Timer und einem Top-Value von 128 kannst du eine 500KHz PWM mit 128 Stufen erzeugen. MfG Spess
Jetzt wird's langsam klarer - Den Wert für Top, also den oberen Überlauf kann ich in OCR1C vorgeben und definiere damit die Frequenz. Durch die Definition des PWM-Wertes, das Puls-Pausenverhältnis - Ich stochere dann mal ein wenig in den Registern, wenn die Platine kommt ;) Vielen Dank erst mal...
@ Stefan 250kHz ist das Maximum bei 8 bit und 64MHz. Was willst du damit machen?
Atmega8 Atmega8 wrote: > @ Stefan > 250kHz ist das Maximum bei 8 bit und 64MHz. Wer sagt denn, dass er die 8 Bit nehmen muss? Spess hat doch schon den Ansatz geliefert. Wenn er in OCR1C 0x7F reinschreibt, dann hat er 500 kHz.
@ Johannes M. Das stimmt ja, aber für mich sind 8 bit eine akzeptable Auflösung. Es kommt jetzt drauf an was er damit vor hat.(würde das gern mal wissen)
IR-Dioden ansteuern - da reicht es mir völlig, ein Puls- Pausenverhältnis von ~20% grob einzustellen... Vielen Dank noch einmal ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.