hi, ich bin gerade dabei einen Mp3 Player mit SD Card Slot zu bauen/programmieren. Jetzt hab ich gerade das Web ein bisschen nach Sd-Card Infos abgesucht. Dabei hab ich einige sehr nützliche Programmer gefunden. Doch eigentlich möchte ich das Original Spec. Bei www.sandisk.com gibts sehr wohl eine 'simpified version', aber die nütz mir nicht viel, weil dort genau das fehlt, was eigentlich wichtig ist; die beschreibung zu den Registern, deren Funktion, Adressen usw. Das einzige was mir darin als nützlich erschient, ist eine Anschlussbelegung der Karte und eine Auflistung der Ansteuerungsmodi. Auch einige Beispiele zum auslesen der Karte sind dabei, jedoch nur als Timing-Diagramme..:( Für weitere Infos wird man auf die "full Version" verwiesen. Schliesslich bin ich dann auf www.sdcard.org gestossen. Doch dort findet man keine Downloads, sondern nur eine Anmeldung für eine Lizenz, die die Wenigkeit gg von 1000 us$ pro Jahr kostet. Für mich als 14 Jähriger Hoby Elektroniker nicht zu denken..:) Aber es gibt doch massennhaft MP3-Player Projekte im Internet, darunter auch einige mit Sd/mmc Cards. Doch die Personen, die diese Player gebaut haben, werden doch auch irgendwo die Infos herhaben..? Gibts irgendwo eine Quelle, wo man das gratis downloaden kann, oder waren die Specs früher mal Gratis? MFG Nik
tach nik, geh einfach mal auf www.myplace.nu/mp3/. da gibts auch quellcodes. vielleicht is ja was dabei.
Hi Nik, ich melde mich mal als Mitstreiter an :-) Willst Du die SD ebenfalls über SPI betreiben, oder das SD Interface nutzen? Ich glaube, ich werde mich vorerst auf das Lesen von FAT 16 über Spi einschränken, und da gibt's ja schon Code im Netz, den man verstehen und anpassen könnte. Kennst Du noch andere Quellen, die kein CF sondern SD/MMC (und avr)benutzen? Welchen AVR möchtest Du verwenden? Ich fange erst gerade an, mich schlauer zu machen, aber vielleicht können wir uns ja kurzschließen; auch wenn ich mittlerweile meine Quellen nicht mehr weiß; aber dann werde ich mal für die nachwelt anfangen zu sammeln. Im Kaltmacher.de forum hat sich eine grupper zusammengeschlossen, die den yampp7 mit farbdisplay und mmc noch weiter verkleinern will, basierend auf der original-firmware. Die scheinen mir aber etwas zu enthusiastisch, ich kann nicht einschätzen wie genau die da den durchblick haben (ich habe nämlich noch keinen :-) Aber die Platine haben sie wohl schon herstellen lassen.. Ich möchte aber auf den USB Controller verzichten, und eine möglichst kompatibel formatierte sd/mmc verwenden, von der ja dann ggf. neue firmware geladen werden kann. Das eigene Format mag platzsparend sein, aber ich möchte auch normale daten speichern können. Neben der SD/MMC soll über SPI auch der VLSI Decoder und das Nokia Display betrieben werden, allerdings kann ich leider noch nicht einschätzen, ob das von der Geschwindigkeit überhaupt reicht, vermute aber schon. Zumal ich auch gerne eine RTC und kleine Sensorikaufgaben realisieren möchte. Naja, ist noch viel Arbeit :-) Würd mich interessieren was Du Dir so gedacht hast, und wie weit Du schon bist. -leif
hallo evt. hilft das euch weiter die spec. von einer MMC karte SD sind abwärts Kompatibel. Mfg Ulrich Radig
hi @leif Ich mache mich auch gerade schlau. Jedoch hab ich eigentlich alle Teile schon, ausser dem vs1001k...Heute werde ich mal versuchen, die Sd Card anzusteuern...dazu verwende ich einen Atmega162. Dies scheint ein wenig überdimensioniert, aber ich hab im Moment keinen anderen Controller da und ich will das Programm zuerst mal ohne optimierungen zum laufen bringen. Wenn dann (hoffentlich) alles geht und der Code unter 8 kbyte gross ist, werde ich einen atmega8 mit 16 mhz nehmen. Mit der Ansteuerung hab ich noch nicht so ganz den Durchblick, aber vielleicht wirds heute noch was:) @Ulrich Vielen Dank, das bringt mich schonmal einen riesen Schritt weiter, da ist da alles ziemlich genau beschrieben..:) Hier doch noch mal eine Frage zu dem mp3 Player, den du gebaut hast. Dieses 'Wochenendprojekt', wie es kürzlich mal genannt hast. eigentlich verstehe ich die eigentliche Ansteuerung(sektor auslesen) Aber bei der initialisierung blick ich nicht ganz durch. Um in den SPI Modus zu kommen, muss man glaube ich 8 'leere' also 0xFF bytes senden. Dananach kommt chip select auf low(weil die low aktiv ist) Danach cmd0 senden und die Antwort auswerten. Dann CMD1 senden und diesen wiederhohlen, bis die Karte mit 0xFF antwortet. Und das wars dann auch schon? So hab ich das aus einem kleinen C Programm zur MMC anteuerung... MFG Nik
Ich werde laufe nächster Woche auch mein kleines C Programm für den Atmel fertig haben, werde darin alles genau erläutern. Hier habe ich noch ein PDF File für das SPI Timming ich hoffe das hilft weiter. Mfg Ulrich Radig
Und noch ein kleiner Tip von mir: Man kann auch mal in die Datenblätter anderer µController schauen. Zum Beispiel hat Philips den I²C-Bus erfunden, und dort bzw. in deren Datenblätter für ihre µController findet man jede Menge Informationen über die Funktionsweise des I²C-Busses. Genau so verhält es sich mit der SPI-Schnittstelle: Motorola hat diese Schnittstelle erfunden, und in deren Datenblätter (teilweise ziemlich große Controller, 32Bit) finden sich sehr detaillierte Informationen zum SPI-Bus. Also, mal über den Tellerrand schauen lohnt sich! :-) In diesem Sinne, fröhliches Schaffen! Dirk.
hi, ich hab nun mal ein programm zum auslesen der csd gemacht, nur geht es leider noch nicht... Ich glaube eigentlich, dass es an der Initialisierung vom SPI hängt. Dort hab ich massenhaft einstellungen Die config zeile aus Bascom sieht bei mir z.b. so aus : Config Spi = Hard , Data Order = Lsb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 1 aber ob die stimmt, weiss ich nicht recht. Was ist mit Phase gemeint?, denn dazu steht in der Hilfe nur, man soll im Datenblatt schauen und dort hab ich auch nichts gefunden... Bei der Hardware bin ich mir auch nicht 100% sicher. Ich hab da einen Schaltplan von einem MP3 Player, aber dort kann schon mal etwas nicht stimmen; der Datenausgang der Karte ist mit Miso verbunden und mosi ist mit dem eingang der karte verbunden, das müsst aber doch eingentlich genau umgekehrt sein...? Und dann wären da noch meine Spannungsteiler. Ich hab welche mit 1.8kOhm und 3.3kOhm gelötet, die gehen eigentlich auch ganz gut. Nur ist die stromverorgung der karte ~3.15Volt und die Spannungsteiler erzeugen etwa 2.9 Volt. Reicht dass, damit die Karte dies als high erkennt? Und dann gibts auch noch die Pullups, die im Datenblatt beschrieben sind, wie kann ich die denn noch einbauen, wenn ich schon die spannungsteiler habe? Ich würde mich über eure weitere Hilfe freuen:) MFG Nik
@ulrich du hast in einem anderen tread einmal dein asm programm deines mp3players gepostet. Hast du auch noch den Schaltplan dazu auf dem pc, den du mir schicken könntest? Ich bin mir nämlich nicht ganz sicher, ob das stimmt, wie ich die Karte angeschlossen habe... MFG Nik
hi, hat zufällig jemand ein bascom beispiel zur ansteuerung einer sd/mmc karte? Ich hab nun schon zweimal darüber geschlafen und leider klappt immernoch nichts...SPI klappt zwar, nur gibt die Karte keine Antwort. Im anhang ist noch mein Programm. Ich weiss es ist noch total unübersichtlich, dies wird sich ändern, wenn es erst einmal geht. MFG Nik
Ich habe hier ein kleines programm für bascom war nur mal als versuch gedacht. Dabei habe ich kein hardware SPI benutzt sondern Software SPI. Ist schon etwas länger her, deshalb werde ich keine fragen dazu beantworten. dieses programm liest einfach einen bereich aus und gibt diesen auf der seriellen schnittstelle aus. Mfg Ulrich Radig
Also, was deine Spannungsteiler angeht habe ich nicht den Durchblick. Aber die Spi Leitungen müssten doch richtig sein. Am MISO heißt Master In Slave Out, also bei der MMC an den Datenausgang. Entsprechendes gilt für MOSI. Was die SD Karte als Pegel akzeptiert, müsste in den Spezifikationen stehen(Datenblatt). Ich habe mir erstmal den Schaltplan vom yampp runtergeladen, und eingehend studiert; das Ding funktioniert, und bietet dementsprechend eine gute Möglichkeit, sich das abzugucken. Bin gerade selber am Schaltplan zusammenstricken, und stelle jetzt erst annähernd den Arbeitsaufwand fest! :-) Habe zwar selbst keine Ahnung, aber ich würde mir überlegen, ob Du nicht gleich C, bzw. auch ein bisschen Assembler lernst. So wahnsinnig unterschiedlich sind Programmiersprachen an sich ja nicht (was einfache Programme betrifft), und ob Du ne Schleife in Bascom oder C schreibst, ist vermutlich auch ähnlich. Das ganze hat aber einen Vorteil: alle anderen benutzen C :-), und Du kannst auf funktionierenden COde zurückgreifen und daraus lernen. Und später kannst Du damit auch mehr anfangen. Weiterhin Motivation und ab und zu ein bißchen Erfolg! (ich freu mich schon auf die einzelnen Etappensiege :-) -leif
... und ich schließ mich auch gleich mal an. Bin zwar erst dabei ein Projekt vorzubereiten, aber zu Wissen wie man SD/MMC Karten ansteuert, ist für's Projekt auf jeden Fall mal interessant ;) Nur hab ich bis jetzt leider noch keine Ahnung, außer das, das eh im orum zu lesen ist ... aber ein sehr interessanter Beitrag scheint folgender zus ein: http://www.mikrocontroller.net/forum/read-1-53662.html mfG Alex
Jetzt hab ich mal ein paar Fragen, die vielleicht hier am besten aufgehoben sind. Und zwar möchte ich LCD,MMC/SD, und VS10xx(*) am SPI betreiben (wie jeder andere auch :-), die SPI Frequenz wird dabei von den 11/02 Decodern auf 4MHz begrenzt (alter Typ 6MHz). 1) Kann ich auf einen µC Quarz verzichten, oder hat das Folgen für das SPI? (überhaupt kann ich mich nicht entscheiden, was ich als Clck nehmen sollte) 1b) Welche Taktfreuquenz ist für 'unser' Projekt denn überhaupt nötig? Zum yampp7 mit NokiaLCD sagt MIS (der Softwaremensch): "If you have installed ATmega161L CPU, change it to ATmega162L. 2. Change CPU crystal from 4.0Mhz to about 10-13Mhz. Higher is better, but not to more :-). You may insert 12.288Mhz Crystal - the same type as for VS1001. If you not have any new crystal, you may use internal 8MHz CPU clock generator without any crystal change, but this is not recommended." Ich persönlich möchte zwar keinen USB Support (weil's Platz, Speicher, Aufwand kostet, und es spottbillige Kartenleser gibt), aber dafür evtl. ein paar andere Dinge implementieren, z.B. eine RTC à la Hagen. 2) Sollten die SPI Slaves einen gemeinsamen RESET haben? (Den Reset des 11/02 kann man auch per Software, und nur zum power-up mittels RC Glied hardwaremäßig durchführen; sinnvoll?) Bei welchen Slaves wird der denn überhaupt eingesetzt? Aber ich vermute, daß auch hier pro Slave ein IO geopfert werden muß. 3) Wie lassen sich die Slaves 'abschalten', also zum Stromsparen? Ich habe (weil ich die Info nicht mehr finden konnte) Atmel mal angeschrieben, wo jetzt genau die Unterschiede zwischen den L, und normalen AVRs sind. Reichelt hat nämlich den mega32-L nur als DIP, und atmega64 ist vermutlich zu groß. Aber ich denke, dann kann man den normalen Typen trotzdem mit <16Mhz @ 3V laufen lassen(?). VLSI habe ich gefragt, ob sie für die in "Audio Porduct Family.pdf" gezeigte "Mobile Phones und PDAs" Applikation, S7, Vorschläge für die Verwendung eines zusätzlichen Verstärkers machen könnten. Ich würde nämlich gerne die Möglichkeit haben, mich mit MP3 zu wecken. Ist aber wohl auch eine Frage des Platzes. Idee Falls das nicht in einem Gerät zu machen ist, könnte man auch über eine Docking-Station nachdenken. Naja, jetzt reicht's erstmal. Erfolgreiche Recherche! -leif (*) Übrigens Nik: Falls Du den Decoder nicht schon bestellt hast, würde ich damit noch warten, bis Du die neuen Typen bekommen kannst. Die bieten eine Reihe von Vorteilen, der 02 kann sogar in einem PCM Format aufnehmen. Ich habe gerade ein 'älteres' muster 02c bekommen.; egnite.de wollte sich bei mir melden, sobald sie wissen wann die in serie verfügbar sind, evtl. könnte ich dann ja für dich einen mit-ordern.
@alexander oho, dieser beitrag scheint wirklich seh spannend zu sein. Ich hoffe ich krieg das ganze heute noch hin. @Ulrich / all Ich hab dein Proggie gerade ausprobiert. Leider funzt es noch nicht. Ich hab zwar die pinbezeichnungen angepasst, aber immer noch nichts...Es scheint also an der hardware zu liegen. Ich hab zu meiner hardware mal einen schaltplan angefügt, evtl weiss ja jemand besser Bescheid und kann mir sagen, was ich faslsch gemacht habe..(?) @Leif 1/1b) Dazu denke ich auch gerade nach. Ich hab einfach mal einen 16 mhz Quarz an den mega162 gehängt...:) 2) Eigentlich kannst du alle Slave hardware Resets zusamenehmen, eigentlich unterstützen alle slaves(decoder, mmc/sd usw.) einen Soft. Reset. Ausser du möchtest alle einzeln über hard Reset resetten... 3)Also Sd und mmc unterstützen beide einen Sleep Mode, ob das auch der Decoder kann, weiss ich nicht >Aber ich denke, dann kann man den >normalen Typen trotzdem mit <16Mhz @ 3V laufen lassen(?). Sollte eigentlich gehen. Bei den L Typen wird einfach garantiert, dass sie mit 3 Volt laufen. (*) Ja, ich hab den Decoder schon bestellt. Netterweis hat mir Andreas Auer ein Vs1001 Piggyback gelötet, welches in ein paar Tagen eigentlich ankommen sollte. freu Trotzdem danke für dein Angebot einen mitzubestellen MFG Nik
Mensch, die bei VLSI haben einen tollen Support; auch wenn Euch das evtl. weniger interessiert, vielleicht hilft es doch mal jemandem: "Probably your best approach in terms of overall simplicity would be to run the chip in its Differential Output state by setting the bit SM_DIFF (lsb of register SCI_MODE). This changes the sign of the left output channel effectively doubling the output voltage and mixing the two channels together for mono applications. You should then connect the speaker terminals to the output channels; speaker+ to right channel and speaker- to left channel, for example. Chances are that you will get enough output power to a small mono speaker from the chip itself. Experiment with speaker impedances around 16 ohms or higher. Lower impedances may be used to maximize output power if some sound distortion is acceptable. If the output power of the chip remains too low, the simplest and least-expensive way to boost the output signal with a differential transistor amplifier stage." Alternativ wurde mir vorgeschlagen, die beiden Ausgänge hardwaremäßig zu koppeln, und dann extra zu verstärken. Toll, das muß ich unbedingt ausprobieren, wenn's soweit ist :-)) -leif
Falls jemand (mit mehr Ahnung als ich) eine Idee hat, wie sich das Vorgeschlagene mit gleichzeitiger Kontrolle über den Kopfhörerausgang umsetzen ließe... Man ist ja für jede Inspiration dankbar.. G Nik, weißt Du, wo man das mit den L-Typen nachlesen kann? Zum Reset: Ja, aber es ist doch nicht unbedingt sinnvoll, alle Slaves gleichzeitig zu resetten. Naja, werde ich nochmal nachsehen. In den MMC Specs habe ich irgendwo gelesen, daß der SPI Modus nicht notwendig vorgeschrieben ist; haben das trotzdem alle/die meisten Hersteller implementiert? -Leif
@leif >weißt Du, wo man das mit den L-Typen nachlesen kann? Ich hab hier auch schon mal dasselbe gefragt. Mir wurde das dann ungefähr so erklärt; Die chips werden nach dem herstellen getestet, ob sie mit 3.3 Volt@8mhz laufen, wenn ja, dann bekommen sie ein L und sonst nicht. Das würde aber bedeuten, dass die ohne L sicher nicht unter diesen Bedingungen laufen würden. Doch das tun einige doch...Wo man darüber sonst etwas nachlesen kann, weis ich leider auch nicht. >In den MMC Specs habe ich irgendwo gelesen, daß der SPI Modus nicht >notwendig vorgeschrieben ist; haben das trotzdem alle/die meisten >Hersteller implementiert? Eigentlich sollten alle Sd/mmc Karten diesen modus unterstützen. MFG Nik
ach ja, noch was zu meinem Schaltplan: Im Datenblatt steht, man solle pullups für alle Leitungen verwenden. Nun hab ich aber schon den Spannungsteiler, reicht der, oder wie sollte das ganze aussehen? MFG Nik
Mhmmm .... gute Frage ! überleg Aber das könnte auch ein/der Grund sein, warum deine Schaltung nicht funktioniert. Hast du die internen Pull-Up's eingeschalten?? mfG Alex
.....wie macht man das in bascom ?:) ich habe das gefühl, dass die leitungen mit spannungsteiler keinen pullup mehr brauchen. Aber die Leitungen DAT1 und DAT2 sollten glaube ich mit 100 kohm nach vdd geschaltet sein. Gerade hab ich übrigens bemerkt, dass ich diese leitungen einfach auf masse gelegt habe. Wenn scho ohne widerstand sollte ich die dann aber mit 3.3 Volt verbinden? Nik
Aja, hab noch etwas gefunden... Auf Holgi's Elektronik Seite ist ein Beispiel wie man auf CF, MMC & SD mit FileSystem schreiben kann... Wenn man den Code für's FileSystem weglässt, hat sieht man wie man auf MMCD & SD via SPI zugreifen kann (ganzer Code kommentiert!!) - aja, und alles ist in C (AVR-GCC) geschrieben .. was will man mehr ;) Seite: http://home.t-online.de/home/holger.Klabunde/avr/avrboard.htm#cf Zip-File (mmc_spi.c & mmc_spi.h sind interessant): http://home.t-online.de/home/holger.Klabunde/avr/FATTests.zip Und gleich auch noch ne - vermutlich dumme - Frage: Wird eine MMC im SPI-Mode auch Sektorweise gelesen, so wie CF oder kann man dort eh jedes Byte einzeln lesen/schreiben? mfG Alex
hi alexander die Datei hatte ich letze Woche schon einmal gefunden, aber mittlerweile wieder total vergessen..:) >Wird eine MMC im SPI-Mode auch Sektorweise gelesen, so wie CF oder >kann man dort eh jedes Byte einzeln lesen/schreiben? Also man liest einen Block, dieser hat normalerweise die Grösse eines Sektors, also 512 byte. Man kann die grösse aber auch auf z.b. 32 byte stellen, um so nur immer 32 bytes aufs Mal lesen zu müssen. MFG Nik
Hey! .. achso, dachte man kann die MMC Karte wie ein ser. EPROM sehn, aber ist ja auch egal ;) Wie ist das beim Schreiben? Kann da auch immer nur ein ganzer Block geschrieben werden?? Haben diese Blöcke so wie Sektoren fixe Grenzen, oder kann man irgendeine Startadresse angeben? mfG Alex
hi, also die startadresse kann glaube ich frei festgelegt werden. Die Adresse zur startadresse ist immerhin 32 bit lang. Wenn es sich also um sektoren handlen würden, dann wären das immerhin 2^32*512 byte...(=2199023255552 byte = 2048 gigabyte) So könnte man also 2 terrabyte adressieren. Ich glaube eher, dass dabei auf ein byte genau jede adresse ausgweählt werden kann. Eigentlich könntest du die blockgrösse auch auf 1 stellen. Dann könntest du bei jedem Lesevorgang aber nur ein Byte auslesen... MFG Nik
hi, ich hab mal ein bisschen überlegt; könnte so wie im Anhang ein Spannungsteiler & der Pullup funktionieren? An der Diode fällt ja auch noch ein Strom ab..dann wären es am Schluss wahrscheinlich wieder unter 3 Volt. Meine Schaltung funzt leider immernoch nicht richtig. Vielleicht liegts ja daran, dass die sd mit ca. 3.15 volt versorgt wird, die Spannungsteiler aber(ohne Dioden!) nur etwa 2.9 Volt erzeugen. Bis wieviel Volt erkennt die SD Karte denn das Signal noch als high? Nik
Hey, wenn du die ganze Schaltung sowieso mit 3,3V Versorgst brauchst du den Spannungsteiler eh nicht. (also wenn du einen L-Typ ATMega verwendest und den eben auch mit 3,3V fütterst) Dann kannst du den Pull-Up rein geben (wenn's die Spezi. so will ...) und Diode, usw. kannst dir sparen). mfG Alex
hi, @alex Das könte ich eigentlich mal machen. Aber mit 3 Volt laufen die Avr's nur mit 8MHZ, und ich möchte 16. Das zweiter Problem ist, das ich nun ein Piggyback board habe(mit vs1001k drauf) dies hat schon einen Level shifter drauf. Dann brüchte ich also nochmals einen, um wieder auf 3.3 volt zu kommen... @uli Danke für den Plan:) Ich hab bis jetzt eignetlich alles gleich, ich hab aber ausserdem gestern noch einen Transistor von data out der mmc zum eingang am uc gehängt. Dennoch funzt es immernoch nicht(auch mit deinem Proggie nicht) Dein Prog läuft ja über soft spi. Ich hab aber gerade die hardware spi pins dazu verwendet. Könnte das Probleme geben? Ich hänge wohl besser alles an einen anderen Port und mach alles über software spi. Denn die neuste Bascom Version unterstütz ja auch soft spi... MFG Nik
Hallo! Nik, ich hab mir deine Schaltung mit der Diode, usw. nochmal angschaut. Also wenn ich jetzt nicht komplett verwirrt bin, kann das so ja gar nicht funktionieren. Angenommen, der AVR gibt nen Low-Pegel aus. Nehemn wir den mal mit 0V an. Dann sind mitten im Spannungsteiler, also vor der Diode, auch 0V gegen Masse. Wegen der Diode kann der AVR die Leitung bei der MMC aber nicht gegen Masse ziehen, sondern macht dort einfach nix. Der Pull-Up sorgt dann dafür, dass dort ca. 3,3V sind -> an der MMC liegt permanent ein High-Pegel an... mfG Alex
Aja, den Trasistor von der MMC zum µC solltest dir eigenlich auch sparen können: Input High Voltage: min. 0,6 * Vcc 0,6 * 5V = 3V -> 3,3V von der MMC sollten reichen ! mfG Alex
Mhmmm ... das letzte Posting vergiss bitte gleich wieder =)) Hab an der falschen Stelle im Datenblatt nachgeschaut ( XTAL Pin oooops ) ... sind doch 0,7 * Vcc = 0,7 * 5V = 3,5V ... Sorry ! mfG Alex
Hallo Nik & Mitstreiter, erstmal eine nicht besonders aufschlußreiche, offizielle Info zu den Unterschieden der L Typen von den 'normalen' Versionen. Im Grunde das, was du schon sagtest; anscheinend wollen die nicht präziser werden: "You are free to use the regular mega32 (non L) at any voltage and speed you like, but Atmel takes no responsibility for the functionality. Using the mega32 as an L device is likely to work, but please test this first to see whether it works properly for you. All AVRs are tested before shipped to our customers, and there are several tests. Some mega32s are only tested in the voltage range 4.5 to 5.5 volt, but up to 16 MHz. These devices are marked ATmega32. Other devices are tested down to 2.7 volt, but only up to 8MHz, These devices are marked ATmega32L." Im Grunde hieße das dann doch, daß die L-Typen (aus welchen Gründen auch immer) minderwertiger sind als die normalen!? Den L-Typen habe ich jetzt aber bei Segor bestellt, die haben nämlich auch den zum VS10xx passenden Grundtonquarz 24,..MHz, und ausserdem smd minijoysticks (von denen ich demnächst einige günstig weiterreichen kann :-). Zur Auswahl der Clock: Ich werde jetzt einen SMD Keramikresonator nehmen. Der ist um einiges schlechter als der Quarz, was die Frequenzstabilität angeht, aber wohl für UART Zwecke noch ausreichend (im Gegensatz zu dem internen, der wiederum wesentlich schlechter ist). Er läßt sich dafür aber wesentlich schneller starten. Außerdem ist er kompakter. [Hardware Design Considerations, Realtime Clock; Appnotes von atmel] Zum SPI Reset: Ich werde nicht alle Slaves an eine Reset-Leitung hängen. Der VS10XX 'schläft', wenn der Reset betätigt ist, die SD/MMC braucht überhaupt keinen Hardware Reset (Da auch SW Reset und Sleep), und beim Nokia Display braucht man anscheinend nur nach dem Power Up einen Hardware-Reset. Ich werde mal rausfinden, ob man das nicht auch mit einem einfachen RC-Glied machen kann, sowas wird nämlich für den VS10xx in der Application Note erwähnt. Also im besten Fall komme ich mit einer Reset für den Decoder weg.. Zum Lautsprecher: segor hat sehr kleine (20mm D) Lautsprecherchen, allerdings mit 8 Ohm Impedanz. Kann leider nicht einschätzen, wie sich das auswirkt. Sind die Verzerrungen auch da, wenn man dann nicht mit voller Lautstärke arbeitet? Und zum Umschalten zwischen Kopfhörer und Lautsprecher: MAX4736 - 0.8 Ohm, Low-Voltage, Single-Supply, Dual SPDT Analog Switch Ich hoffe, daß das funktioniert. Aufgeregt, leif
hört sich ja bisher nicht schlecht an! und was wollt ihr als prozessor verwenden mega128 oder einen kleineren mit externen speicher? schon alleine das Fat brauch einiges an speicher! Desweiteren einen puffer für die mp3 daten. Mfg uli
achso habe vergessen, das ganze gibt es schon bei atmel, einen normalen prozessor glaube auf 8051 oder avr basis mit eingebauten mp3decoder und sd karten ansteuerung evt. schaut ihr euch mal den source code an, und den schaltplan. Mfg uli
hallo uli, ich hoffe, daß ich mit einem mega32 auskomme; yampp.com ist eine sehr gute orientierungshilfe (mega162), allerdings benutzen die ein eigenes dateisystem. soweit ich weiß, kommt man an den mp3-micro noch nicht so einfach ran, da gibt's auch schon einen thread. ausserdem möchte ich mit dem avr erfahrungen sammeln. -leif
hi also ich versuchs gerade mit einem atmega162. Eigentlich sollte das schon reichen. Aber entweder bin ich zu blöd, oder Bascom ist ein rieser mist...Nicht einmal der Sinus Test will auf dem Piggyback Board anlaufen. Wenn ich es richtig verstanden habe, muss man um den Test anzuwerfen; 1. Hardware Reset 2. (software reset) <--muss man den machen? 3. cs auf low 4. die acht bytes für den sinus test senden. 5. cs auf high (inaktiv) Dann sollte der Test laufen. Aber nichts tut sich. Das Piggyback funzt 100 pro (wurde schonmal getestet, allerdings nicht von mir.) Es kann fast nur noch am Comiler liegen...mir fällt im moment nichts mehr ein, was noch das Problem sein sollte. Ausser der Sinus Test wäre einige Knackser und dann fertig...das hab ich nämlich.:) MFG Nik
Eingentlich wollte ich noch etwas schreiben; Einen externes Ram nehme ich vorerst nicht. Ich betreibe das ganze dann mit einer SD Karte. Dort stelle ich eine Blockgrösse von 32 bytes ein und kann so die Daten eigentlich direkt in den Decoder rüberschieben(natürlich nur ohne Dateisystem). Leider hab ich es auch noch nicht fertiggebracht, die sd karte anzusprechen...:(
Tach, eine kleine Anmerkung zu meinem voreiligen Post: Der SPDT switch eignet sich nicht für den differential mode des VS10xx, weil er keine negativen spannungen schalten kann... aber ich suche weiter.. -leif
Maxim hat aber auch passendes für den differential mode: z.B. MAX4762. Jetzt fragt sich 'nur' ob der VS10xx mit einem 8 Ohm minispeaker klarkommt..Dazu mehr in ein bis zwei monaten :-) -leif
hi, ich hab ein bisschen nach einer Lösung um die Karte anzuschliessen gesucht. Normalerweise verwendet man einen Levelshifter, oder einen Spannungsteiler, um auf die 3.3volt herunter zu kommen. Meint ihr, sowas wie im Anhang könnte vernünftig funktionieren? Das ganze kommt von dieser Seite:http://homepage.ntlworld.com/seanellis/mmcserial.htm Und dort hats anscheinend funktioniert. MFG Nik
Mhmmm .... is das was ich dir auch shcon vorgeschlagen hab: den ATmega auch mir 3,3V betreiben, dann brauchst keinen Levelshifter. Also denk schon, dass das funktionieren sollte! mfG Alex
Also wenn du nicht runter kannst auf 3.3V versuchs doch mal mit nem 74LVX08 (20 ct bei Reichelt), damit hab ich's gemacht und funktioniert ohne Probleme auch mit hohen Übertragungsraten. Ich hatte es auch zuerst mit Spannungsteilern versucht, aber das sah grausam auf dem Oszi aus (nix eckig, alles schön rund ;) Gruß Peter
hi @alexander Sorry, ich hab gemeint, dass auf dieser Page der Controller ebenfalls mit 5 Volt läuft. Dann würden die Wiederstände wahrscheinlich nicht genügen...Mit 3Volt möchte ich ihn eben nicht betreiben, weil ich noch das Piggiback habe. Dieses hat schon einen Levelshifter, dort muss ich dann 5Volt reinlassen. @Peter die lvx Typen sind ja low voltage. Da ich die aber nur in smd finden konnte, hab ich ein bisschen weitergesucht. Darauf fand ich ein Datenblatt, worin stand, dass die HCT Typen zwischen min 4.5 und max 6 Volt laufen. Die HC Typen jedoch zwischen 2 und 6. Also sollten auch die gehen. Die geh ich mir dann heute mal hohlen...Mal hoffen, dass es geht:) MFG Nik
Bin mir nicht sicher ob die gehen, im Datenblatt steht was von Input-Voltage 0 to Vcc / Output-Voltage 0 to Vcc. Von dem her ist wohl nix mit 3.3V betreiben und mit 5V ansteuern. Bei den LVX ist dies explizit angegeben (Input Voltage Level Translation 5V to 3 V / The inputs tolerate voltages up to 7V allowing the interface of 5V systems to 3V systems.) Also lieber noch ein bischen suchen. Gruß Peter
Hallo, Der Tip mit dem 74LVX08 ist gut. Der 74LVX08 scheint genau der richtige zu sein. Man betreibt ihn mit den 3V, kann aber bis 7V an den Eingang krachen -- ist doch gut. Mein MMC-Projekt läuft aber auch mit Widerstandspannungsteilern und Ausgang der Karte direkt an Eingang-AVR, der mit 5 V betrieben wird.
hallo, @alle Gibts den 74lvx08 auch in einer anderen Package als smd? z.b. dil? Ich werde mir die hc typen trotzdem mal hohlen, ich berichte dann mal ob es auch geht. @jens-erwin Hast du für die Spannungsteiler etwa so aufgebaut?: vom uc -----o | .-. | | | | r1 '-' | ---------------------- zur karte | .-. | | | | r2 '-' | -----o-------- gnd [created by Andy´s ASCII-Circuit v1.24.140803 Beta www.tech-chat.de] [r1=1.8kOhm] [r2=3.3kOhm] Wenn du die selben Werte genommen hast, könnte ich das so auch mal versuchen. Wenn alles nicht hinhaut, werde ich einfach Transistoren nehmen..
Habe nun auf meiner Homepage die Anschaltung einer MMC/SD als Schaltplan, und den SourceCode mit WinAVR C zum Download bereitgestellt. www.ulrichradig.de Mfg Uli
@uli wow, danke für die Info, wenn dieser Source Code auch unter der "BEER-WARE-LICENSE" läuft, dann kann ich den ja in meinem Mp3 Player verwenden.(?) Ich hätte nur noch eine Frage dazu; Wie schnell kannst du von der Karte lesen? Ist ja schliesslich Soft-spi. So etwa 250 kbits/sek (also etwa 45 kbyte/sek) würden mir reichen, ich hab fast keine Mp3's die eine höhere Bitrate haben... MFG Nik
hi, ich lese die mp3 für meinen player von einer mp3. die lese geschwindigkeit ist kein problem. ich hatte eher das problem, das der puffer im vs1001 leer war bevor ich den nächsten sector in den speicher lese. das habe ich mit einem 74hc08 gelöst. jetzt schreibe ich byte 2 während ich byte 3 lese. auf http://www.phrozen.org/ sind schaltplan und source. ein selbst gebastelter fat layer ist auch dabei. fand mmc wegen spi am attraktivstren und habe es bis jetzt auch nicht bereut. john
der code von john sieht sehr gut aus!! kurz zu meinen code ich habe mal 2048 blöcke gelesen also 1MB dauerte bei 14Mhz ca. 20Sek. mfg uli
@uli ich habe mir deine source mal angeguckt. wenn die spi benutzt anstatt das alles zufuss zu machen denke ich das du auch um einiges höherkommen kannst. wenn man mal vom prtokoll overhead absieht kann man bei 8mhz mit spi rechnerisch ca 1MB erreichen. hasst du dir während des auslesens daten per rs232 ausgeben lassen ? das kostet nämlich auch zeit. john
Natürlich kann man den SPI-Bus benutzen und in READ_BYTE_MMC sowie WRITE_BYTE_MMC implementieren. reicht aber aus für eine transferrate von 250kbit/s zumindest rechnerisch 1MByte in 20s sind 8MBit in 20s sind ca. 400kbit/s. Mfg Uli
Hier noch den neuen Source Code der die MMC/SD Karte in dem Hardware SPI des Atmel AVR µC betreibt. Mfg Ulrich
hi, ich hätte noch eine Frage zur sd card und dessen /cs eingang. Im Code von Uli wird der /cs eingang schon ganz am anfang aktiviert(also low). Ich hab aber auch schon codes gesehen, wo das erst nach den etsten 74 clocks gemacht wird und anscheinend trotzdem funktioniert. Das würde also bedeuten, dass die Karte auch Daten verarbeitet, wenn sie gar nicht mit /cs aktiviert ist (???). Ich bin mir nun nicht ganz sicher wie ich die deaktivieren soll, denn am harware spi hängt zusätzlich noch ein Vs1001k Piggyback. MFG Nik
Also der CS/ ist low aktiv das bedeutet bei mir am anfang wird sie bei den ersten 74+ Clocks auch noch nicht auf low gelegt. Erst bei dem ersten commando. Mfg Ulrich
Hat jemand das Projekt von Uli (mmc incl. fat) mit einem atmega16 bzw. atmega32 zum Arbeiten bekommen?? Kann es sein, daß durch die großen Arrays zum Lesen der Blöcke größere Atmegas (evtl. sogar atmega128) notwendig machen?? Die mmc Geschichte habe ich hinbekommen, doch wenn ich die fat Funktionalität ausprobiere, spielen meine µC verrückt. mfg René
Habe begonnen, mich etwas schlau zu machen, um eine MM/SD- karte anzusteuern zu können und bin auf das hier begonnene Thema gestoßen. Die von Ulrich unter MMC.zip zur Verfügung gestellten Beschreibungen der MMC sind zum Verständnis sehr hilfreich. Aber was ich insbesondere noch suche, ist ein Datenblatt einer Karte, aus dem man die elektrischen Werte wie z.B. Stromverbrauch in Betrieb, in Ruhe; Eingangströme usw. entnehmen kann. Hat jemand einen Hinweis, wo man sich so ein Datenblatt runterladen kann? MfG Wolfgang
Hi Ich bin momentan auch dabei ein Projekt mit einer SD-Card bzw. MMC zu machen. Ich habe die Karte an einem MSP430F149 hängen und steuere sie über SPI an. Nun kann ich schon auf die Karte schreiben und aus der Karte lesen (ganze Sektoren). Nun habe ich da noch eine Frage zur Adressierung. Ich habe mal einige verschiedene Kartentypen ausprobiert und dabei festgestellt, daß es bei der Adressierung irgendwie einen Offset zu geben scheint. Die Karten sind alle im FAT16 formatiert und ich möchte den Boot-Block des Dateisystems lesen (als nächster Schritt ist eine FAT-Implementierung geplant). Der liegt ja im Sektor0 der Karte. Ich habe mich zur Vereinfachung des gesamten Systems auf Karten mit 512Byte Sektorgröße beschränkt (das sind ja im Prinzip fast alle Karten) und ich lese/schreibe auch immer nur ganze Sektoren. Damit mache ich bei mir die Adressierung immer nur auf den Sektoranfang. bei 2 verschiedenen 64MB-SD-Karten muß ich dann als Adresse 39*512+0*512 angeben (also spreche ich den Sektor0 eigentlich mit der Adresse von Sektor 39 an) bei einer 256MB-MMC muß ich 95*512+0*512 angeben bei einer 128MB-MMC und einer 16MB-MMC ist die Adresse (so wie ich es erwartet hätte) 0*512+0*512 bei allen höheren Adressen verhält es sich ganz genauso - wenn ich bei dem 2 64-MB-SD-Karten also den Sektor 200 lesen/schreiben will muß ich als Adresse 39*512+200*512 angeben. woran liegt das und kann ich irgendwie von der Karte diesen Offset erfahren? Oder müßte ich eine ganze Reihe von Karten probieren und diese dann als Kompatibel mit dem entsprechenden Offset einarbeiten? Gruß Mario Die Karten sind von: 64MB-SD: einmal extreMEmory (gibts bei reichelt) und einmal Noname 128 und 256MB-MMC sind auch von denen 16MB-MMC ist von ScanDisk
Was meinst du mit Sektor 0? Den ersten Sektor der Partition? Der haengt natuerlich von der Groesse der Karte oder der Formatierung ab. Musst du dir anhand der Daten im Bootblock ausrechenen. Oder meinst du wirklich sektor0 der Karte, also der MBR? Der liegt immer an derselben Stelle. Olaf
Das sieht in der Tat so aus, als würde hier MBR und der erste Sektor der Partition miteinander verwechselt.
Hi Danke für die ANtwort. Ich konnte das Problem mitlerweile lösen. Ich hatte mir die Karte bisher immer mit dem WinHex angeschaut und da nicht das Laufwerk als physikalischen Datenträger betrachtet sondern nur die einzelne Partition. Dann fängt das WinHex mit der Adressierung am Beginn der Partition an. Wenn ich es als physikalischen Datenträger betrachte habe ich als erstes erstmal die Partitionstabelle mit dem Eintrag, wo die Partition anfängt. Diesen Offset muß ich dann noch zu den Adressen in der FAT dazurechnen und schon habe ich die richtige Adresse auf der Karte. Gruß Mario
hy leute. ich wollte fragen ob einer von euch den yampp7 schon gebaut hat?? Falls ja wollte ich fragen ob irgendwer das nokiaa display schon gelötet hat und wie? wenn ja wären fotos oder wissenwertes über dieses thema sehr interssant. danke
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.