micro SD Karte lesen liefert nur 0x00

OP #2078119
Lesenswert?

Hallo Zusammen,

ich nutze folgenden Code für meine micro SD Karte:

AVR FAT32

Die Initialisierung funktioniert und auch der card_type wird mit 1 
bestimmt.

Beim lesen des Block 0 liefert mir die funktion mmc_read_sector() 
allerdings für alle 512 Byte 0x00.

Wenn ich die Karte mit dd unter Linux anschaue kommt ca. ab Byte 474 
einige andere Daten als 0x00.

Woran könnte das liegen?
#2078324
Lesenswert?

Bernhard R. schrieb:
> - 3,3 V Betriebsspannung, aber 16 MHz Clock
> - "Angstkondensatoren" eingespart, sowohl am ATMEGA als auch an der
> SD-Karte.

Das würde ich dir schon empfehlen. Außer du willst vielleicht eines 
Tages dich Stundenlang fragen warum die Schaltung sich ganz undefiniert 
verhält.

Kostet nichts und vermeidet unnötige Probleme! Wo ist das Problem sie 
einfach dranzuhängen?
Gast #2078365
Lesenswert?

>Aber das eigentliche Problem besteht eher beim lesen einens Blocks von
>der micoSD Karte. Da die Initialisierung funktioniert gehe ich mal von
>keinem Hardwareproblem aus.

Die Initialisierung läuft normalerweise mit einem
eher geringen Takt so um 400kHz. Danach wird auf
Vollgas umgeschaltet. Dann zieht die Karte mehr Strom.
Da keine Angstkondensatoren verbaut sind geht der
Schaltung dann vermutlich die "Luft" aus.

>Vielleicht zieht sich die Karte selbst den Strom beim Lesen weg?

Passt doch irgenwie;)
Gast #2078389
Lesenswert?

Matthias Laubnitz schrieb:
> Da die Initialisierung funktioniert gehe ich mal von
> keinem Hardwareproblem aus.
Siehe Samuels Beitrag:
Samuel K. schrieb:
> Bernhard R. schrieb:
>> - 3,3 V Betriebsspannung, aber 16 MHz Clock
>> - "Angstkondensatoren" eingespart, sowohl am ATMEGA als auch an der
>> SD-Karte.
> Das würde ich dir schon empfehlen. Außer du willst vielleicht eines
> Tages dich Stundenlang fragen warum die Schaltung sich ganz undefiniert
> verhält.

Da bekommen die Leute schon Hilfe und lesen sie nicht mal richtig 
durch...
Ansonsten steht das meiste auch unter SD-Card
OP #2078393
Lesenswert?

Ja richtig die Intialisierung läuft mit einer geringeren Taktfrequenz.

Um den Sector zu lesen sende ich zuerst cmd 17 an die Karte mit hoher 
Taktfrequenz und dann warte ich noch in einer while schleife auf das 
Start-Byte 0xFE, auch mit maximaler Taktfrequenz. Erst dann geht es los 
mit dem lesen der 512 Byte.

Sollte das bei einem Hardwareproblem nicht auch schon scheitern?

Probemäßig habe ich das lesen des Sektors auch schon mit der 
Initfrequenz laufen lassen. Leider auch ohne Erfolg.
Des weiteren habe ich einen 100nF Kondensator parallel zu den 3,3V und 
GND so nah wie möglich an Karte gehangen. Auch leider ohne Erfolg.
#2078755
Lesenswert?

Luk4s K. schrieb:
> Bernhard R. schrieb:
>> - 3,3 V Betriebsspannung, aber 16 MHz Clock
> geht bei mir problemlos hust

Wozu schreibt der Hersteller Datenblätter?

Der ATMega32 ist lt. dem mir vorliegenden Datenblatt mit 4,5 ... 5,5 V 
und 16 MHz maximaler Taktfreuqenz spezifiziert.

Es gibt auch eine Ausführung für niedrigere Betriebsspannung, die ist 
aber über ihren gesamten Betriebsspannungsbereich nur mit 8 MHz 
spezifiziert.

Alles, was außerhalb der Spezifikationen liegt, bewegt sich im Bereich 
"geht per Zufall, nicht per Design."

Ähnlich verhält es sich mit den "Angstkondensatoren". Hier gilt 
anscheinend für manche Frickler: "No Risk, no Fun!"

Bernhard
#2079250
Lesenswert?

Ich bin nicht ganz sicher, aber die Karte müsste beim lesen/schreiben 
mehr Strom ziehen als normal. Wenn dann die Spannung nur kurz einbricht 
ist das Ergebnis nicht definierbar.

Ergo: Abblockkondensatoren
Ich hab mir vor kurzem bei Eb*y 100 smd kondensatoren (805) für 1€ 
gekauft.
Gast #2084925
Lesenswert?

Matthias Laubnitz schrieb:
> Es war KEIN Hardwareproblem.

Aber du hast wenigstens bei der Fehlersuche ein paar potentielle 
Hardwareprobleme beseitigt... vorrausgesetzt du schmeisst die 
Kondensatoren nicht wieder raus...

Noch eine potentielle Fehlerquelle: Laut Spec müssen Micro-SD Karten das 
Auslesen per SPI garnicht unterstützen. War wohl zum "Platz sparen" 
gedacht.
Zum Glück hat sich scheinbar noch kein Controller-Chip-Hersteller die 
Mühe gemacht, den SPI-Teil aus seinem Design wieder rauszunehmen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren