Hallo liebe Freunde der Mikroelektronik! ich möchte hier gerne eine aktuelle Entwicklung von mir zum Besten geben. In dieser minimalistischen Form habe ich das im Netz bisher noch nicht finden können. Den grössten Teil des Wissens und der Software dazu habe ich aus dem Netz bezogen, dann stark optimiert und möchte das Ergbnis jetzt gerne hier veröffentlichen. Dies ist eine C-Software, die WAV-Files mit 18,75kHz Samplerate, 8 Bit PCM Mono mittels eines ATTINY13(A) = 30ct-Prozessors (9.12.2017 ebay als 5er Pack) von einer "normal neu formatierten und beschriebenen" FAT16-SD-Karte wiedergibt. Die Qualität ist auch ohne aufwändige externe Filter schon ganz ordentlich und viel besser als man das entsprechende 4/8kHz 4/8-Bit Grusskarten-Gequäke bisher kennt. Vom ATTINY13 wird in Minimal-Konfiguration nur die Hälfte des verfügbaren RAMs (=32Byte) benötigt (ja, die Standard-Sektor-Grösse bleibt 512 Bytes, spielt kaum eine Rolle) und im Flash sind auch noch ein paar Bytes(max. 146) frei, so dass evtl. sogar noch eine kleine zus. Anwendung auf diesem Proz laufen kann, Pins müssten dann für zusätzliche Funktionen gemultiplext werden. Kann schnell auf andere Prozessoren mit mehr Pins/Ressourcen portiert werden. Es braucht an HW-Unterstützung nur den Timer0 mit OC0A als Hardware-PWM, SPI ist Software. Die SD-Karte MUSS FAT16 formatiert sein und darf nicht fragmentiert sein, die maximale Wiedergabe-Dauer liegt dann bei etwa 1,84GB nutzbarem Inhalt: 1,84GB / 18.7kBytes/s = ~27h, sollte für die allermeisten Anwendungsfälle ausreichen :) Der "Trick" ist, dass die Karte per Double-Buffering mit nur 16 bzw. 32 Byte-Vorhalt gelesen wird und jedes Sample nur für 2 PWM-Perioden anliegt. In reinem Assembler würde man den Flash-Verbrauch wahrscheinlich noch auf etwa die Hälfte drücken können. Anleitungen zur Erstellung der SD-Karte, HW-Minimal-Schaltung, Beispiel-Sound-Aufnahme, Anleitung zur Konvertierung des WAV-Files und fertiges HEX-File etc. siehe angehängte ZIP-Datei und enthaltene readme.txt. Fotos vom Serviervorschlag "DIP-Sockel an SD-Adapter-Karte in Freiluft-Verdrahtung" habe ich mal beim dicken Kim in Übersee hinterlegt: https://mega.nz/#F!ZwsEiKRL!IRHqlOjgTfNEtaYAxG9Q6g Have fun! Q.E.D. Gruß, Stefan
Stefan K. schrieb: > Fotos vom Serviervorschlag "DIP-Sockel an SD-Adapter-Karte in > Freiluft-Verdrahtung" habe ich mal beim dicken Kim in Übersee > hinterlegt: Warum? Warum nicht einfach als Anhang hier hochgeladen?
Vermutlich bin ich blind... aber ein Schaltbild wäre hilfreich.
Gut gemacht, mitm Tiny13 ;)
Schön wäre es, wenn er die Samplerate aus dem Header ausliest und den
Timer entsprechend einstellen würde. Aber: ich hab keine Ahnung von
"sowas".
> Vermutlich bin ich blind... aber ein Schaltbild wäre hilfreich.
1 | /* |
2 | |
3 | Ports auf Eval-Board |
4 | |
5 | Fkt. AT11/12/13 2313 JP40 |
6 | ----------------------------------- |
7 | Out 5-PB0 OC0A 17-PB5 |
8 | MISO 6-PB1 OC0B 18-PB6 |
9 | SCK 7-PB2 19-PB7 |
10 | CS 2-PB3 16-PB4 |
11 | MOSI 3-PB4 15-PB3 |
das habe ich in der sdread.c gefunden Äxl
@rufus: Weil das Formular hier schon zu Datensparsamkeit bei den Anhängen aufruft, dachte ich, das "Beiwerk" könnte vielleicht besser ausgelagert werden. Hab die Fotos hier jetzt mal zusätzlich angehängt, dann ist hier auch alles komplett. @Äxl,Georg: Prinzipiell wäre es natürlich möglich die Samplerate aus dem WAV-Header zu lesen, aber zumindest der Tiny13 ist mit der eigentlichen Wiedergabe schon fast völlig ausgequetscht und absolut auf maximale Wiedergabe-Performance getrimmt. Da fand ich es sinnvoller, mit einem einzelnen Kommando auf dem PC vorher das passende Format zu erzeugen. Wahrscheinlich wäre es a la "1 links 1 rechts, 2 fallen lassen" möglich, ein passendes Downsampling zu implementieren. Wegen Schaltplan war ich wirklich etwas spärlich, in der gleichen Datei ist direkt unter der Tabelle eine "Zeichnung" wie der DIP-Sockel am Besten an die SD-Karte passt. Gut, die Ansicht des Sockels ist von unten, das erklärt sich vielleicht nicht unmittelbar von selbst :) :
1 | SD-Card |
2 | |
3 | / 1 2 3 4 5 6 7 |
4 | 9 CS DI GND VDD SCK GND DO NC NC |
5 | | | | |
6 | | | | |
7 | | | | |
8 | 1 2 3 4 |
9 | /R CS MO GND |
10 | |
11 | |
12 | SCK
|
13 | VCC MI Out |
14 | 8 7 6 5 |
15 | |
16 | DIP-Socket |
Stefan K. schrieb: > Weil das Formular hier schon zu Datensparsamkeit bei den Anhängen > aufruft, Das ist doch nur, weil es völlig nervig ist, wenn bedenkenlos die zig Megapixel Rohformat der Kamera den Nutzern aufs Auge gedrückt werden, um dann einen ATtiny13 abzulichten, den man vielleicht mit maximal 10 x 10 cm² vor sich auf dem Bildschirm dargestellt haben möchte. Schließlich muss sich dann jeder mehrere Megabyte laden, nur dafür, dass sie jeder einzelne Computer im Anschluss auf ein darstellbares Maß reduziert. Aber Bilder an sich sind durchaus gewünscht – danke fürs Hochladen!
Beitrag #5248277 wurde von einem Moderator gelöscht.
Stefan K. schrieb: > Wegen Schaltplan war ich wirklich etwas spärlich Den Anschluss der SD-Karte kann man aus dem Quelltext heraus nachvollziehen. Aber, was für einen Lautsprecher hast du genommen, was für einen Tiefpass? Das sind die Ecken, über die ein Anfänger sofort stolpert.
Bei dem analogen Teil habe ich es mir sehr einfach gemacht: Die Aufnahme im Anfangspost ist tatsächlich nur mit dieser Beschaltung gemacht worden:
1 | Pin 5-----+ |
2 | |
|
3 | -
|
4 | | | 2.2k Poti |
5 | \ | |
6 | |\| |
7 | | \-------------( 3.5mm Klinke |
8 | | | |
9 | -
|
10 | |
|
11 | GND
|
Mit 3.5mm Klinke dann weiter auf so einen Brüllwürfel mit AUX-Eingang. Ohne DC-Auskopplung auf meiner Seite. Hatte kurz eine Auskopplung zwischen Pin5 und dem Poti mit 100nF versucht, aber das hörte sich dann mumpfelig und leise an, also hab ich es weg gelassen und an der Stelle nicht weiter experimentiert. Beim Filter-Design habe ich auch wenig Erfahrung. Bei den anfänglichen Tests hatte ich einfach einen kleinen 16 Ohm-Lautsprecher 0,5W mit vorgeschaltetem 470 Ohm Widererstand betrieben: Pin 5------[ 200-600R ]--- LSP --- GND Wieder keine Auskopplung. Das geht natürlich nicht besonders laut und so ein frei rumliegender Lautsprecher gibt auch kein Klangwunder ab. Für den Funktionstest reichte es aber.
Beitrag #5266430 wurde vom Autor gelöscht.
Da ich noch weitere Rückfragen zum Schaltplan bekommen habe, hier eine kleine Skizze, wie ich das bei mir genau verdrahtet habe.
Die ersten Töne sind aus dem lautsprecher gekommen. deshalb habe ich volgende Frage: muss die komplette Musik oder was auch immer in ein einziges Wav file hinein oder kann man mehrer Files auf die Karte schreiben und die werden dann nacheinander abgespielt?
Super! Es wird nur das erste File wiedergegeben, mehrere Sound-Dateien müsste man vorher auf dem PC zu einer Datei zusammenpacken. Es wäre theoretisch möglich, mehrere Files abzuklappern, aber zumindest beim Tiny13 wird es dann mit dem Flash-Speicher (zu) eng.
Moin, nicht ganz so kompakt, dafuer aber 5V-kompatibel und mit Filter: http://www.elektronik-labor.de/AVR/T13contest/sdsound-tn13.htm
Moin Arne, sehr schönes Projekt von Dir und alles sehr ausführlich und detailliert dokumentiert! Das hatte ich echt trotz Recherche vorher nicht gesehen, bevor ich mich an mein Projekt gemacht hatte. Wieder nur Zweiter :D Bei Dir ist es für den Anwender etwas aufwändiger, die SD-Karte schon auf Sektor-Ebene zu präparieren, aber dafür wird man nachher mit mehr Bedienkomfort belohnt.
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.