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 :)
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.
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.