Frequenzerzeugung mit ATmega

Gast #1023229
Lesenswert?

Meine Aufgabe ist über einen ATmega 4 unterschiedlich einstellbare 
Frequenzen von 0-20kHz zu erzeugen. Im CTC-Mode würde das relativ 
einfach funktionieren, aber man bräuchte für jede Frequenz einen Timer 
(insgesamt 4), so wie ich das aus dem Datenblatt sehe. 4 Timer dafür zu 
verwenden ist zu viel, da ich noch welche für andere Zwecke benötige.

Meine Idee ist jetzt einen Timer-Interrupt mit 20kHz (alle 50us) zu 
definieren. In der ISR werden dann 4 Zähler verwaltet und hochgezählt 
bis zu einem einstellbaren Wert. Bei erreichen des Wertes soll der 
entsprechende PIN getoggelt werden. Auf diese weise wären 4 verschiedene 
Frequenzen in 1Hz-Schritten realisierbar. Soweit die Theorie.

Da der ATmega auch noch andere Aufgaben übernehmen soll, wäre 
interessant zu wissen, wieviel Zeit die Bearbeitung der ISR ca. in 
Anspruch nimmt. Der ATmega soll mit ca. 8MHz getaktet werden. Oder ist 
eine externe einstellbare Frequenzerzeugung unumgänglich?

Gruß MaBu
Gast #1023416
Lesenswert?

3 Möglichkeiten:
1. für jede Frequenz einen eigenen Timer, da brauchst Du einen anderen 
Controller.

2. einen Timer, der per Software alle 4 Frequenzen erzeugt:
eine Tabelle, bei welchem nächsten Zählerstand die Pins getoggelt werden 
müssen.
Bei jedem Interrupt den Timer auf den jeweils nächsten Eintrag der 
Tabelle setzen (naheliegende Zählerstände zusammenfassen).

3. DDS, z.B. Jespers "Poor Man's DDS"
Für Rechteck geht das ohne Sin-Tabelle noch einfacher.
Gast #1030980
Lesenswert?

Ich habe mir jetzt Samples vom AD9833 und AD5932 bestellt und werde 
diese testen. Ist zwar etwas überdimensioniert, aber so bleibt später 
noch Raum für höhere Anforderungen.

Ich bin zwar nicht sicher, ob der "Square-Wave Output" nicht doch zu 
viel Jitter im DutyCycle verursacht. Problematisch wird es, wenn hier 
Einstellungen ungleich der 2er-Basis getroffen werden. Ich benötige 50% 
DutyCycle. Falls doch muss der "Triangle Output" und ein hinterher 
geschalteter Komparator herhalten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren