PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SD-Karte an ATMEGA Schutz des MISO-SD- Pins



Joboter
03.11.2009, 21:06
Hallo!

Im Prinzip gibt es schon unzählige Beiträge zur Anbindung von SD-Karten an einen Atmega. Es funktioniert auch alles bei mir ganz gut.

Hier geht es um eine Frage, auf die ich im Internet keine befriedigende Antwort finden konnte:

Der Daten-Ausgangspin der SD-Karte (DO) wird bei den meisten Lösungen direkt an MISO angeschlossen. Wenn nun ein Programmer UND die SD-Karte angeschlossen wird (zB man vergisst die Karte herauszuziehen), könnte die Karte beschädigt werden.

Ich habe schon folgende Lösungen ausprobiert, die nicht funktioniert haben (Initialisierung war dann nicht erfolgreich):
- Diode zwischen DO der SD-Karte und ATMega, Strom der vom AVR zur SD fließt sollte gesperrt werden)
-3,3V Zenerdiode zwischen DO der SD-Karte und GND (Programmierung ging nur, wenn SD nicht eingesteckt und SD nur wenn Programmierer nicht eingesteckt, aber auch nicht ganz zuverlässig)
- Transistor der die Verbindung zwischen AVR und SD einschaltet (hier auch zusätzlicher Pin notwendig)

Gibt es da irgendeine elegante Lösung (zB bidirektionaler Pegelwandler in DIP Bauform). 2 Pegelwandler möchte ich möglichst vermeiden.

Wie tolerant sind die SD-Karten, halten die sowas auch öfters ohne Schutz aus?

Vielen Dank im vorraus,
Joboter

Jaecko
03.11.2009, 23:07
Es gibt bei Display3000 einen SD-Slot mit einer Enable-Leitung. Liegt diese nicht auf High-Level sind alle Pins des Slots Tri-State. D.h. sobald der Controller über ISP programmiert wird, fehlt das Enable-Signal, die Pins werden für den Controller "unsichtbar" und die Karte kriegt vom restlichen Verkehr da draussen nix mit.
Wenn ich mich nicht täusche, wird bei den parallelen ISP-Adaptern ein 74HC244 verwendet, dessen Pins man ebenfalls hochohmig schalten kann. Sollte das Problem dann lösen.

wkrug
04.11.2009, 09:44
Wie wärs, wenn Du einfach einen Jumper einfügst, der den Pin entweder zur SD Karte, oder zum Programmer schaltet.
Ist er falsch gesteckt funktioniert etwas nicht, der Port der SD Karte kann aber nie mit dem ISP verbunden sein.

Joboter
04.11.2009, 10:34
@Jaecko:

Sind denn die Pins des µC beim Programmieren zuverlässig auf Low-Pegel?
Hatte an einen 74HC4016 (vierfacher Schalter) gedacht, der dann einfach alle Leitungen abklemmt. Das wäre dann ja ein Enablesignal für die SD-Karte.
Wenn aber die Pins des Controllers floaten oder mal zufällig High sind, dann ist die Schaltung auch vergebens.

Der Vorschlag mit dem Jumper ist hier nicht möglich, sonst hätte ich einen Multiplexer (74HC....) genommen.

Viele Grüße,
Joboter

Jaecko
05.11.2009, 11:38
Die Pins des 244 sollten eigentlich Tri-State sein, nicht Low, da ja der Programmer sonst stören würde, wenn er an der Schaltung steckt und nicht programmiert.
Über Output Enable (Low-Aktiv) werden die Daten vom Eingang an den Ausgang weitergegeben. Wird OE abgeschaltet, werden diese Pins für die Elektronik "Unsichtbar" und der Programmer hat keinen Zugriff auf die Karte.
Entweder dieses OE per Controller schalten (Software) oder direkt über die Reset-Leitung des Programmers.