Проблема определения наличия 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.
Я еще вывожу дополнительный контакт наличия карты в ридере.
Хм, действительно, можно ведь по контакту контролировать. Спасибо, и за наводку на библиотеку тоже!