Forum: Mikrocontroller und Digitale Elektronik Wave von MMC abspielen


von Marco (Gast)


Lesenswert?

N'Abend!

Seit Freitag sind meine beiden Mega32 da und ich habe eine kleine
Experimentierplatine gebaut mit allem was ich im Moment so brauche.
Also 16MHz Quarz, RS232 und MMC Slot inklusive 3,3V Schaltregler und
Levelshifter.
Auslesen kann ich die Karte im Moment noch ohne Filesystem weil ich der
Fat Code von Uli nur FAT16 unterstütz und ich keine Lust habe ihn
anzupassen :) Ich bekomme Anfang nächster Woche eh eine 32MB MMC und
dann kann ich mit FAT16 loslegen...

Aber jetzt zu meiner Idee. Bestimme 512Byte Blöcke oder die ganzen
Karteninhalt am Stück über die serielle Schnittstelle ausgeben ist
schon recht lustig wenn man die Karte mit ICQ Logs gefütter hat :) Aber
es sollte doch auch möglich sein 8Bit PCM Dateien durch einen DAC zu
schicken... nur zum testen und zum lernen.
Das ganze soll vorerst ohne Filesystem laufen und wie bei der
Textausgabe einfach nur duch sequenzielle Adressierung der einzelnen
Blöcke. Soweit so gut.

Ich stelle mir das so vor: Sagen wir auf der MMC liegt eine .wav die
mit 8Bit und 8kHz kodiert ist um den Aufwand etwas in Grezen zu
halten... Mono natürlich :)
Das macht denn 8000S/s*8Bit=64000Bit/s oder 8kByte/s und das ist ein
Wert den der AVR und die MMC schaffen sollten. SPI Clock läuft mit
einem Teiler von 128 also mit 125kHz.

Soooo ich könnte PWM benutzen wenn ich den 8Bit Timer sagen wir mal auf
1/1024 einstelle komme ich auf 15625 Überläufe pro Sekunde die ich mit
einer Interruptroutine abfangen könnte und bei jedem Überlauf
(vielleicht eher bei jedem 2. wegen den 8kS/s der Wavedatei) und ein
Byte der Datei ins OCR Register kopieren, oder?
Oder ich schnappe mir "einfach" 8 freie Ausgände, baue einen Addierer
aus Widerständen und nebnutze den als DAC... auch alle x
Timerüberläufe.
Macht das Sinn oder sollte ich besser mal ne Runde mit dem Hund raus
und frische Luft schnappen? :)

Es geht mir wie gesagt nur um die Machbarkeit und um ein kleines
Erfolgserlebnis zu haben denn ihr wisst ja multimediale Anwendungen mit
dem AVR sind immer ein kleines Erfolgserlebnis :)

Ach ja, ich programmiere noch etwas wackelig unter WinAVR nachdem ich
mich dazu überwunden habe größere Sachen in C und nicht alles in
Assembler zu schreiben.

Würde mich über Anregungen, Tipps, Links und alles andere freuen :)

von Benedikt (Gast)


Lesenswert?

Die Wiedergabe der Wave Dateien sollte kein Problem sein. Das habe ich
mit einer Festplatte auch gemacht, als ich ein halbes Jahr auf den mp3
Dekoder warten musste...

Ob PWM oder 8bit DAC ist eigentlich egal, für die ersten Tests und 8kHz
Samplerate würde ich den PWM Ausgang nehmen, da dies einfacher ist.

von Marco (Gast)


Lesenswert?

Hmmm das klingt doch mal nicht schlecht :)

Und wie lief das bei dir im Einzelnen ab? Also so nach dem Motto...
alles x Takte/Sekunden y Bytes auslesen, im Ram speichern?, an z
ausgeben... und gabs Probleme beim Timing oder so?
Klang es hörbar oder verzerrt, zu schnell, langsam, mit Aussetzern...

von Benedikt (Gast)


Lesenswert?

Ich habe einen FIFO Puffer programmiert, in dem Sektorweise die Daten
zwischengespeichert werden, da eine Festplatte ein weilchen braucht,
ehe der angeforderte Sektor zur Verfügung steht. Bei MMC ist das
sicherlich nicht ganz so extrem.
Bei Anschluss eines mp3 Dekoders mit eigenem Buffer kann man
warscheinlich ganz darauf verzichten, bei Wave jedoch nicht.
Mein Puffer ist 64kB groß (ich verwende ein externes SRAM), und sobald
im Puffer genügend Platz ist, wird ein kompletter Cluster aus der
Festplatte gelesen und in den Puffer geschrieben.
Von da aus werden die Werte per Timer Interrupt ausgegeben.

Bis 22kHz lief alles einwandfrei, danach stockte die Wiedergabe ab und
zu wenn die Festplatte etwas länger zum lesen brauchte. Das lag aber
daran, dass die Festplatte schon ziemlich kaputt war.

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.