Горячая замена SD карт со снандартной библиотекой SD.h
- Войдите на сайт для отправки комментариев
Пт, 22/06/2018 - 17:09
День добрый стала необходимость горячей замены SD карт в устройстве без его перезапуска. Проблема в том что инициализация карты SD.begin(pin), при повторном вводе не позволяет прочитать карту до перезагрузки. То есть нужно либо найти как можно деинициализировать карту противополжность команде SD.begin(pin), и повторно когда она будет вставлена ввести SD.begin(pin) с положительным результатом. Все больше убеждаюсь что это с данной библиотекой не выполнимо. Тогда посоветуйте библиотеку с которой это можно выполнить. За ранее спасибо!
А факт того, что вставили новую карту Вам известен? Т.е. Вы можете понять, что карту вставили, просто не можете переинициализировать? Так?
Я говорю про одну и туже карту! ТОесть мне нужно ее вытянуть и вставить обратно и уже инициализация не проходит!
Да да именно так!
Т.е. Вы знаете, что её вставили, проблема только с инициализацией?
А как Вы пробовали? Мне неохота долго рыться в библиотеке, но уверен, что если объект уничтожить целиком и создать заново, он должен нормально проинициализироваться. Это, конечно, жёстко, если порыться в библиотеке, то наверняка и "помягче" можно, но работать это должно. Попробуйте. Или Вы это пробовали?
Да проблема заново инициализировать.
Я не могу найти как деинициализировать... противоположность SD.begin. Переназначения на другой пин и потом обратно на нужный так же не помогает!
Да, нет, не деинициализирвать. Целиком уничтожить. Просто не используйте их статический объект SD, а создайте свой.
Только везде пишите не mySD.la-la , а mySD->la-la
По идее должно работать.
Хотя метода, конечно ... как головную боль гильотиной лечить.
Спасибо, что откликнулись! Прошу прощения что я немного вас вел в заблуждения, у меня тут три карточки разных проивзодителей и разных объемов 128мб, 1гб и 2 гб. И действительно обнаружил что та карточка что изначально инициализировалась при включении, она видна после вытягивания, но не другая, тоесть SD.begin при инициализации видет что за карточка объем тип и показывает только ее при повторном всовывание. Но вашу подсказку возъму на вооружение когда мне нужно будет делать для различных карт!
Вы бы проверили, работает ли она. По идее должна, но сам я не проверял.
Может чтото типа SD.end() вызвать перед SD.begin ?
Может чтото типа SD.end() вызвать перед SD.begin ?
Так, был бы - можно было б и вызвать, а то ж нету.
Да, нет, не деинициализирвать. Целиком уничтожить. Просто не используйте их статический объект SD, а создайте свой.
Только везде пишите не mySD.la-la , а mySD->la-la
По идее должно работать.
Хотя метода, конечно ... как головную боль гильотиной лечить.
Спасибо, помогло ))
А можно попросить листинг программы... А то, если честно, до обьектноориентированного программирования я не дорос.. . А похожая проблема - имеется..
А на ESP32 SDClass не находится, похоже там какой то другой =(