Forum: Mikrocontroller und Digitale Elektronik ATMega8 und SD-Slot funktioniert nur nach PowerOFF


von Andreas (Gast)


Lesenswert?

Hallo,

ich habe mir hier aus diversen Threads eine Schaltung aufbauen können 
(gibt es ja zuhauf) anhand welcher ich mittels eines ATMega8 (5V) eine 
SD/MMC-Karte direkt ansprechen kann. Der Source ist von Ulrich Radig. 
Funktioniert auch alles bestens.

Nachdem mir ein vernünftiger SD-Slot fehlte habe ich mir von eBay so ein 
Teil besorgt. Dieses Teil hat auch eine kleine Schaltung integriert 
damit zb. eine 5V Spannungsversorgung direkt verwendet werden kann. Die 
Signalleitungen müssen weiterhin mit Spannungsteiler auf 3,3V gebracht 
werden (ok, es gibt bessere wege) Laut Schaltplan des SD-Slots haben die 
Signalleitungen einen 10K PullUp auf 3,3V

Auch diese Schaltung funktioniert, jedoch nicht wenn ich den ATMega 
mittels ISP frisch geflashed habe sondern erst nachdem ich das 
Olimex-Board vom Strom genommen habe und dann wieder eingeschalten habe.

Ich vermute das hier die ISP-Schnittstelle in Verbindung mit dem SD-Slot 
Probleme macht. Mit der "ersten" Version, wo quasi die AVR-PINS über die 
Spannungsteiler direkt auf der SD-Karte verlötet waren, gab es überhaupt 
keine Probleme.

Kann mir hier vielleicht jemand einen Wink mit dem Zaunpfahl geben? 
Liegt es möglicherweise an den 10K PullUp's des SD-Slots/SD-Schaltung? 
Bin mir nicht sicher ob PullUp's bei SPI notwendig/hilfreich sind. Die 
PullUp's sind eigentlich der einzige Unterschied zu der ersten Version.

Danke!
mfg
Andreas

SD-Slot: 
http://www.ebay.at/itm/SD-Memory-Card-Module-Slot-SPI-Reader-For-Arduino-ARM-MCU-3-3V-5V-CP09001-B41-/271327231335?pt=Wissenschaftliche_Ger%C3%A4te&hash=item3f2c5cfd67

von Falk B. (falk)


Lesenswert?

@ Andreas (Gast)

>Kann mir hier vielleicht jemand einen Wink mit dem Zaunpfahl geben?
>Liegt es möglicherweise an den 10K PullUp's des SD-Slots/SD-Schaltung?

Kann sein. Man benötig den ZWINGEND an SDO, alsio dem Datenausgang der 
SD-karte, weil der bis zu Initialisierung ein Open Drain Treiber ist.

>Bin mir nicht sicher ob PullUp's bei SPI notwendig/hilfreich sind.

Braucht man direkt nicht, allerdings ist einer am CS der SD-Karte 
sinnvoll, damit dieser beim ISP-Vorgang inaktiv bleibt.

>PullUp's sind eigentlich der einzige Unterschied zu der ersten Version.

Mach's richtg und vergiss dem Spannungsteilermurks und investier 1 Euro 
in gescheite Pegelwandler. Oder lass deinen uC auf 3,3V laufen.

von netseal (Gast)


Lesenswert?

Hatte auch einmal so ein Problem. Zur Reinitialisierung musste ich alle 
Pins der SD-Karte auf 0v ziehen, da sie sich sonst noch irgendwie 
versorgte.

von Andreas (Gast)


Lesenswert?

Die Pegelwandler werde ich demnächst noch einbauen (Zuerst muss ich sie 
noch kaufen sonst hätte ich sie schon verwendet)

Alle Pins der SD-Karte auf 0v ziehen würde auch funktionieren.

Danke für eure Antworten, die haben mir jetzt neue Optionen aufgezeigt.

lg
Andreas

von Sebastian W. (wangnick)


Lesenswert?

Hello Andreas,

Andreas schrieb:
> Ich vermute das hier die ISP-Schnittstelle in Verbindung mit dem SD-Slot
> Probleme macht.

Ich hatte mit meiner Platine 
(http://s.wangnick.de/doku.php?id=iot-basisstation) ein ähnlichen 
Problem.

Laut SD-Kartenspezifikation 
(http://www.sdcard.org/downloads/pls/simplified_specs/part1_410.pdf) 
startet jede SD-Karte im SD-Busmodus. Im SD-Busmodus haben die Pins der 
SD-Karte eine andere Bedeutung als im SPI-Busmodus, und deshalb wird 
eine eingesteckte SD-Karte im SD-Busmodus immer die 
SPI-Neuprogrammierung über ISP stören. Da hilft auch nicht der CS-Pin, 
der ebenfalls im SD-Busmodus eine andere Bedeutung hat!

Die SD-Karte wird durch eine bestimmte Kommandosequenz in den SPI-Modus 
versetzt. Das übernimmt bei dir die Funktion mmc_init() von Ulrich.

Sobald die SD-Karte im SPI-Busmodus ist, wird sie bei CS HIGH (durch 
Pullup) nicht mehr den SPI-Bus stören. Sie verbleibt auch bis zum 
nächsten Powerzyklus garantiert im SPI-Busmodus.

Siehe auch Beitrag "Atmega Eeprom/Flash andauernde Schreibfehler".

HTH.

LG, Sebastian

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.