[Non réglé] Problème écriture carte SD


bonjour à tous !

je viens de commencer dans l'arduino qui est une carte formidable !

mais je me heurt à un petit problème.

dans mon projet je voudrais stocker des variables dans une carte sd afin de pouvoir modifier et sauvegarder celle-ci entre deux utilisations.

donc je pensais utiliser une sd avec un fichier contenant celles-ci (initialisation = récupération sur la carte et modification (très rares) => écriture sur la carte) afin d'éviter de rebrancher le pc et de modifier le code.

donc voici mon problème : j'utilise un module sd en spi avec une carte mega 2560.

et quand je teste le code exemple de la bibliothèque sd je n'arrive qu'à lire et pas à écrire. si j'essaye d'écrire dans le fichier ça bug et cela bloque même la lecture qui suit.

voici mon code :
code: [select]
/*
  sd card read/write

 this example shows how read , write data , sd card file
 the circuit:
 * sd card attached spi bus follows:
 ** mosi - pin 11
 ** miso - pin 12
 ** clk - pin 13
 ** cs - pin 4

 created   nov 2010
 by david a. mellis
 modified 9 apr 2012
 by tom igoe

 this example code in public domain.

 */

#include <spi.h>
#include <sd.h>

file myfile;

void setup() {
  // open serial communications , wait port open:
  serial.begin(9600);
  while (!serial) {
    ; // wait serial port connect. needed native usb port only
  }


  serial.print("initializing sd card...");

  if (!sd.begin(53)) {
    serial.println("initialization failed!");
    return;
  }
  serial.println("initialization done.");

  // open file. note 1 file can open @ time,
  // have close 1 before opening another.
  myfile = sd.open("test.txt", file_write);

  // if file opened okay, write it:
  if (myfile) {
    serial.print("writing test.txt...");
    myfile.println("testing 1, 2, 3.");
    // close file:
    myfile.close();
    serial.println("done.");
  } else {
    // if file didn't open, print error:
    serial.println("error opening test.txt");
  }

  // re-open file reading:
  myfile = sd.open("test.txt");
  if (myfile) {
    serial.println("test.txt:");

    // read file until there's nothing else in it:
    while (myfile.available()) {
      serial.write(myfile.read());
    }
    // close file:
    myfile.close();
  } else {
    // if file didn't open, print error:
    serial.println("error opening test.txt");
  }
}

void loop() {
  // nothing happens after setup
}



j'ai tester avec un arduino uno que j'ai dans mes tiroirs et avec lui pas de problème !

sur la carte mega je suis obligé de commenter la ligne :
myfile.println("testing 1, 2, 3.");
sinon ça plante la lecture et cela aussi fonctionne si je supprime file_write de l'ouverture qui je pense bloque l'écriture.

je ne comprend pas ce qui se passe. quelques fois ça crée un fichier corrompu de plusieurs go  :o !

sur la carte j'ai beaucoup de modules de branchés (ecran lcd, rtc, télécommande ir, récepteur modélisme, bmp180, ...) et dans le doute j'ai implémenté le code exemple dans mon code où tout les modules fonctionne mais cela ne change rien.

merci d'avance si quelqu'un à une idée.

bonne journée.

tu transposé les numéros de broches pour la mega (voir le second paragraphe)?


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > [Non réglé] Problème écriture carte SD


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'