Forum: Mikrocontroller und Digitale Elektronik AVR und Wavefiles?


von Manu (Gast)


Lesenswert?

Hallo Freunde,

ich bin echt erstaunt, dass ich zum Thema Wav-Soundausgabe über AVR
sogut wie nichts brauchbares finde.

Ich denke, da wav eh unkomprimiert ist, dürfte es nicht allzu schwer
sein, den Sound auszugeben.

Was mich nun also interessiert ist, gibt es ein 4 oder 8bit Modul, das
ich mit meinem AVR ansprechen kann - zwecks Sendung der wave-Signale.
(perfekt wäre natürlich eine Ansteuerung wie für LCDs)

Wäre echt supi, wenn ihr ein paar Informationen für mich hättet, da ich
keine Ahnung, wie wave ansich funktioniert.

Gruß
Manu ;)

von Freak5 (Gast)


Lesenswert?

Ich meine, dass man die Werte aus dem Wavefile einfach an einen DAC
senden muss.
Irgendwo hat jemand das auch ohne richtigen DAC gemacht, glaube ich. Er
hat den Digital Analogconverter einfach durch das an und Ausschalten
eines Pins grob nachgeahmt und die Spannung mit einem Kondensator
geglättet...

von Sebastian Heyn (Gast)


Lesenswert?

Ja. das kannste mitm pwm port machen. und nachher mit nem rc glied die
spannung aufn mittelwert ziehen. muss man halt rumexperimentieren

von Hauke Radtki (Gast)


Lesenswert?

An und ausschalten eines pins ... um damit unterschiedliche spannungen
zu erzeugen braucht man unterschiedliche an/aus verhältnisse --> PWM.

Es gibt von atmel ein appnote wo gezeigt wird, wie man mit nem AVR nen
Sinussignal erzeugt  (gibt auch codesamples hier im forum)
Dazu brauchst du einen tiefpassfilter (um die hohe pwm frequenz aus
deinem signal zu filtern).

Und so musst du halt die wav daten entweder im speicher vom controller
speichern oder über ein externes medium einlesen (muss halt schnell
genug sein)

Und du musst halt drauf achten, dass du die sound daten mit der
richtigen geschwindigkeit ausgegeben bekommst (sampling rate)

von Hauke Radtki (Gast)


Lesenswert?

zu meinem vorposter: rc glied ist halt meistens relativ langsam und
verzerrt so das signal

von Thomas (kosmos)


Lesenswert?

ich würde einfach nen externen DAC verwenden, muss dann nur nacheinander
ein Byte an einem Port ausgeben und am DAC kommts hinten richtig raus.

von Lupin (Gast)


Lesenswert?

bei atmel gibt es application notes dazu

von Ronny (Gast)


Lesenswert?

22 KHZ Mono Signal bedeutet (bei 8 Bit Quali) schonmal 22050 Bytes
Speicher pro Sekunde. Und 22kb sind bei den AVRs wirklich schon ´ne
ganze Menge Speicher.Wird also nötig sein die Sache aus ´nem externen
Speicher zu lesen,wenns nich nur ´n kurzer Piep werden soll.

von Markus K. (markus-)


Lesenswert?

Wie bereits erwähnt, hat man hier im wesentlichen zwei Probleme:
a) Der D/A-Wandler
b) Die Sounddaten speichern.

Zum D/A-Wandler:
Du könntest PWM nehmen. Wenn die Frequenz hoch genug ist, dann muss man
das Signal wegen der Trägheit des Lautsprechers nicht mehr filtern. Wenn
Du Filtern wills kann Du z.B. ein Filter aus OpAmps nehmen. Die
angesprochen AppNote von Atmel findet sich hier:
http://www.atmel.com/dyn/resources/prod_documents/doc1456.pdf

Eine andere einfach Möglichkeit wäre ein einfacher R2R-DAC. Der besteht
nur aus ein paar Widerständen.

Du könntest natürlich auch einfach einen fertigen D/A-Wandler nehmen,
z.B. TDA1543 (Reichelt 0,75Euro).

Zum Speichern:
Wenn Du die Dateien einfach so roh speicherst, dann brauchst Du bei
8kHz/8Bit eben 8KByte/sec. Mit Kompression bzw. bei 4Bit entsprechend
weniger. Du kannst dafür den internen Speicher den MCs verwenden (wenn
er genug Speicher hat) oder z.B. ein externes EEPROM anschließen. Die
größten seriellen leicht erhältlichen sind die 24C512 mit 64KByte
Speicher. Alternativ auch z.B. ATMELs Dataflash (wir in der AppNote
verwendet, gibts aber nur in SMD) oder eine externe SD-Karte.

Außerdem gibts noch reine Sound-Speicherchips, die ohne MC die Sounds
abspielen können. Such mal im Forum nach ISD.

von Hauke Radtki (Gast)


Lesenswert?

Was ich auch mal gelesen habe ist, dass jemand mit einem EEPRom ein
soundfile abgespielt hat. Er hat einfach die ganzen werte ins EEPRom
geladen und dann mit nem controller die adressleitungen in der
Samplerate hochgezählt. An den Datenausgängen hing ein R2R-DAC. Eine
simpmle und doch gute methode zum sound abspielen :)

von Lupin (Gast)


Lesenswert?

das kann man auch mit einem NE555 und einem zähler machen

von Markus K. (markus-)


Lesenswert?

@Lupin:
Man braucht dann aber noch eine Möglichkeit das (E)EPROM zu
beschreiben.

Ein Beispiel für EPROM+AVR gibts hier:
http://s-huehn.de/elektronik/bbgong/bbgong.htm

von Ludwig W. (lordludwig)


Lesenswert?

also...

wenn du das ganze mit 8bit machen willst dann besteht die WAV datei aus
Zahlen ohne vorzeichen und unverschlüsselt.

Wenn du das ganze aber mit mehr als 8bit machen willst dann besteht die
WAV datei aus Zahlen MIT vorzeichen, die mit dem zweierkomplement
verschlüsslt sind!!!!!

Also wenn du mehr als 8bit arbeitest, dann musst du die daten enteder
an einen chip senden, der die daten gleich entschlüsselt (z.B. TDA1543
= entschlüsseln und DAC in einem) oder du musst sie zuerst am PC
entschlüsseln und dann an den DAC schicken.

Viel glück, bin auch grad dabei zuwas zu machen ;-)

von Markus K. (markus-)


Lesenswert?

@Ludwig:
Das 2er-Komplement ist doch nicht verschlüsselt. Um die in ein
vorzeichenloses Format zu überführen zählt man einfach was dazu. Wenn
die Zahl z.B. 16Bit hat, dann betrachtet man sie einfach als
vorzeichenlose Zahl und zählt 32768 dazu. Damit wird aus
-32768...+32767 eben 0...65535.

Das 2er-Komplement mag am Anfang etwas verdreht aussehen, aber es ist
dafür gemacht, dass man positive und negative Zahlen einfach so
zusammenzählen kann, man braucht dabei das Vorzeichen nicht beachten.

Markus

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
Noch kein Account? Hier anmelden.