SD карта, инициализация, проверка доступности.
- Войдите на сайт для отправки комментариев
Ср, 17/06/2015 - 10:46
День добрый!
У меня есть кардридер SD карт в нем карта на 4Gb и Arduino MEGA. Используется стандартная библиотека SD из IDE. Работают замечательно. На карту пишется статистика с датчиков. Переодически достаю карту и сбрасываю данные на компьютер.
И вот тут мне было бы интересно как более првильно обрабатывать отсутствтие карты в картридере. Так как никаких механических дасчиков наличия/отсутствия карыт у картридере нет, а так же в библиотеке SD тоже нет ничего похожего, то достаточно ли будет перед записью данных на карту провериять откликается карта или нет?
if (!SD.begin(53)) { Serial.println("SD card failed!"); digitalWrite(ERRLED_PIN, HIGH); return; } digitalWrite(ERRLED_PIN, LOW); Serial.println("DC card OK"); // пишем данные с датчиков
И интерсно так же как правильно инициализировать SD карту
Достаточно ли только
SD.begin(53)
Или надо так
#include <SPI.h> #include <SD.h> // переменные для работы с картой памяти Sd2Card card; SdVolume volume; SdFile root; void setup() { Serial.begin(9600); Serial.print("\nInitializing SD card..."); digitalWrite(ERRLED_PIN, LOW); // Инициализируем карту if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("SD card init error"); digitalWrite(ERRLED_PIN, HIGH); return; } else { Serial.println("SD card init OK"); } // Открываем раздел. if (!volume.init(card)) { Serial.println("SD card don't have FAT16/FAT32 partition"); digitalWrite(ERRLED_PIN, HIGH); return; } } void loop(void) { }
В данном случае просто может не быть файла с таким именем.
Например у меня данные пишутся в файлы с ограничением по размеру в 200кб, именуются как DATA0001.CSV и далее по порядку номера идут. Как только Файл переполняется то создаем следующий.
При старте системы ищем последний файл, и открываем его, Но например последний это DATA0099.CSV и мы будем открывать DATA0100.CSV а его нет. Это не значит что нет карты.
Хотя возможно вы и правы. В алгоритме у меня файл создается при определенных условиях а потом уже открывается, и если его невозможно открыть значит проблемы с картой.
Спасибо за ответ. Попробую сделать контроль таким образом.
В данном случае просто может не быть файла с таким именем.
Например у меня данные пишутся в файлы с ограничением по размеру в 200кб, именуются как DATA0001.CSV и далее по порядку номера идут. Как только Файл переполняется то создаем следующий.
При старте системы ищем последний файл, и открываем его, Но например последний это DATA0099.CSV и мы будем открывать DATA0100.CSV а его нет. Это не значит что нет карты.
Хотя возможно вы и правы. В алгоритме у меня файл создается при определенных условиях а потом уже открывается, и если его невозможно открыть значит проблемы с картой.
Спасибо за ответ. Попробую сделать контроль таким образом.
Андрей а не расскажешь как запустил карту на меге ... читаю щас что и куда....но блин сленга куча или описано не совсем ясно ...
на унке работает прекрасно, подцепил к меге с 50 порта... в библиотеке порты поменял ... щас смотрю что дальше..
можете не отвлекаться разобрался ) ...