Forum: Mikrocontroller und Digitale Elektronik Atmega32 SD Kartenzugriff GetDriveInformation() liefert 0


von Lukas K. (kremsy)


Lesenswert?

Hallo Leute,

Arbeite derzeit an einem größeren Projekt und nun möchte ich daten von 
einer SD Karte liefern. Bei der SD Karte habe ich die Pegelkonverter 
LVX04 bzw HCT125. Die 3,3V habe ich mittels LM317 erzeugt und werden 
konstant gehalten.

Verwendet wird eine 32Mbyte MMC Karte mit der bezeichnung 0631150 4.0
Die SD Karte habe ich mit Windows XP auf FAT formatiert.

SD Libaries habe ich die von Holger Klabunte.

Leider liefert mir GetDriveInformation() nen Error.

LCD Display ist nicht vorhanden, nur jede Menge LEDs ;)

Gibt es irgenteine möglichkeit Programmtechnisch zu testen an was es 
liegt oder zumindest eine Verbindung sehr langsam herzustellen.

Programmausschnitt:
1
  /* SPI Init*/
2
  #ifdef MMC_CARD_SPI 
3
   MMC_IO_Init();     //Initialisize SD CARD
4
  #endif
5
6
  if(GetDriveInformation()!=F_OK) // Check if SD Works
7
    {
8
    imageL[0][0][0]=0;
9
    imageL[1][0][0]=0;
10
    }
imageL[][][] schaltet mir eine Led aus (zur überprüfung) und da es 
!=F_OK ist ist die Led natürlich die ganze zeit aus.

Vielleicht habt ihr ja eine Idee ;)

mfg kremsy

von holger (Gast)


Lesenswert?

>SD Libaries habe ich die von Holger Klabunte.
>
>Leider liefert mir GetDriveInformation() nen Error.
>
>Vielleicht habt ihr ja eine Idee ;)

Schalte die Debugausgaben über UART in der dosdefs.h ein

#define MMC_DEBUG_IDENTIFY //activate debug output for MMCIdentify() via 
printf()

Nimm einfach das Testprogramm aus dem Verzeichnis

DOSFrWRTest3

Das lässt du dann laufen.

Mit den LEDs kommst du da nicht weit;)

von Lukas K. (kremsy)


Lesenswert?

Vielen Dank,

werde ich dann probieren, nur bin ich noch am überlegen wie ich das ohne 
Display bewerkstellige, hab aktuell 64 leds zu verfügung, vielleicht 
fällt mir noch was ein ;)

von Lukas K. (kremsy)


Lesenswert?

Gerade etwas probiert:

in der funktion:
     return 2; // FAT-Typ nicht erkannt
     return 3; // CF gives no answer


  switch(GetDriveInformation())
  {
    case 2:
      imageL[0][1][0]=0;
      break;
    case 3:
      imageL[0][2][0]=0;
      break;
  }


und der case 3 trifft zu

von holger (Gast)


Lesenswert?

>    return 3; // CF gives no answer

Das bedeutet das die Karte nicht erkannt wurde.

Jetzt musst du in MMCIdentify() weitersuchen.

von Lukas K. (kremsy)


Lesenswert?

danke werd das gleich ma machen

von holger (Gast)


Lesenswert?

>Was macht eignetlich die funktion SPI_WAIT() genau?

Die wartet bis das SPI Modul das aktuelle Byte gesendet hat.

von Lukas K. (kremsy)


Lesenswert?

if(by != IN_IDLE_STATE) { MMC_CS_ON(); return 4; } // no response from 
card

tritt auf

von holger (Gast)


Lesenswert?

>if(by != IN_IDLE_STATE) { MMC_CS_ON(); return 4; } // no response from
>card

Tja, dann wird deine Karte überhaupt nicht erkannt.
Ich würd mal die Hardware checken. Hoffentlich
hast du ein Osci oder einen LogicAnalyzer zu Hause.

von Lukas K. (kremsy)


Lesenswert?

Hab leider noch kein Oszi zuhause, habe aber in einer Woche wieder 
zugang zu einem Oszi, dann muss ich wohl leider solange warten :(.

von holger (Gast)


Lesenswert?

>Hab leider noch kein Oszi zuhause, habe aber in einer Woche wieder
>zugang zu einem Oszi, dann muss ich wohl leider solange warten :(.

Manchmal reicht ja schon ein geübter Blick auf die Platine.
Schick doch mal Fotos.

von Lukas K. (kremsy)


Lesenswert?

ich glaub ich hab den fehler schon gefunden, ist wohl ne lötstelle

von Lukas K. (kremsy)


Lesenswert?

Trotzdem noch der selbe fehler, hab von den ausgängen des HCT125 udn 
74LVX04 ma durchgang gemessen zur karte, das passt, werds jetz auf nem 
steckbrett auchnoch spannung anlegen und messen

von Lukas K. (kremsy)


Lesenswert?

Spannungswerte sollten passen von MOSI,CS, und SCK zw 3,35 und 3,37V

Gering ist der vom MISO mit 4,4V, sollte aber kein problem für den 
controller sein.

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.