ich habe eine Schaltung, bei der an einem 1284P (u.A.) ein SD-Slot per SPI dranhängt, siehe Schaltplan (Anlage). In einer früheren Version hatte ich alles bis auf die SD-Karte auf 5V, mit einem 7805, die SD-Karte an einem MCP1702-3302. Spannungswandlung vom Atmega zur SD per simplen Widerstandsnetzwerk. Jetzt habe ich das Design geändert, alles auf 3,3V, Versorgung mit einem LM1117T-3,3. Funktioniert alles, bis auf einen kleinen Makel: wenn ich die SD-Karte bei laufendem Betrieb ziehe und wieder einstecke gibt es gelegentlich (ca. bei jedem 10. Versuch) Abstürze. Hat jemand Tips woran das liegen könnte? Vielen Dank im voraus! Micha
vermutlich am Spannungseinbruch von Vcc. Du hast jedem IC brav 100n spediert, aber der SD Karte nicht. Die zieht beim Stecken ordentlich Strom. Wenn du ein Oszi hast, dann schau dir vcc beim Einstecken der Karte mal an.
C12 -> 470µF C13 -> 100nF dannnoch einmal versuchen
http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten ELM Chan hat auf seiner Seite viel dazu http://elm-chan.org/docs/mmc/mmc_e.html
Ich würde jedem Pin der SD Karte mal 100pF gegen GND verpassen, manchmal hilft sowas. Ingo
Vielen Dank für die Tips! Ein ordentliches Speicheroszilloskop ist eine Anschaffung über die ich schon seit Monaten nachgrüble... damit könnte ich jetzt schön reinschauen was mit Vcc passiert. Hab zuerst mal zuerst provisorisch einen 100nF Kondi an Vcc und Gnd direkt am SD-Karten-Anschluss gelötet, hat leider garnichts gebracht. Dann einen 47uF Elko. Da habe ich den Eindruck dass es hilft, mit schwankendem Resultat - mal kann ich die Karte ca. 50 mal ein- und ausrasten ohne Absturz, mal passiert es nach 2 Malen wieder. Aber tendenziell seltener. Würde ja auch den Vorschlag von Monsieur probieren, bin aber unsicher ob das erfolgversprechend ist - das ist ja die typsche Beschaltung für den 7805. Beim LM1117 wird im Datenblatt dagegen je ein 10uF Tantalkondi davor und dahinter empfohlen. Hat es überhaupt eine Chance etwas zu verbessern wenn man davon so drastisch abweicht?
Micha: Schau mal auf die oben verlinkte seite von elm-chan. Da ist das ganz gut dargestellt. Ansonsten zeig mal dein Platinenlayout her. Die 100pF würde ich erst mal wieder vergessen. Das ist nur planloses Herumgesuche.
Layout hab ich als png angehängt, bzw. die Sprint Layout Datei, zusammen mit einem Viewer gibt es auch hier: http://www.k1000uc.de/downloads/K1000uC%20v11.zip Wär unheimlich nett wenn jemand von den Profis da mal reinschauen könnte. Auf der Seite von elm-chan hab ich inzwischen gelesen, dass in so einer SD-Karte ein Kondensator integriert ist, der beim Einschieben der Karte die Spannung kurzzeitig runterzieht. Hatte dann gleich eine "ganz tolle Idee" die leider garnichts gebracht hat: ich hab per Fuses im Atmega die Brownout Detection von "disabled" auf 2,7V umprogrammiert. Erhofftes Resultat: der Atmega resetet dann planmäßig anstatt irgendwo ins Nirvana zu springen. Hat leider nicht so geklappt wie ich mir das vorgestellt hatte - die Abstürze sind weiterhin wirr :(
>die Abstürze sind weiterhin wirr :(
Zieh die Karte nur im ausgeschalteten Zustand.
Hotplugging macht nur Ärger und kann zum kompletten
Datenverlust auf der Karte führen.
>Zieh die Karte nur im ausgeschalteten Zustand.
Stecken logischerweise auch;)
@holger: Ja, das Problem tritt nur beim Stecken auf, nie beim Ziehen ;) Dein Rat ist praxisorientiert absolut sinnvoll. Eigentlich gibt es keinen sinnvollen Grund, die SD im eingeschalteten Zustand des Geräts zu wechseln. Konkret handelt es sich hier um die Nachbildung eines historischen Tischrechners. Die SD-Karte ersetzt hundertew von Magnetkaten des Originals. Eigentlich sollte man die kaum jemals wechseln müssen. Ich war auf das Problem gestoßen als ich ein aufgebautes Test-Exemplar einem Härtetest mit allen möglichen Gemeinheiten unterzogen habe. Praktisch könnte man es vernachlässigen, aber irgendwie ist man doch bei der Ehre gepackt wenn ein Gerät das man entworfen hat sich unkontrolliert verhält - ich hab manchmal viel Zeit verbracht um solche Dinge zu klären. Auch wenn der praktische Nutzen gering bis Null ist - man fühlt sich hinterher besser wenn man eine Lösung findet ;)
Welche Vorkehrungen hast du eigentlich getroffen bevor du die Karte ziehst oder steckst? Hast du das SPI Modul abgeschaltet und MOSI, SCK und CS auf Input geschaltet? Bei deiner Spannungsteilerlösung wurde der AVR durch die Spannungsteiler davor geschützt die Karte evtl. parasitär durch diese Leitungen zu versorgen. Jetzt sind die direkt angeschlossen.
Die 100pF sind kein wirres Herumgesuche. Man bedenke, dass die Karte ein anderes Potential führe kann, wann bevor man sie einsteckt. Das führt folglich zu einem Ladungsausgleich bei Kontakt mit der Platine. Die 100pF wirken dem Störimpuls entgegen. Bei EC Karten hilft es jedenfalls... Ingo
>Die 100pF sind kein wirres Herumgesuche.
Doch. Wenn man die Karte mit z.B. 8MHz SPI taktet
dann kann das sogar dazu führen das die Signalflanken
so weit abgerundet werden das es Bitkipper gibt.
@holger: per Software hab ich bisher keine Vorkehrungen getroffen. Das ist eine vielversprechende Sache die ich morgen gleich ausprobieren werde - MISO, MOSI, SCK auf Input, ich nehme an interne Pullups aktivieren. Und SPI nur wirklich dann aktivieren wenn es gebraucht wird. Wobei mir derzeit noch nicht klar ist, ob man das SPI Modul softwareseitig aktivieren bzw. deaktivieren kann. Hab bisher gedacht das geht nur per Fuses einzustellen...
> Die 100pF sind kein wirres Herumgesuche. [...]
Doch. Bei den SD-Karten und -Schächten sind die Kontakte für GND und VCC
am längsten, haben also zuerst Kontakt. Damit ist ESD auf den anderen
Kontakten praktisch ausgeschlossen.
Der Strom (VCC) sollte aber schaltbar sein, denn eine SD Karte kennt
keinen Reset - bei Fehlern muss man daher die Versorgung abschalten. Ich
habe hier Karten, die bei einigen - wohl eher selten benutzten -
Funktionen einfach abstürzen.
Dann kann man auch eine Karte sicher einlegen und entfernen.
Micha schrieb: > Wär unheimlich nett wenn jemand von den Profis da mal reinschauen > könnte. Ist das Layout 4-lagig mit GND und VCC auf den Innenlagen, oder sollen diese dünnen Leiterbahnen eine ordentliche Masseverbindung schaffen? Da wäre dann ein fliegender Aufbau wahrscheinlich besser als die vorhandene Platine.
nein, es ist einfaches zweilagiges Design. Wollte gerade anführen dass ich auf der Unterseite der Platine eine Massefläche habe (die zeigt der Sprint Layout Betrachter aus irgendwelchen Gründen nicht). Allerdings hab ich beim genauen Hinschauen bemerkt dass die nicht mit GND vereinigt ist - immerhin hab ich so per Googeln gelernt wie man bei Sprint Layout ein Signal mit der Automassefläche vereinigt ;) Aber im Ernst: gibt es für die Breite von Leiterbahnen, speziell GND und Vcc, eine Faustregel wieviel man pro mA dranhängender Verbraucher vorsehen sollte?
Micha schrieb: > Aber im Ernst: gibt es für die Breite von Leiterbahnen, speziell GND und > Vcc, eine Faustregel wieviel man pro mA dranhängender Verbraucher > vorsehen sollte? Es geht hier nicht allein um den ohmschen Widerstand der Leitung, sondern auch um den induktiven. Bei langsamen Stromspitzen ist der ohmsche Anteil relevant, bei schnellen der induktive Widerstand. Der Gleichstrommittelwert (Stromaufnahme des Gerätes) ist hier wohl nicht das Problem. Bei digitalen Schaltungen bracht man eigentlich immer ein gutes GND-Netzwerk bzw. eng vernetzte GND-Fläche! Du kannst ja mal die schon vorhandene Kupferfläche an einigen Stellen mit GND verbinden. Gruß Dietrich
Was mir gerade noch einfällt: Man könnte auch die VCC der SD-Karte von dem Rest der Schaltung entkoppeln: L in Reihe, C parallel zur SD-Karte. Statt L ggf. auch ein kleiner Widerstand. Gruß Dietrich
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.