Проблема определения наличия SD карты

nermot
Offline
Зарегистрирован: 30.06.2016

Здравствуйте.

Столкнулся с проблемой корректного определения наличия SD карточки после ее извлечения. Убрал из кода все лише, оставив только функционал проверки карты:

#include <SPI.h>
#include <SD.h>                  

File myFile;                            
const int ledPin = 9;                                                        
void setup()                                
{                                      
  Serial.begin(9600);                                                                   
  pinMode(ledPin, OUTPUT);                                     
  pinMode(10, OUTPUT);                         
  Serial.print("Initializing SD card...");                             
  if (!SD.begin(10))                                                                  
  {                                                                      
    Serial.println("initialization failed!");                  
    return;                                                     
  }                                                            
  Serial.println("initialization done.");              
}                                                                    
void loop()
{
  myFile = SD.open("datalog.txt", FILE_WRITE);
  if (myFile)
//  if(SD.exists ("datalog.txt"))
//  if(myFile.read() == -1)
//  if(myFile.available())
  {  
  Serial.println("File_exists!!!");
  myFile.close(); 
  }
  else
  {
  Serial.println("File_not_exists...");
  }
  delay(2000);
}

Т.е. открываю файл и проверяю, читается ли он. Если карта на месте, то первые две функции дают результат TRUE, однако после извлечения карты, в Serial так же пишется, что файл есть! Результат меняется только после отключения питания.

Последние две функции дают результат FALSE в любых условиях.

Гугл кроме обозначенных функций ничего не дал.

Собственно вопрос - как реализовать корректную проверку карты без отключения питания?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

nermot пишет:

Собственно вопрос - как реализовать корректную проверку карты без отключения питания?

Не страдать хернёй и не вытягивать карту посреди процесса - это тебе не USB.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Та я и из USB флешку посреди процесса не вытягиваю, а такое - вообще в голову не пришло бы.

AmateurFF
Offline
Зарегистрирован: 02.02.2015

Не используй SD.h, исползуй SdFat.h.

Я еще вывожу дополнительный контакт наличия карты в ридере.

nermot
Offline
Зарегистрирован: 30.06.2016

AmateurFF пишет:

Не используй SD.h, исползуй SdFat.h.

Я еще вывожу дополнительный контакт наличия карты в ридере.

 

Хм, действительно, можно ведь по контакту контролировать. Спасибо, и за наводку на библиотеку тоже!