Forum: Mikrocontroller und Digitale Elektronik Atmega 1284p, Gelegentlicher Absturz bei Einstecken SD-Karte


von Micha (Gast)


Angehängte Dateien:

Lesenswert?

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

von ich (Gast)


Lesenswert?

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.

von Monsieur (Gast)


Lesenswert?

C12 -> 470µF
C13 -> 100nF
dannnoch einmal versuchen

von Atntwort (Gast)


Lesenswert?


von Ingo (Gast)


Lesenswert?

Ich würde jedem Pin der SD Karte mal 100pF gegen GND verpassen, manchmal 
hilft sowas.


Ingo

von Micha (Gast)


Lesenswert?

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?

von Simon K. (simon) Benutzerseite


Lesenswert?

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.

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

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 :(

von holger (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>Zieh die Karte nur im ausgeschalteten Zustand.


Stecken logischerweise auch;)

von Micha (Gast)


Lesenswert?

@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 ;)

von holger (Gast)


Lesenswert?

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.

von Ingo (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

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

von Micha (Gast)


Lesenswert?

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

von Jim M. (turboj)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

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.

von Micha (Gast)


Lesenswert?

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?

von Dietrich L. (dietrichl)


Lesenswert?

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

von Dietrich L. (dietrichl)


Lesenswert?

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
Noch kein Account? Hier anmelden.