www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR und Wavefiles?


Autor: Manu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sebastian Heyn (Gast)
Datum:

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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Hauke Radtki (Gast)
Datum:

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

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei atmel gibt es application notes dazu

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus K. (markus-)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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.

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das kann man auch mit einem NE555 und einem zähler machen

Autor: Markus K. (markus-)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ludwig Wagner (lordludwig)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Markus K. (markus-)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.