Klangerzeugung mit R2R DAC

OP #3116548
Lesenswert?
• ▲
▼
Da ich nach langem Googeln nichts gefunden habe, frage ich mal im Forum:
Wie funktioniert die Klangerzeugung mit einem Microcontroller über ein 
R2R Netzwerk? Soll ich einfach in einem Array die entsprechenden 
Wellenformen ablegen und diese dann über eine for Schleife abtasten?
Vielleicht hat ja jemand für euch mehr Ahnung.

MfG Benedikt
OP #3117710
Lesenswert?
• ▲
▼
Hannes Lux schrieb:
> Benedikt K. schrieb:
>> Soll ich einfach in einem Array die entsprechenden
>> Wellenformen ablegen
>
> Ja...
>
>> und diese dann über eine for Schleife abtasten?
>
> Nein, das reicht nicht, da solltest Du schon einen Timer bemühen, dessen
> ISR im Takt der Samplerate (Wiedergaberate) das nächste Byte aus dem
> Array holt und an den Port mit dem R2R-DAC ausgibt.
>
> ...

Okay Angenommen meine Samplerate beträgt 44100Hz. Dann muss ich meinen 
Prescaler so wählen, dass ich diese Frequenz bekomme, oder? Wie soll ich 
da vorgehen?
#3117792
Lesenswert?
• ▲
▼
Benedikt K. schrieb:
> Angenommen meine Samplerate beträgt 44100Hz.

Dann brauchst Du für eine Sekunde Sound 44,1 Kilobyte Speicher zum 
Ablegen der Soundbitmap.

Wie lange klingt ein Paukenschlag nach?
Wie lange ein Becken?
Wieviel Speicher würdest Du brauchen?
Wieviel Speicher hast Du?

Benedikt K. schrieb:
> Dann muss ich meinen
> Prescaler so wählen, dass ich diese Frequenz bekomme, oder?

Ich glaube zwar, dass sich diese Frage aufgrund der angestrebten 44100 
Hz und der Erkenntnis über den Speicherplatzmangel erübrigt hat, aber 
mit dem Prescaler (Vorteiler) alleine ist es nicht getan. Da spielt der 
Zählumfang des Timers auch noch eine Rolle.

Mit dem Vorteiler stellst Du lediglich ein, dass das gewünschte 
Intervall bei gegebenem Controllertakt mit vertretbarer Auflösung in den 
Zählumfang des Timers passt. Die genaue Einstellung der Frequenz stellt 
man dann mit dem Timer direkt ein. Hat der Timer keine anderen Aufgaben, 
dann kann er im CTC-Modus mit Compare-Interrupt betrieben werden. Werden 
auch noch andere Interrupts des Timers benötigt, dann bietet sich an, im 
Compare-Interrupt das gewünschte Intervall auf den momentanen Wert des 
Compare-Registers aufzuaddieren um den Termin für den nächsten Interrupt 
festzulegen.

...

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.