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.
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.
@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