Forum: Analoge Elektronik und Schaltungstechnik Was ist am besten für MMC/SD in Schaltung ohne Spannung


von Erik (Gast)


Lesenswert?

Hallo liebe Leute,

ich habe eine kurze Frage und bin mir sicher, dass hier jemand eine 
Antwort weiß.
Leider habe ich über die Suche nichts passendes gefunden.

Ich habe eine Schaltung in der ein ATMEGA zwei(!) SD-Karten über SPI 
ansteuert. Diese werden aber nicht immer gebraucht. Wegen Akkubetrieb 
ist es mit dem Controller möglich beide Karten von VCC zu trennen (GND 
bleibt bestehen).
Jetzt meine Frage: Was tun mit der CS-Leitung?
Ist diese HIGH bedeutet das, dass die Karte nicht gewählt ist. Ist es 
aber sinnvoll den CS auf "1" zu lassen, wenn die Karte von VCC getrennt 
ist, oder könnte dies die Karte zerstören?
Beide CS-Leitungen einfach auf "0" zu setzen ist aber vielleicht auch 
kritisch da ja dann eigentlich beide ausgewählt sind. Ok, sie sind von 
VCC getrennt, weshalb das eigentlich nichts machen sollte. Nur muss ich 
dann ja aufpassen beide CS (bzw. einer reicht) wieder auf "1" zu setzen 
BEVOR VCC wieder durchgeschaltet wird, da es ja sonst kracht...
Man könnte sogar die Leitungen des Controllers während die Karte von VCC 
getrennt ist auf INPUT und somit hochohmig schalten...

Was wäre also am Sinnvollsten?

Danke für eure Antworten und viele Grüße,
Erik

von ??? (Gast)


Lesenswert?

CS auf low bevor vcc weggenommen wird und zuerst wieder vcc und dann cs 
high, alles ndere wird dir die SD-Kartn zerstören. Und wenn kein 
Taktsignal kommt sind die karten ohnehin taub...

von holger (Gast)


Lesenswert?

Wenn VCC der Karte weg ist dürfen keine Highpegel
an ihren Pins liegen. Also CS, SCK, SI und SO.
Die müssen per Multiplexer weggeschaltet werden.
Macht man das nicht, stört das den gesamten SPI Bus
weil mögliche interne Schutzdioden Leitungen mit
High Pegel einfach auf Low ziehen.

von Erik (Gast)


Lesenswert?

Multiplexer? Den brauche ich glaube ich nicht...???
Ich habe am SPI nur die beiden Karten und VCC kann auch nur bei beiden 
gleichzeitig weggenommen werden.
Es sollte doch dann reichen CS vor Spannungswegnahme per Controller auf 
"0" zu legen.
SCK, SI sollten ja "0" sein, da der SPI nichts mehr überträgt. S0 sollte 
"0" sein, da die Karten aus sind, bzw. keinen CLK mehr bekommen.

Oder stehe ich da aufm Schlauch?

von holger (Gast)


Lesenswert?

>Oder stehe ich da aufm Schlauch?

Nö, du hast nur vergessen zu sagen das beide Karten
weggeschaltet werden. Ok, zieh erst CS auf low,
schalte SCK und SI auf Input. Dann Vcc weg.

von Erik (Gast)


Lesenswert?

Ok, vielen Dank.
Aber noch ne kleine Frage:
> schalte SCK und SI auf Input.
Sind die für MMC/SD-SPI nicht automatisch "0", wenn keine Übertragung 
stattfindet? Warum dann noch auf Eingang schalten?

Danke...

von holger (Gast)


Lesenswert?

>Sind die für MMC/SD-SPI nicht automatisch "0", wenn keine Übertragung
>stattfindet? Warum dann noch auf Eingang schalten?

Sicher ist sicher ;)

von holger (Gast)


Lesenswert?

Nachtrag: und wenn ich nochmal drüber nachdenke
solltest du CS vieleicht doch nicht auf low ziehen
vorm ausschalten. Einfach auch als Input konfigurieren.
Beim Einschalten hast du dann wieder ungefähr den Zustand
wie nach einem Reset des uC.

Gruss
 Holger

von Erik (Gast)


Lesenswert?

Hmmm... Danke holger.
Ich denke, es sollte in beiden Fällen nichts passieren.
Welchen Zustdand hat der SPI-Bus denn nun eigentlich, wenn keine 
Übetragung stattfindet?

von holger (Gast)


Lesenswert?

>Welchen Zustdand hat der SPI-Bus denn nun eigentlich, wenn keine
>Übetragung stattfindet?

Gute Frage. Es gibt ja auch SPI Modi mit SCK IDLE High.
Und wenn ich da noch mal drüber nachdenke ist es wohl
eine gute Idee das SPI Modul komplett abzuschalten vor
VCC weg. Also alle Highpegel weg von der Karte bevor
VCC runtergeht. Nicht drüber nachdenken ;) Einfach machen.

Wie gesagt: Sicher ist sicher.


von Erik (Gast)


Lesenswert?

Mal noch ne dumme Frage:
Wenn ich jetzt alles auf Eingang schalte und es gäbe eine 
Datenübertragung auf dem SPI-Bus, d.h. es erscheint ne "1". Dann wäre 
das ja mit einer Aktivierung der internen Pullups gleichzusetzen. Gehe 
ich richtig, wenn ich behaupte, dass dann ja aber ein Strom durch den 
Pullup über die Karte nach GND fließen würde (=Zerstörung der Karten?)?
Dies könnte mit CS als INPUT doch auch passieren, sollten deshalb die CS 
nicht doch vorher noch zusätzlich auf "0" gesetzt werden, oder?

von holger (Gast)


Lesenswert?

Nein, die Pullups haben mehrere 100 Kiloohm. Da geht nix kaputt.
Ausserdem hast du den SPI Bus doch gerade abgeschaltet !

von Stefan (Gast)


Lesenswert?

>Nein, die Pullups haben mehrere 100 Kiloohm. Da geht nix kaputt.
Laut Datenblatt i. d. R. 47 kOhm, aber trotzdem unkritisch

>Wenn ich jetzt alles auf Eingang schalte und es gäbe eine
>Datenübertragung auf dem SPI-Bus

Naja, das liegt in Deiner Hand, du solltest natürlich schon wissen was 
Dein Programm macht; wenn ich die Hand im Toaster habe und dann 
einschalte...

Stefan

von Erik (Gast)


Lesenswert?

Danke Stefan... ;-)
Ich weiß schon was das Programm macht. Die Komplexität steigt aber 
stetig.
Ich mache mir nur eben Gedanken darüber was passieren würde, wenn ich 
die Karten aus habe und dennoch irgendwo im Programm versehentlich 
versuche eine Karte per CS=1 zu adressieren.
Laut eurer Aussage passiert nix, was ich beruhigend finde.
Danke, jetzt kann ich besser schlafen ;-)

von Obelix (Gast)


Lesenswert?

Nur mal ein paar Denkanstöße

1.Ist es wirklich notwendig Vcc auszuschalten? Wenn CS=high, dann 
brauchen die Karten doch nur ein paar µA.

2.Die Eingänge der Karte durch einen 74LVX puffern. Soweit ich weiß, 
vertragen die 74LVX auch bei Vcc=0V eine Eingangsspannung von bis zu 5V.

3.Die Eingänge der Karte mit einem Open Drain steuern und entsprechend 
Pullup-Widerstände auf Vcc der Karte legen. Wenn Vcc der Karte weg ist 
liegt damit an den Eingänger der Karte auch keine Spannung an.

von Erik (Gast)


Lesenswert?

@Obelix:
Vielen Dank für deine Anregungen.
> 1.Ist es wirklich notwendig Vcc auszuschalten? Wenn CS=high, dann
> brauchen die Karten doch nur ein paar µA.
Ich hatte den Fall, dass eine angeschlossene Karte obwohl CS="1" war im 
mA-Bereich Strom gezogen hat, eine andere verhielt sich korrekt. Es 
scheint also durchaus von den Karten abzuhängen. Mit dem Trennen von VCC 
bin ich auf der sicheren Seite.
> 2.Die Eingänge der Karte durch einen 74LVX puffern. Soweit ich weiß,
> vertragen die 74LVX auch bei Vcc=0V eine Eingangsspannung von bis zu 5V.
Leider ist die Platine soweit schon fertig. Außerdem kommt es auf den 
minimalen Platz an. Ich muss versuchen jedes zusätzliche Bauteil zu 
vermeiden.
Was ist denn an den zuvor beschriebenen Vorschlägen falsch? Da ich ja 
sowieso immer beide Karten zusammen ein- und ausschalte und sonst nichts 
am Bus hängt sehe ich da kein Problem.

Mir kommt da aber noch eine ganz andere Idee...
Den Controller in Tiefschlaf schicken. Dann sind doch eh alle PINs des 
Busses soweit abgeschaltet, oder? Wecken kann man ihn z.B. per Taster, 
also Interrupt. Wäre das was?

von Obelix (Gast)


Lesenswert?

Ich habe die anderen Beiträge nur schnell überflogen. Ich kann dir also 
nicht sagen, ob da was falsch ist. Ich wollte nur ein paar Alternativer 
aufführen. :-)

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.