www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kann keine datei auf sd card estellen


Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Habe die libs von Roland Regel und kann die sd card im fat 16 lesen aber 
nicht schreiben

struct partition_struct* partition = partition_open(sd_raw_read,
                                                        sd_raw_read_interval,
                                                        sd_raw_write,
                                                        sd_raw_write_interval,
                                                        0
                                                       );

    if(!partition)
    {
        /* If the partition did not open, assume the storage device
         * is a "superfloppy", i.e. has no MBR.
         */
        partition = partition_open(sd_raw_read,
                                   sd_raw_read_interval,
                                   sd_raw_write,
                                   sd_raw_write_interval,
                                   -1
                                  );
        if(!partition)
        {

            uart_puts_p(PSTR("opening partition failed\n"));
return(0);

        }
    else
    {
       uart_puts_p(PSTR("opening partition OK\n"));
}
}
  struct fat16_fs_struct* fs = fat16_open(partition);
    if(!fs)
    {

        uart_puts_p(PSTR("opening filesystem failed\n"));

    }
  else
  {
  uart_puts_p(PSTR("opening filesystem OK\n"));


  }

    /* open root directory */
    struct fat16_dir_entry_struct directory;
    fat16_get_dir_entry_of_path(fs, "/", &directory);

    struct fat16_dir_struct* dd = fat16_open_dir(fs, &directory);
    if(!dd)
    {

        uart_puts_p(PSTR("opening root directory failed\n"));


    }
  else
  {
        uart_puts_p(PSTR("opening root directory OK\n"));

  }


  struct fat16_dir_entry_struct dir_entry;
            while(fat16_read_dir(dd, &dir_entry))
            {
                uint8_t spaces = sizeof(dir_entry.long_name) - 
strlen(dir_entry.long_name) + 4;

                uart_puts(dir_entry.long_name);
                uart_putc(dir_entry.attributes & FAT16_ATTRIB_DIR ? '/' 
: ' ');
                while(spaces--)
                    uart_putc(' ');
                uart_putdw_dec(dir_entry.file_size);
                uart_putc('\n');
            }

  struct fat16_dir_entry_struct file_entry;
            if(!fat16_create_file(dd,"test.txt", &file_entry))
            {
                uart_puts_p(PSTR("error creating file: "));
                 uart_putc('\n');
            }
      else
      {
               uart_puts_p(PSTR("ok creating file: "));
                 uart_putc('\n');


      }      }

ales ergebnis kommt ok creating file.

aber auf der sd ist nichts drauf.

Autor: Latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
blöde frage, aber muss man ja auch ausgrenzen:

Ist die Karte schreibgeschützt? Also ich meine hardware-mäßig?

Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

nein karte ist nichtt schreibgeschützt.
Ist die definition des dateinamens so wie oben koreckt???

Liegt es daran???

Den ich bekomme keinen Fehler zurückgeliefert.
Kann er den dateinamen nicht auswerten und legt einen leeren dateinamen 
an denn sieht man ja nicht.


Danke

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal im Headerfile nach. Da gibt es m.W. einen Schalter für 
read-only.

Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo

also wenn du das meinst

#define FAT16_WRITE_SUPPORT 1

ist auf eins.

wat nun??

gibt es noch andere gute fat16 implementationen???


danke

Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde das hier ist ganz brauchbar:
http://elm-chan.org/fsw/ff/00index_e.html

Kann sogar FAT32. Läuft auf meinem ARM7 ohne Probleme.
Zu anderen uCs kann ich nichts sagen.

Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mir ist aufgefallen wenn ich die obige funktion 2 mal aufrufe schreibt 
er die test.txt warum????


wenn ich die test.txt ins / verzeichniss mit dem pc schreibe und nur 
einmal die funktion aufrufe dann kommt kein fehler das die datei schon 
vorhanden ist erst wenn ich die obige funktion wieder zweimal aufrufe
ist schon komisch..

Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe noch herausgefunden das ich ein Verzeichniss ertsellen kann wenn 
ich darin eine datei erzeugen will kommt kein fehler aber ich sehe diese 
datei nicht und das blöde ist ich kann das verzeichniss am pc nicht 
löschen da es nicht leer ist da muß doch was sein aber wo????

Danke

Autor: herrmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe noch eins gefunden aber ich begreife nicht warum es so ist.

ich muß nach dem ich die Partition schließe die Partition noch mal 
öffnen und schleißen danach ist die datei auf der SD card.

wenn ich die Partition nicht nochmal öffne dann wird die datei nicht 
erzeugt.

warum weiß ich nicht????


Aber so gehts erstmal.


Danke

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.