mikrocontroller.net

Forum: Compiler & IDEs micro SD Karte lesen liefert nur 0x00


Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Knilch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst schon etwas mehr über deine Hardware schreiben. In unseren 
Glaskugeln können wir deine Schaltung nicht erkennen.

Autor: Matthias Laubnitz (mcl024)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Reicht das?

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Schaltung läuft anscheinend außerhalb aller Spezifikationen:
- 3,3 V Betriebsspannung, aber 16 MHz Clock
- "Angstkondensatoren" eingespart, sowohl am ATMEGA als auch an der 
SD-Karte.

Ein Wunder, daß sich da überhaupt etwas rührt.

Bernhard

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernhard R. schrieb:
> - 3,3 V Betriebsspannung, aber 16 MHz Clock
geht bei mir problemlos hust

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ein Wunder, daß sich da überhaupt etwas rührt.

Und AREF hängt schon wieder an VCC. Wo kommt dieser
Unsinn eigentlich her?

Autor: Matthias Laubnitz (mcl024)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also bisher läuft alles bestens. Das S65 Display auch. Ein GPS Modul 
hängt auch daran. Läuft auch Super.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bis auf die microSD Karte.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem. Bis auf das mit dem 3,3V.

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.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht zieht sich die Karte selbst den Strom beim Lesen weg?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;)

Autor: izmael (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
izmael schrieb:
> Da bekommen die Leute schon Hilfe und lesen sie nicht mal richtig
> durch...

Moment mal. Ich probiere nur das Problem einzugrenzen.

Matthias Laubnitz schrieb:
> Da die Initialisierung funktioniert gehe ich mal von
> keinem Hardwareproblem aus.

Autor: Troll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias Laubnitz schrieb:
> 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.

Onkel ATmega32 möchte gerne auch ein paar von den Kondensatoren an 
seinen VCC und GND Pins haben. Das macht ihn sonst traurig :(

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe jetzt den Atmega mit 8MHz laufen und "Angstkondensatoren" an die 
SD-Karte sowie an den Atmega32 gelötet.

Leider immer noch ohne Erfolg.

Wie oben schon beschrieben läuft die Init sowie das Kommando zum Single 
Block lesen wunderbar.

Autor: Troll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du überhaupt genug Leistung zur Verfügung?

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So erstmal danke für alle Antworten.

Habe das Problem gelöst. Es war KEIN Hardwareproblem.

Habe einen sehr dummen Softwarefehler beim übertragen der Daten via UART 
zum PC gemacht.

Autor: MicroSD (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.