Hallo Forengemeinde... ich habe eine Frage bezüglich der Erzeugung einer Sinuswelle im hörbaren Bereich, sagen wir 10kHz. Ich möchte für diese Aufgabe ein ATMega8 verwenden, indem ich ein 8-Bit-Port mit einem Widerstandsnetzwerk als DAC belege. Nun habe ich viel darüber gelesen und auch einige Rechnungen dazu nachvollzogen. Allerdings sind mir noch einige Punkte unklar. Ich möchte, dass der Sinus so "schön" wie möglich ist und würde daher auch die 8-Bit Auflösung ausnutzen wollen. Was für ein XTAL wäre für meine Zwecke optimal? Und wie schnell sollte meine Interruptroutine arbeiten bzw aufgerufen werden? ich würde 256 Werte in einer Tabelle ablegen. Ist es korrekt, dass ich dann eine Interruptfrequenz von 256*10000Hz habe? Das wären 2,048MHz. Ist das zu handlen? Oder benötige ich bei der Frequenz gar nicht so eine Hohe Auflösung? Wäre euch sehr dankbar, wenn ich Ihr mir auf die Sprünge helfen könntet... Vielen Dank schon mal und Gruss Andi
>Ist es korrekt, dass ich dann eine Interruptfrequenz von 256*10000Hz habe? >Das wären 2,048MHz. In dem Fall ja. >Ist das zu handlen? Nicht mit nem Atmel und Interrupts. >Oder benötige ich bei der >Frequenz gar nicht so eine Hohe Auflösung? Ja, benötigst du nicht. Mach dich mal mit der Problematik der Abtastung vertraut. Stichwort Abtasttheorem. Du wilslt einen reinen Sinus bauen. Dazu reicht es, rein theoretisch, zwei Werte pro Periode auszugeben. Also mindestens 20kHz Ausgaberate. Das funktioniert aber nur, wenn dein Tiefpass hinter dem DAC ideal ist. Da er das nicht ist, musst du die Ausgabefrequenz weiter erhöhen. Aus dem Bauch heraus würde ich mal von Faktor 5..10 schätzen..
hallo andi, bei 10 khz reichen auch weniger ausgaben. da du wohl nicht nur eine feste frequenz ausgeben willst solltest du deinen ansatz ändern. bei 10 khz würden z.b. 50 ausgaben aus einer 256 byte-tabelle reichen -> 500 khz für timer alle 2 µs erfolgt eine neue ausgabe. du hast einen zähler mit 2 byte und einen additionswert, der deiner frequenz entspricht. das high-byte des zählers ist deine tabellenposition, low-byte sozusagen die nachkommastellen. bei einem großen additionswert werden in der tabelle positionen übersprungen, bei kleinen mehrfach ausgegeben. dadurch erhälst du einen recht sauberen verlauf mit fester prozessorauslastung. hoher takt und assembler (evtl. c mit "naked" interrupt) sind von vorteil. gruß hans
Vielen Dank an alle, echt super von euch... Die Seite ist Top, Minimalbeschaltung ohne die Schnittstellenkonvertierung, hatte ich auch so vor, allerdings dann über USB und Buspowered. @Hans: Hört sich sehr Interessant an, allerdings versuche ich gerade dein posting zu verstehen und such mich schlau aber irgendwie verstehe ich ab >alle 2 µs erfolgt eine neue ausgabe. leider nicht alles. Auch wenn ichs gern verstehen würde. Also ich hab ein TimerInt alle 2µs bei 500kHz. Ich habe ein 16bit Timer und ein Additionswert. (Additionswert==Schrittweite?) Was genau entspricht meiner Frequenz? Und meinst du da die Ausgangsfrequenz? >das high-byte des zählers ist deine tabellenposition, low-byte >sozusagen die nachkommastellen. >bei einem großen additionswert werden in der tabelle positionen >übersprungen, bei kleinen mehrfach ausgegeben. Hört sich sehr interessant und auch für mich sehr relevant an, aber ich versteh das nicht so ganz. Kanns du das vielleicht näher erläutern? >dadurch erhälst du einen recht sauberen verlauf mit fester >prozessorauslastung. Da wäre ich ein Fan von :-) Vielen Dank nochmal für eure Mühe... Netten Gruss Andi
@ Andi (Gast) >>alle 2 µs erfolgt eine neue ausgabe. >leider nicht alles. Auch wenn ichs gern verstehen würde. >Also ich hab ein TimerInt alle 2µs bei 500kHz. Nein, die Endlosschleife dauert 2us. >Ich habe ein 16bit Timer >und ein Additionswert. (Additionswert==Schrittweite?) Ja. > Was genau entspricht meiner Frequenz? Das hängt von deinem Additionswert ab. Auch als Freqeuncy Tunning Word bekannt, siehe DDS. >versteh das nicht so ganz. Kanns du das vielleicht näher erläutern? Lies das Tutorial von Analog Devices und denk drüber nach. Ja, das dauert ein wenig. MFG Falk
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.