Sinus am Lautsprecher ausgeben (Assemler, ATMEGA32)

Gast #2217501
Lesenswert?
• ▲
▼
Hallo,

ich möchte einen Sinuston oder zumindest einen stark sinus-ähnlichen Ton 
mittels ATMEGA32 in Assembler generieren. Es soll kein reiner Rechteck 
sein, da der Ton dann absolut grausig kling.

Weitere Anforderungen: Die Tonhöhe soll wählbar sein. Und zwar zwischen 
500 und 1000Hz. Weiter soll die Dauer des Tones variabel sein. Und zwar 
zwischen 24 und 1200ms.

Ist das realisierbar? Habe ein Eval-Board mit ATMEGA32@16MHz.

Oder gibt es Tongenerator ICs, die programmierbar sind? Z.B. via 1-Wire?




Gruß
Cheffe
Gast #2217545
Lesenswert?
• ▲
▼
Hallo, danke für die Antworten. Ich könnte ja auch einen Rechteck 
ausgeben und dann durch ein SC-Filter-IC schicken. Tiefpass fünfter 
Ordnung reicht. Gibt es günstige, die man als Privatmensch einkaufen 
kann und die nach Möglichkeit mit nur einer positiven 
Versorgungsspannung auskommen?


Gruß
Cheffe
#2217983
Lesenswert?
• ▲
▼
So als Anregung: Nimm doch einfach eine Tabelle mit einer Handvoll 
berechneter Werte (z.B. 15). Diese legst Du in den Speicher hinein. Ich 
kenne die Adressierung des Mega32 nicht, aber angenommen, Deine Daten 
fangen bei $FFF0 an, und reichen bis $FFFF, so fragst Du die Werte aus 
dem Speicher mit $FFFX ab. X ist dabei ein Zählerwert. Dadurch, dass Du 
das $FFF nicht inkrementierst, springst Du beim Übertrag automatisch auf 
$FFF0 zurück. Deine Werte werden damit in einer Schleife gelesen und du 
erhälst keine Verzögerung durch den Sprung auf die Basisadresse.

Aschließend (soweit der Mega32 dafür überhaupt genügend Speicher hat) 
lässt Du das Signal durch einen IIR-Filter laufen. Mit Matlab kannst Du 
die Koeffizienten dafür berechnen lassen.

Schnell wird das mit Sicherheit nicht, aber im kHz-Bereich ist auf 
jedenfall was machbar.

> Oder gibt es Tongenerator ICs, die programmierbar sind? Z.B. via 1-Wire?

Braucht es nicht. Zur Not gibt es den MAX7400
#2217990
Lesenswert?
• ▲
▼
Cheffe schrieb:
> Hallo,
>
> ich möchte einen Sinuston oder zumindest einen stark sinus-ähnlichen Ton
> mittels ATMEGA32 in Assembler generieren. Es soll kein reiner Rechteck
> sein, da der Ton dann absolut grausig kling.
>
> Weitere Anforderungen: Die Tonhöhe soll wählbar sein. Und zwar zwischen
> 500 und 1000Hz. Weiter soll die Dauer des Tones variabel sein. Und zwar
> zwischen 24 und 1200ms.

Das Verfahren, das hier üblicherweise eingesetzt wird, heisst "Direct 
Digital Synthesis" DDS.

Erklärung:
http://www.analog.com/static/imported-files/tutorials/450968421DDS_Tutorial_rev12-2-99.pdf

Mit einem AVR sollte es wohl möglich sein, ein dsPIC wäre aber die 
bessere Architektur für solche Sachen.

fchk

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.