Hallo zusammen, ich habe ein Miniprojekt vor. Ich habe eine SD-Karte auf der eine .wav-Datei drauf ist. (ca. 7 Sek.) Jetzt will ich als Mikroconbtroller einen Atmega8 verwenden, da ich den schon daheim habe. Wenn ich auf eine Taste drücke soll einfach das File abgespielt werden. Eine Stop-Taste oder Spul-Taste ist nicht nötig. (ist nur eine Art Gong) Momentan bin ich auf der Suche nach einem ganz einfachen Code dafür. Habe den Schaltplan von http://elm-chan.org/works/sd8p/report.html. Aber der Code ist mir eigentlich zu komplex. Geht das auch einfacher ??? Soll wirklich nur ein ganz einfacher Code sein. (In C oder BAscom) Brauche ich da außer der SD-Karten-Halterung und dem Mikrocotnrolelr (Atmega8), noch etwas? Vielen Dank Gruß Fabi
@Fabian Müller (fabiii9) >Habe den Schaltplan von http://elm-chan.org/works/sd8p/report.html. >Aber der Code ist mir eigentlich zu komplex. Dann sein mal 1 Minute clever und bau das Projekt 1:1 nach, dann musst du nur das fertige HEX-File flashen und gut.
Fabian Müller schrieb: > Hallo zusammen, > > ich habe ein Miniprojekt vor. > > Ich habe eine SD-Karte auf der eine .wav-Datei drauf ist. (ca. 7 Sek.) > > Jetzt will ich als Mikroconbtroller einen Atmega8 verwenden, da ich den > schon daheim habe. > Wenn ich auf eine Taste drücke soll einfach das File abgespielt werden. > Eine Stop-Taste oder Spul-Taste ist nicht nötig. > (ist nur eine Art Gong) > Momentan bin ich auf der Suche nach einem ganz einfachen Code dafür. > > Habe den Schaltplan von http://elm-chan.org/works/sd8p/report.html. > Aber der Code ist mir eigentlich zu komplex. > > Geht das auch einfacher ??? Ja klar, die Jungs von elm-chan haben den einfach aus Spass ein bisschen komplexer gemacht... Sorry, aber ne SD Karte lesen (inkl. Filesystem implementierung) und Tonausgabe (noch das einfachste) geht leider nicht in 10 Zeilen Code. Sowas existiert nur in der kranken Fantasie von Arudino und Bascom versuchten Gehirnen. Willkommen in der realen Welt. gruß cyblord
:
Bearbeitet durch User
Fabian Müller schrieb: > Geht das auch einfacher ??? Nur wenn die die SD-Karte ohne Dateisystem betreibst. > Brauche ich da außer der SD-Karten-Halterung und dem Mikrocotnrolelr > (Atmega8), noch etwas? Entkoppelkondensatoren, Lautsprecher/Kopfhörer, Programmer, Platine, PC zum Programmieren,... cyblord ---- schrieb: > Sorry, aber ne SD Karte lesen (inkl. Filesystem implementierung) und > Tonausgabe (noch das einfachste) geht leider nicht in 10 Zeilen Code. > Sowas existiert nur in der kranken Fantasie von Arudino und Bascom > versuchten Gehirnen. Wenn ich den ganzen Code in einer Lib verstecke, würde es auch mit ASM in zwei Zeilen gehen.
:
Bearbeitet durch User
> (ist nur eine Art Gong)
In diesem Fall würde ich mir die music-box von elm-chan anschauen; das
wird dann eher ein mittleres Projekt (auch mit, O Gott - Assembler!),
aber ohne SDC, und wenn man mit dem Wellenmuster etwas spielt, kann man
eine Menge lernen und auch etwas Spaß dran haben.
>Sowas existiert nur in der kranken Fantasie von Arudino und Bascom >versuchten Gehirnen. Krank ist es doch, wenn jeder User den Zugriff auf ein FAT Filesystem neu programmiert. Der richtige Weg ist, Libs zu benutzten. Ob jetzt STM32Cube, eine Arduino Lib oder sonst eine, die auf Mikrocontroller.net oder GitHub rumschwirrt ist doch egal.
Lohmich schrieb: >>Sowas existiert nur in der kranken Fantasie von Arudino und Bascom >>versuchten Gehirnen. > Krank ist es doch, wenn jeder User den Zugriff auf ein FAT Filesystem > neu programmiert. Der richtige Weg ist, Libs zu benutzten. Ob jetzt > STM32Cube, eine Arduino Lib oder sonst eine, die auf Mikrocontroller.net > oder GitHub rumschwirrt ist doch egal. Jop und? Das TUT der Code auf elm-chan natürlich. Er nutzt bereits eine lib für den FAT Zugriff. Kapiert das ein Arudino/Bascom Programmierer? Nein natürlich tut er das nicht. Denn alles was über Config FAT oder fat.init() hinausgeht, kennt er nicht, kann er nicht. gruß cyblord
> Jetzt will ich als Mikroconbtroller einen Atmega8 verwenden, da ich den > schon daheim habe. Das passt nicht zum Schaltplan, die dort vermutlich verwendete 64 MHz-PWM kann der ATmega8 nicht; letzterer ohne zusätzlichen externen DAC wird auch einen einfachen Gong ziemlich ruppig klingen lassen.
Also ich habe vor einiger Zeit für einen Modellbauer mittels Arduino Uno (oh Schreck!) einen LKW-Soundgenerator realisiert. Die PWM wurde dabei auf 32 kHz gesetzt, und der Sound (Wave, 8 kBit Streamingrate) als Data-Statement direkt im Sourcecode (Flash) untergebracht (vorher per selbstgeschriebenem Tool aus einem Wave extrahiert und in Programmzeilen umgewandelt). Das richtige Abspieltempo wurde ganz simpel mit ein par Leerbefehlen hingetrimmt. Die Programmstruktur ist dabei extrem simpel. Der Arduino verweilt an einem Beinchen pollend in einer Endlosschleife. Wenn das Signal kommt, werden in einem For-Next-Loop die Bytes per PWM 'rausgeschoben, danach gehts in die Warteschleife zurück. Das Prinzip sollte auch für einen Türgong oder "Türschrei" ausreichend sein ...
@Cyblord Ich weiß nicht, was Dir immer die Hörner aus dem Schädel treibt, sowie das Wort "Bascom" auftaucht. Das ist ja schon wie ein pawlowscher Reflex. ;-) Auch in Bascom ist es möglich, eine fertige Bibliothek zum Zugriff aus SD-Karten zu benutzen. Hier ist das z.B. veröffentlicht: http://www.mcselec.com/index.php?option=com_content&task=view&id=291&Itemid=57 Na freilich ist das nicht einfach zu verstehen, aber, wer sich Mikrokontroller aufhalst, der muß sich damit befassen. MfG Paul
Hallo, erstmal vielen, vielen Danjk für eure ganzen Antworten. Max H. schrieb: > Fabian Müller schrieb: >> Geht das auch einfacher ??? > Nur wenn die die SD-Karte ohne Dateisystem betreibst. Was bringt mir denn dieses Dateisystem. Also nochmal zum Verständnis. Auf der SD-Karte ist nur ein File (wav-File). Sonst ist da nichts drauf. Der Mikrocontroller muss also nicht auswählen Vielen Dank Gruß Fabi
Dann muss du die Wavedatei Bitweise in die Speicherregister der SD-Karte schreiben und sie auf die selbe Art wieder auslesen. Wenn du das nicht willst, brauchst du ein Dateisystem.
Paul Baumann schrieb: > Ich weiß nicht, was Dir immer die Hörner aus dem Schädel treibt, sowie > das Wort "Bascom" auftaucht. Das ist ja schon wie ein pawlowscher > Reflex. Jaja, das hat mit Bascom selbst nichts zu tun. Sondern wenn da jemand ankommt, von Bascom das Gehirn weggebrannt und dann an fertigem Code rumnörgelt, dass dieser ja viel zu komplex sei und obs nicht einfacher gehe. Ja super! MMeint er die Autoren des Codes sind alle doof oder schreiben gerne unnützen Code oder wie? Ich würds ja gerne verstehen. Und dann allein die Idee, wegen einem blöden Türgong, gleich ne komplette SD-Karte mit Wav Datei zu nehmen. Klar wenn man nicht weiß welcher Aufwand da drin steckt. Und wie soll mans wissen, wenn man bisher nur mit Programmier-Lego gespielt hat. Und SD-Karten sind ja überall drin. Also gebt mir 2 Zeilen Code und alles läuft wie ich will. Der Bub weiß ja noch nichtmal was ei Dateisystem ist. Boa gut dass ich mich wegen so was nicht auch noch aufrege...
Du kannst auch ne WAV Datei direkt auf eine SD schreiben. Ohne FAT. Ist's eine 8Bit unsigned WAV Datei, dann reicht es einfach die Daten von der SD-Karte ab Adresse x (nach dem Header) zu lesen und auf den DA Wandler zu geben.
Wenn Dir der Code von Chan nicht goutiert, dann versuchs eben auf die althergebrachte Methode: Der Gockel wirft zum Thema "Eprom Waveplayer" genügend Material aus. Schmeiß also die SD-Karte weg, schnapp Dir einen Eprommer, mit dem Du Dein File in ein Eprom brennst, hau den Sound via CD4060/4040er-Kaskade in ein R2R-Netzwerk und Du wirst keine einzige Zeile programmieren müssen. Am Ende des Tages wirst Du aber feststellen, dass die Lösung von Chan doch die praktikablere war....
@ Frank Esselbach (Firma: Q3) (qualidat) >(oh Schreck!) einen LKW-Soundgenerator realisiert. Die PWM wurde dabei >auf 32 kHz gesetzt, und der Sound (Wave, 8 kBit Streamingrate) als >Data-Statement direkt im Sourcecode (Flash) untergebracht (vorher per >selbstgeschriebenem Tool aus einem Wave extrahiert und in Programmzeilen >umgewandelt). Das richtige Abspieltempo wurde ganz simpel mit ein par >Leerbefehlen hingetrimmt. Womit mal wieder das Arduino-Klischee voll erfüllt wäre ;-) Mit 3 Minuten nachdenken hätte man das Nachladen der PWM in den 32 kHz Timer gepackt und hätte nix trimmen müssen. >Die Programmstruktur ist dabei extrem simpel. Der Arduino verweilt an >einem Beinchen pollend in einer Endlosschleife. Wenn das Signal kommt, >werden in einem For-Next-Loop die Bytes per PWM 'rausgeschoben, danach >gehts in die Warteschleife zurück. Mit nem Interrupt wär das genauso einfach.
cyblord ---- schrieb: > Sowas existiert nur in der kranken Fantasie von Arudino und Bascom > versuchten Gehirnen. Da beißt er wieder zu. :-) Cyblord, du warst ja mit der größte meiner Bekehrer. Sicher geht vieles auch mit Arduino und schnell, aber viele Sachen findet man auch erst nach langem Suchen, weil sie nicht in den Büchern stehen. Man kann z.B. auch einen ganze Port ansprechen in Arduino, aber in meinen Büchern stand das nicht. Was musste ich eine Fabrik für den Codeschalter bauen, in C wäre das so leicht gewesen.
:
Bearbeitet durch User
Fabian Müller schrieb: > Was bringt mir denn dieses Dateisystem. > > Also nochmal zum Verständnis. > Auf der SD-Karte ist nur ein File (wav-File). Das Filesystem bringt dir, daß es überhaupt Files gibt. Statt ein wav-File zu speichern, kannst du dessen Inhalt aber natürlich auch direkt "roh" in Sektoren der SD-Karte schreiben. Warum es aber komplizierter sein soll, fertigen funktionierenden Code zu verwenden als eine vereinfachte Version davon nochmal selbst nachzubauen, verstehe ich nicht.
F. Fo schrieb: > cyblord ---- schrieb: >> Sowas existiert nur in der kranken Fantasie von Arudino und Bascom >> versuchten Gehirnen. > > Da beißt er wieder zu. :-) > > Cyblord, du warst ja mit der größte meiner Bekehrer. Du meinst dieses Nullsummenspiel namens Cyblord, ist ein flotter Feger?
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.