Kann keine datei auf sd card estellen

Gast #836224
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.
Gast #836890
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
Gast #837295
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..
Gast #837331
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
Gast #839454
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

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