www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik WAV Datei abspielen


Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich weiß, es gibt schon einige Themen darüber WAV Dateien mit einem AVR 
abzuspielen.

Undzwar, möchte ich mit einem AtMega32 nur eine 29kByte große WAV Datei 
abspielen. Ich weiß die ersten 44 Byte muss ich wegstreichen, da die der 
Header sind.

Ich dachte ich mach das einfach per PWM und ändere alle 125µs das 
Tastverhältnis. Sollte doch so gehen oder?

Nur hab ich zwei Fragen,
1. Wie bringe ich die Datei am Besten ins Programm, ich dachte per Array 
aber ist etwas mühsam jedesmal Beistrich etc. hinzuzufügen.
2. Wenn ich das Array mache, speichert es ja in den Data und Program 
Bereich, wie könnte ich das verhindern, denn der program Bereich ist ja 
nicht so groß, dass er das aufnehmen könnte.

Danke

Schöne Grüße
Patrick

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für das Einbinden gibt es zwei Möglichkeiten:

1. In ein Array mit dem Attribut PROGMEM. Dadurch liegt es automatisch 
nur im Flashspeicher. Dafür muss man aber ein Programm schreiben, das 
aus der Datei das Array als Text erzeugt.

2. Die Datei vom Linker einbinden lassen. Dafür muss man dann einen 
Symbolnamen angeben, unter dem man es im Programm als extern definiert 
benutzen kann.

In beiden Fällen muss man Routinen zum Lesen aus aus dem 
Programmspeicher verwenden. Siehe
http://www.nongnu.org/avr-libc/user-manual/group__...

Bei dem Ausspielen über PWM muss man sich überlegen, wie man dafür 
sorgt, dass die notwendige Auflösung abgebildet werden kann. Pro Sample 
muss also ein PWM-Zyklus laufen, der entsprechend der WAV-Auflösung 
genügend einstellbare Stufen hat.

Grüße,

Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter!
Ich habs jetzt mal mit PROGMEM probiert, und erfolgreich getestet, es 
kommt Musik raus wie erwünscht.


Was du wegen der PWM meinst, weiß ich nicht so genau, ich hab jetzt 
einfach fast PWM mit 255 als Top verwendet und eine 8Bit 8kHz WAV 
genommen, und einfach die Bytes nach einander als OCR1A ( Compare ) 
angegeben. Funktioniert so wunderbar eigentlich.

Ich werde später mal mehrere verschiedene Audio Dateien brauchen, was 
eignet sich hierfür ? SD, MMC ? oder gibt es was einfacheres? Mir würde 
vermutlich 2MB reichen.

Schöne Grüße
Patrick

Autor: Julian R. (tuefftler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Patrick:
Wemm es nur 2MB sind dann kann man ja einen EEPROM bemühen.
FAT bei Speicherkarten zurekonstruiren ist sehr aufwendig.

julian

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@Patrick:
>Wemm es nur 2MB sind dann kann man ja einen EEPROM bemühen.
>FAT bei Speicherkarten zurekonstruiren ist sehr aufwendig.
>
>julian

Für Bastelzwecke kann man auch eine alte S-Karte als EEPROM mißbrauchen 
;)
Man muss ja keine FAT drauf packen und wenn man sowieso die meiste Zeit 
nur ließt braucht man sich auch um die Schreibzyklen keinen Kopf machen.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

..alte SD-Karte als..

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.