Je me relance dans mon project et je mets à jour mon code.
Depuis SdFat est passé sur une nouvelle version et mon code bug. tant mieux, je le corrige mais en suivant le fichier d'exemple, pour parcourir un dossier (Directory Fonction), je n'arrive plus à initier ma carte.
Board: SMAD21 MO
SD Card : exFat
Dans mon fichier.h, j'ai ceci
#include <FreeStack.h> // For SdFAT
#include <SdFat.h>
#define SD_FAT_TYPE 2 // 1 for FAT16/FAT32, 2 for exFAT, 3 for FAT16/FAT32 and exFAT.
dans mon fichier .cpp, j'ai cette fonction qui va vérifier la carte
bool Ecosensors::sd_begin()
{
pinMode(_carddetect, INPUT_PULLUP);
Serial.println(F("\tBegin SD"));
Serial.print(F("\tSD_FAT_TYPE: "));
#if SD_FAT_TYPE == 0
Serial.println(F("SdFat/File as defined in SdFatConfig.h"));
#elif SD_FAT_TYPE == 1
Serial.println(F("for FAT16/FAT32"));
#elif SD_FAT_TYPE == 2
Serial.println(F("for exFAT"));
#elif SD_FAT_TYPE == 3
Serial.println(F("for FAT16/FAT32 and exFAT"));
#endif // SD_FAT_TYPE
_isSdReady = false;
int c=1;
do
{
if (!_sd.begin(4))
{
Serial.print(F("\t"));
Serial.print(c);
Serial.println(F(": Attending the detect the SD card"));
//isOk = false;
_isSdReady = false;
c++;
delay(1000);
}
else
{
_isSdReady = true;
}
}while(_isSdReady == false && c < 4);
if(_isSdReady == false)
{
Serial.println(F("Sd is not ready"));
_isSDenable = false;
_logger = false;
return _isSdReady;
}
_sd.chdir();
//listFiles(NULL);
//afficherContenuRepertoire(_sd, 1);
return _isSdReady;
}
Avanr cela fonctionnait très bien avec la valeur de 4 pour le chipset. Je ne comprends pas pourquoi maintenant cela ne fonctionne plus. J'ai aussi essayé de lui donner 8 tentatives, sans succès.
Quel module SD utilisez vous exactement, avec la référence ou le fabricant, et pouvez vous confirmer le câblage MOSI, MISO, SCK, CS ainsi que la tension d'alimentation du module?
Concernant SdFat vous dites faire l’évolution - est-ce le passage de la V1 à la V2 ou juste à La version 2.2.2 ? Celle ci a modifié la façon dont le SPI utilisateur est initialisé, avec l'ajout de fonctions SPI array. (Un point structurel important est que depuis la version 2, le mode SPI dédié, ENABLE_DEDICATED_SPI, est activé par défaut dans SdFatConfig.h, alors qu'en version 1 le comportement par défaut était plus proche du mode partagé.)
Il faudrait tout le code … par exemple est ce que sd_begin est appelé depuis le constructeur de Ecosensors ou depuis setup(). Un appel SPI ou SD.begin() déclenché depuis le constructeur d'un objet global sur SAMD21, avant que le setup et l'initialisation du cœur Arduino soient terminés, peut provoquer ce type de blocage silencieux.
Hello J-ML
Je suis désolé pour ma réponse tardive.
Alors sur ce coup la, je n'ai vraiment pas été malin
J'ai été confonté à cela, il y a deux ans et c'est que hier soir que j'ai pensé à ça (c'était trop tard pour le testé) J'avais même écris un exemple ici.