Проблема определения наличия SD карты
- Войдите на сайт для отправки комментариев
Чт, 30/06/2016 - 16:29
Здравствуйте.
Столкнулся с проблемой корректного определения наличия 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 в любых условиях.
Гугл кроме обозначенных функций ничего не дал.
Собственно вопрос - как реализовать корректную проверку карты без отключения питания?
Собственно вопрос - как реализовать корректную проверку карты без отключения питания?
Не страдать хернёй и не вытягивать карту посреди процесса - это тебе не USB.
Та я и из USB флешку посреди процесса не вытягиваю, а такое - вообще в голову не пришло бы.
Не используй SD.h, исползуй SdFat.h.
Я еще вывожу дополнительный контакт наличия карты в ридере.
Не используй SD.h, исползуй SdFat.h.
Я еще вывожу дополнительный контакт наличия карты в ридере.
Хм, действительно, можно ведь по контакту контролировать. Спасибо, и за наводку на библиотеку тоже!