Как безопасно извлечь SD-card из картридера, подключенного к ардуино уно?

123ksn
Offline
Зарегистрирован: 24.11.2014
Предыстория.
В 2015г сделал солнечный коллектор и для его управления быстренько набросал скетч с протоколлированием температуры и режимов работы на SD-card. Основной функционал контроллер выполнял, а потому был заброшен ради более срочных задач. В ходе экспериментов с Linux, я уничтожил всю информацию на жеском диске, в том числе и скетч. Но не расстроился, так как была резервная копия. 
 
Сейчас (2019г) хотел реализовать недоделанное и тут всплыли "мелочи", которые мне изрядно портят нервы. 
1)Залитая в ардуино  версия на неделю более поздняя, чем сохранившийся исходник. 2)Я не точно помню на какой версии IDE и с какими библиотеками я компилировал проект. В результате в мае 2019г, хоть проект и компилировался без ошибок, протоколирование температуры на SD-card не происходило. После бессистемных попыток восстановить работоспособность проекта (hex-файл), перешел к системному подходу. Ставил "с нуля" arduino IDE версий 1.05, 1.5.х, 1.6.х, 1.8.х, подключал библиотеки, компилировал, заливал в Arduino UNO. В результате нашел, что мой проект работает (записывается на карточку температура), если его компилировать на версии 1.6.0. Но споймал другую "засаду". SD-карточка, которая верой и правдой отработала в контроллере 4 года "приказала долго жить". На сколько я понимаю, проблема произошла из-за неправильного извлечения карточки из кард-ридера. У меня "как-бы" реализован режим извлениея карточки путем снятия напряжения с вывода CS (chipSelect), но когда я для контроля подключил к этому выводу светодиод, то был неприятно удивлён увиденным - светодиод не прекращал светиться. Т.е. я всегда извлекал SD-карточку, находящуюся в активном режиме. Неудивительно, что она испортилась.
Так же обнаружил еще одну странную особенность. Если контроллер запускать подавая питание, то SD-карточку (при инициализации) программа видит и пишет на неё, но если контроллер запустить ресетом (монитором последовательного порта), то программа SD-карточку на этапе инициализации уже не видит и конечно же не пишет на неё.
И еще один момент... Контроллер каждые 5 сек отправляет информацию по UART и отображает на ЖКИ. Если контроллер запущен подачей питания, то в момент отправки информации светодиод на выводе CS (chipSelect), как-бы притухает. Может напряжение и правда проседает, а может идет серия коротких импульсов, но на SD-карточку запись производится. А если контроллер сбрасывается ресетом (при подключенном питании), то светодиод на выводе CS (chipSelect) светится без изменения яркости и SD-карточка не инициализируется, информация на UART и ЖКИ выводится.
Я не ожидаю, что кто-то подскажет где "собака зарыта". Но хочу наблюдениями и спросить как другие решали вопрос с безопасным извлечением SD-карточки на работающем ардуино.
Реально у меня micro SD, вставленная в SD-card, которая вставляется в слот на шилде Logging Recorder Data Logger, который с часами на DS1307.
Спасибо за внимание.
 
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

На Ардуино нет безопасного извлечения SD карты.

А вообще, не очень понятно, что именно Вы делали и какие из этого следуют выводы. В частости, сигнал CS обычно низкого уровня, т.е. карточку можно извлекать только при высоком уровне на CS.

123ksn
Offline
Зарегистрирован: 24.11.2014

andriano пишет:

На Ардуино нет безопасного извлечения SD карты.

Здесь возникает вопрос, что считать безопасным извлечением? Я подразумеваю такое извлечение, при котором не теряется поступающая информация (гарантированно запишется пакет) и SD карта переводится в такой режим, при котором её можно извлекать. Перевод в такой режим может производиться как установкой определенной конфигурации напряжений на входах, так и полным отключением питания. Посему и вопрос задал, так как не встречал описания сего процесса "на пальцах".

andriano пишет:

В частости, сигнал CS обычно низкого уровня, т.е. карточку можно извлекать только при высоком уровне на CS.

К сожалению сейчас ссылку привести не могу откуда я взял информацию про низкий уровень на CS для извлечения. Загуглил Вашу информацию. Действительно, есть такая.  Проанализирую. Спасибо!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

123ksn пишет:

Здесь возникает вопрос, что считать безопасным извлечением? Я подразумеваю такое извлечение, при котором не теряется поступающая информация (гарантированно запишется пакет) и SD карта переводится в такой режим, при котором её можно извлекать. Перевод в такой режим может производиться как установкой определенной конфигурации напряжений на входах, так и полным отключением питания. Посему и вопрос задал, так как не встречал описания сего процесса "на пальцах".

Этого недостаточно.

Перед извлечением карты на ней должны быть закрыты все файлы. "Конфигурация напряжений на входах" - это уже следующий этап.

Т.е. чтобы сделать процесс извлечения карты максимально "безопасным", нужно держать все файлы на карте постоянно закрытыми. При необходимости что-то записать: открывать файл, записывать и тут же закрывать. Но это гораздо более длительный процесс, чем просто дозапись в открытый файл.

Желательно также предусмотреть кнопку, после нажатия на которую запретить скетчу дописывать что-либо в файлы.

123ksn
Offline
Зарегистрирован: 24.11.2014

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

1) разработчики библиотек для ардуино для работы с SD карточками не уделяли должного внимания возможности изъятия и/или замены карточки.

2) изготовители шилдов не предусмотрели установки на плате выключателя питания (ручного и/или программного) SD карточки.

3) примеров, реализующих возможность изъятия SD карточки без отключения питания ардуино, я не встретил. Так же я не встретил примеров, анализирующих выводы слота "карточка вставлена"(card_detect) и "защита от записи" (write_protect)

4) в штатной библиотеке SD, которая идет в ARDUINO IDE уже много лет не исправляются известные ошибки. В связи с этим использование штатной библиотеки (с моей точки зрения) нецелесообразно. Лучше использовать, как минимум, FatFs.

В общем, всё очень любительское.

ratman
Offline
Зарегистрирован: 11.10.2015

5) Китайские производители электронной продукции игнорируют стандарт считывателя SD-карт и в целях экономии повсеместно выпиливают из него микролифт. Оправдывая это тем, что и без него всё работает. Что приводит к тому, что SD-карту приходится извлекать руками.

Короче, беспердел полный.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Думаю, дело не в "любительскости" и тем более не в "китайскости".

В Ардуино карта не рассматривается как сменный носитель. следовательно, не предусматривается не только безопасное извлечение, но и вообще какое-либо извлечение во время работы. Да даже в Малинке попытайтесь извлечь ее единственную карточку, на которой записан Raspbian. Что-то мне кажется, это ничем хорошим не кончится. Хотя компьютер совсем другого уровня и ОС, казалось бы, должна работать со сменными носителями, и ресурсы позволяют...

Кстати, могу поделиться еще одним совершенно возмутительным фактом: в Ардуино не предусмотрено кэширование ни записываемых, ни считываемых данных.

123ksn
Offline
Зарегистрирован: 24.11.2014

andriano пишет:

В Ардуино карта не рассматривается как сменный носитель. следовательно, не предусматривается не только безопасное извлечение, но и вообще какое-либо извлечение во время работы. 

Кстати, могу поделиться еще одним совершенно возмутительным фактом: в Ардуино не предусмотрено кэширование ни записываемых, ни считываемых данных.

SD карта сменный носитель по определению. То, что разработчики Ардуино не рассматривают её как сменный носитель - их право. Но то, что разработчики библиотеки для SD rfhnjxrb игнорируют даташит - это любительство. 

andriano пишет:

Кстати, могу поделиться еще одним совершенно возмутительным фактом: в Ардуино не предусмотрено кэширование ни записываемых, ни считываемых данных.

Здесь я не соглашусь с Вашим сарказмом. Arduino IDE поддерживает много типов МК и потому не факт, что для всех типов нет кэширования. А то, что нет кэширования для Atmega 328 так это даже хорошо. Итак памяти "кот наплакал", да  и сама идеология "низкого порога вхождения" вряд ли предполагает выкрутасы с двойным кэщированием (на современных SD картах есть свой кэш)

andriano пишет:

Да даже в Малинке попытайтесь извлечь ее единственную карточку, на которой записан Raspbian. Что-то мне кажется, это ничем хорошим не кончится. Хотя компьютер совсем другого уровня и ОС, казалось бы, должна работать со сменными носителями, и ресурсы позволяют...

Ну а здесь Вы явно передергиваете. Если на карточке записана ОС, некие конфигурационные файлы, размещаются временные файлы, то глупо предполагать, что карточка не потребуктся в любой момент времени ОС или приложению. Посему правильно, что в Малине, и иже с ней, извлекать карточку  на работающей железке категорически нельзя.

leks
Offline
Зарегистрирован: 22.10.2017

Ё, моё, а я прямо во время работы светодиодного куба выдёргивал карту с записанными эффектами, редактировал на компьютере и обратно вставлял. Понятно почему она не подключалась сразу и приходилось выключать поделку для повторного запуска. Значит все манипуляции только при выключенной Ардуине.

Densl
Offline
Зарегистрирован: 28.11.2018

У SD карты 2 дорожки длинее остальных. По ним идет питание. Если извлечь карточку раньше времени, то сперва прерывается передача данных, и только потом уходит питание. Ни чем это не грозит, кроме потери данных. На платах с карточками обычно ставят светодиод активности карты. По нему можно понять, когда достать карточку, чтобы ничего не запороть.

123ksn
Offline
Зарегистрирован: 24.11.2014

Densl пишет:

У SD карты 2 дорожки длинее остальных. По ним идет питание. Если извлечь карточку раньше времени, то сперва прерывается передача данных, и только потом уходит питание. Ни чем это не грозит, кроме потери данных. На платах с карточками обычно ставят светодиод активности карты. По нему можно понять, когда достать карточку, чтобы ничего не запороть.

Не вводите людей в заблуждение!!! С одной стороны это правда, что есть более длинные дорожки, которые обеспечивают некую последовательность подключения/отключения контактов на физическом уровне. НО...SD-карточка - это аппаратно-программное устройство. Что она делает внутри себя в момент отключения никто не знает! А по сему бестолковое поведение владельца легко может привести не только к разрушению передаваемой информации, но и уже накопленной, но и FAT, MBR, и другой служебной информации. А думаю, что только продавцы и маркетологи флешек и карточек заявляют о беспроблемности выдергивания и вставляния съёмных носителей "на горячую". 

А нам надо иметь свои мозги и меньше слушать заинтересованных в продажах лиц!

leks пишет:

Значит все манипуляции только при выключенной Ардуине.

Даже питание ардуины, работающей с карточкой, в любой момент отключить НЕЛЬЗЯ !!! Т.е. надо при работе с карточкой отслеживать уровень напряжения из блока питания ардуино. Если оно стало меньше некого значения, например, 7вольт, то СРОЧНО запретить чтение/запись на карточку, перенастроить выводы, снять питание с карточки и ждать когда напряжение совсем пропадет, либо когда когда придёт в норму.

Собственно об этой реализации я и хотел узнать, когда создавал эту ветку. Но видимо придется решать самому.

Всем целостности информации!

b707
Offline
Зарегистрирован: 26.05.2017

123ksn пишет:

Даже питание ардуины, работающей с карточкой, в любой момент отключить НЕЛЬЗЯ !!!Если оно стало меньше некого значения, например, 7вольт,

простите, вот такие вот приколы, как "питание ардуины от 7в" - сразу показывают, кто есть кто.  Судя по всему, вы обычный диванный теоретик, который пылает "справедливым гневом" по поводу "любительства", а сам не разбирается ни в чем. И все ваше негодование по поводу библиотек - оттуда же, от неумения и дилетантства.

Запомните , ардуино - изначально любительская платформа. Поэтому обвинять ее в "любительском подходе" - смешно. Все библиотеки ардуино написаны не "создателями ардуино", а такими же пользователями, как вы или я. Упрекать авторов, что их библиотеки не поддерживают какие-то функции "железа" - несправедливо и неблагодарно. Автор библиотеки ничем вам не обязан и в первую очередь реализует в ней то, что нужно ему. Если в библиотеке нет необходимого вам функционала - вы просто садитесь и дописываете его сами, не тратя время на вопли в инете. Если в библиотеке SD нет опций безопасного отключения - значит это пока никому не было нужно.  Возьмите и допишите - и, может быть, другие скажут ввам спасибо

123ksn
Offline
Зарегистрирован: 24.11.2014

Не люблю себя цитировать, но когда наезжают невежи, то приходится

123ksn пишет:

отслеживать уровень напряжения из блока питания ардуино. Если оно стало меньше некого значения, например, 7вольт

Объясняю подробней, для таких как b707... Что бы напряжение питания на выводах ардуино было 5 вольт, необходимо, что бы напряжение до стабилизатора ардуино (т.е. из блока питания) было больше на величину падения напряжения на этом стабилизаторе. ОБЫЧНО это более 1вольта. Массовые блоки питания (не зарядки!) выпускаются обычно на 9-12в (посмотрите блоки питания свитчей, роутеров и т.п.). Рекомендую так же посмотреть характеристики ардуино УНО, Мини и т.п. и узнать какое напряжение питания рекомендует производитель подавать из сетевого блока питания.

b707 пишет:

простите, вот такие вот приколы, как "питание ардуины от 7в" - сразу показывают, кто есть кто.  Судя по всему, вы обычный диванный теоретик, который пылает "справедливым гневом" по поводу "любительства", а сам не разбирается ни в чем. И все ваше негодование по поводу библиотек - оттуда же, от неумения и дилетантства.

А от b707 я жду извинений. Но думаю не дождусь, так как он предварительно извинился.... и облил грязью. Культурный человек.. Сразу видно... И внимательный.... И грамотный.. И доброжелательный.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Хм....у меня arduino uno и nano питаются от стабилизированного источника питания 5 вольт, так что соглашусь с b707, Вам, 123ksn, теорию бы подучить не помешало.

b707
Offline
Зарегистрирован: 26.05.2017

123ksn пишет:

Культурный человек.. Сразу видно... И внимательный.... И грамотный.. И доброжелательный.

Извините, возможно и правда резковато вышло. Но это был эмоциональный ответ на ваши необоснованные сетования, что библиотеки "любительские" и их авторы не потрудились обеспечить нужный вам функционал :)

если читать мой ответ по сути - то главное в нем то, что платформа хоббийная и изначально не предполагает каких-либо гарантий и готового софта из коробки. Скажите спасибо, что авторы поделились хотя бы такими библиотеками - вам не придется писать все с нуля. Ардуина - это игрушка для программистов,  и в комплекте идет не готовый пакет программ, а заготовки для самостоятельного творчества.

 

А что касается питания - тут вы тоже не вполне правы. Если у вас в проекте нет потребителей с напряжением более 5в - питать ардуину через встроенный стабилизатор от БП 9-12в - признак чайника.

123ksn
Offline
Зарегистрирован: 24.11.2014

andycat пишет:
Хм....у меня arduino uno и nano питаются от стабилизированного источника питания 5 вольт, так что соглашусь с b707, Вам, 123ksn, теорию бы подучить не помешало.

Будте добры, научитесь вдумчиво читать, а не выдергивать фразы из контекста! Вы же сами себя позорите таким образом, учителя!

b707 пишет:

Извините, возможно и правда резковато вышло. 

Т.е. возможно, а не безосновательно. Ладно, и на том спасибо. Не многие хоть в такой форме приносят извинения.

b707 пишет:

на ваши необоснованные сетования, что библиотеки "любительские" и их авторы не потрудились обеспечить нужный вам функционал :)

Опять обижаете. Да, ни ардуино, ни разработчики библиотек мне ничего не должны. Точка! Поэтому я не сетую! Но грустно, когда люди выкатывают свою поделку на публику, т.е. с претензией на профессионализм, в которой не реализованы важные функции, критичные для пользователя и описанные в даташите. Вы видимо считаете это нормой, я считаю это любительством. И не навязывайте мне свою точку зрения. У Вас своя, у меня своя. Я же Вас не переубеждаю и не говорю, что Вы неправы.

b707 пишет:

если читать мой ответ по сути - то главное в нем то, что платформа хоббийная...

Если меня читать по сути, а не выдергивать фразы из контекста, то тоже очевидно, что я говорю о том же.

b707 пишет:

А что касается питания - тут вы тоже не вполне правы. Если у вас в проекте нет потребителей с напряжением более 5в - питать ардуину через встроенный стабилизатор от БП 9-12в - признак чайника.
Еще раз ткнуть Вас носом в мой текст? Я же написал слово "НАПРИМЕР". Я всего лишь привел пример. А Вы опять себя проявили как ярлыковешатель. Жаль.
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Не, ну я конечно чайник, но "Что бы напряжение питания на выводах ардуино было 5 вольт" это сильно конечно. А если я дорожку перережу и мне не надо на выводах 5 вольт то чем я питать должен? Почитайте что внутри ардуино МК обычно atmega328p, и ей и периферии нужно 5 вольт, и то не обязательно. Терминология хромает....

negavoid
Offline
Зарегистрирован: 09.07.2016

123ksn пишет:
SD-карточка - это аппаратно-программное устройство. Что она делает внутри себя в момент отключения никто не знает!

Так себе тайна. Ни от кого ничего не скрывается: https://www.sdcard.org/downloads/pls/index.html

 

123ksn
Offline
Зарегистрирован: 24.11.2014

andycat пишет:
Не, ну я конечно чайник, но "Что бы напряжение питания на выводах ардуино было 5 вольт" это сильно конечно. А если я дорожку перережу и мне не надо на выводах 5 вольт то чем я питать должен? Почитайте что внутри ардуино МК обычно atmega328p, и ей и периферии нужно 5 вольт, и то не обязательно. Терминология хромает....

Опять выдернули фразу из контекста. Речь ведь шла о напряжении питания. Или Вы это не понимаете?

Продолжу Вас.. Я если у меня ардуино с напряжением питания 3,3В? А если не с Atmega328? Какие ЕСЛИ Вы еще хотите придумать? Не стесняйтесь, учитель, продолжайте.

leks
Offline
Зарегистрирован: 22.10.2017

Кошмар, значит пониженное напряжение может прибить карту. А я питаю куб (216 светодиодов) от аккумулятора старенького телефонного (3,7 В) через МТ3608. С него питается 6 MAX7219, УНО, картридер с картой. Ток достигает 230 мА. На днях он разрядился во время рисования эффекта до 2,8 В и ардуино начала глючить. Не сразу понял в чём дело, дёргал провода, но разобрался в итоге. Надо попробовать без повышайки, но MAX7219 наверняка откажуться работать.

Всё же копии файлов с карточки желательно иметь и проблем не будет.

123ksn
Offline
Зарегистрирован: 24.11.2014

negavoid пишет:

123ksn пишет:
SD-карточка - это аппаратно-программное устройство. Что она делает внутри себя в момент отключения никто не знает!

Так себе тайна. Ни от кого ничего не скрывается: https://www.sdcard.org/downloads/pls/index.html

Т.е. Вы хотите сказать, что обладая этими знаниями Вы можете точно сказать в каком состоянии будет находиться каждый бит в карточке в момент Х, когда меня черт дернул за руку выдернуть карточку из слота? Да Вы - БОГ! А я вот могу делать только предположения, что карточке конец может наступить. Последние три слова предлагаю обсудить подробно :)

123ksn
Offline
Зарегистрирован: 24.11.2014

leks пишет:

Кошмар, значит пониженное напряжение может прибить карту. А я питаю куб (216 светодиодов) от аккумулятора старенького телефонного (3,7 В) через МТ3608. С него питается 6 MAX7219, УНО, картридер с картой. Ток достигает 230 мА. На днях он разрядился во время рисования эффекта до 2,8 В и ардуино начала глючить. Не сразу понял в чём дело, дёргал провода, но разобрался в итоге. Надо попробовать без повышайки, но MAX7219 наверняка откажуться работать.

Всё же копии файлов с карточки желательно иметь и проблем не будет.

Копии важной информации надо иметь всегда. Вопрос в другом... что считать проблемой. Лично я считаю проблемой не только потерю информации, но и порчу карточки, хотя и не такой жестокой... особенно когда есть вторая в запасе.

qwone
qwone аватар
Онлайн
Зарегистрирован: 03.07.2016

Вопрос: Как безопасно сесть голой жопой на раскаленную печь.
Ответ: Безопасно вообще не садится. А если кому-то очень хочется, то или асбестовые штаны, или печь надо охладить.
Вот так и ответом на форуме по этой теме. Я не понимаю зачем вопрошающему на форуме надо, что бы его другие форумчане водили мордой по столу. Это что мазохизм такой. Придумать светодиодный индикатор когда можно извлекать карточку, а когда нет видно не судьба.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Пух, ты, штоли, на волю откинулся? 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

123ksn пишет:

SD карта сменный носитель по определению.

123ksn пишет:

...глупо предполагать, что карточка не потребуктся в любой момент времени ОС или приложению. Посему правильно, что в Малине, и иже с ней, извлекать карточку  на работающей железке категорически нельзя.

Интересно, Вы сами видите противоречие между этими высказываниями?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

123ksn пишет:

Но грустно, когда люди выкатывают свою поделку на публику, т.е. с претензией на профессионализм, в которой не реализованы важные функции, критичные для пользователя и описанные в даташите. Вы видимо считаете это нормой, я считаю это любительством.

Начну с "в-третьих":

В-третьих, в Ардуино любительство - это норма. По определению.

Во-вторых, далеко не всегда имеется возможность реализовать для контроллера с объемо памяти 1024 байта все описанные в дэйташите функции.

И во-первых, какие из функций считать важнейшими, - решает автор. Не факт даже, что с его, автора, точки зрения именно этот набор функций нужен большинству пользователей. Гораздо чаще - это набор функций необходимых конкретному проекту или подмножеству проектов определенной направленности (сам, например, опубликовал библиотеку и на все предложения по расширению ее функциональности отвечаю отказом, т.к. считаю ее важнейшей отличительной особенностью по сравнению со стандартными библиотеками - компактность).

leks
Offline
Зарегистрирован: 22.10.2017

Ну вот, попробовал питать конструкцию прямо с аккумулятора - работает всё. Рисовать эффекты и записывать на карту не пробовал - страшно :) А так считывает и воспроизводит как и задумано.

Для начала надо поискать как грамотно "отключать карту" от работающей схемы. В массе (читал про фотографирование) рекомендуют на отключённом питании - может и здесь, сначала убрать питание с карты, потом извлекать? 

negavoid
Offline
Зарегистрирован: 09.07.2016

123ksn пишет:
Т.е. Вы хотите сказать, что обладая этими знаниями Вы можете точно сказать в каком состоянии будет находиться каждый бит в карточке в момент Х, когда меня черт дернул за руку выдернуть карточку из слота? Да Вы - БОГ! А я вот могу делать только предположения, что карточке конец может наступить. Последние три слова предлагаю обсудить подробно :)

С сегодняшнего дня повелеваю звать меня Яхве. Ведь в таинственных документах всё написано, и про сохранность данных, и про горячее включение и отключение (глава 6), и приведены правильные и неправильные схемы подключения карты. Я даже не поленился и нашёл для вас с*изженную полную спецификацию.

http://read.pudn.com/downloads188/ebook/881633/SD%203.0/Part_1_Physical_Layer_Specification_Ver3.00_Final_090416.pdf

Кстати, интересно написано:

No card shall be damaged by inserting or removing a card into the SD Memory Card bus even when the power (Vdd) is up. Data transfer operations are protected by CRC codes, therefore any bit changes induced by card insertion and removal can be detected by the host.

То бишь, продавцы-менеджеры и прочие лишь повторяют то, что им говорит ассоциация SD, а ей не доверять я не вижу смысла. То, что вам не повезло с какой-то конкретной картой - дык, о ужас, и ардуины иногда ломаются, и даже большие компуктеры. Хотите не терять информацию (не ломать записи фс и т.п.)? Так не выдёргивайте карту, пока на неё пишете. Конец истории.

Densl
Offline
Зарегистрирован: 28.11.2018

Я бы не стал отключать питание у работающей карточки. Ведь не случайно сделали длинные контакты на питание. Это чтобы оно в последнюю очередь отключалось. А вы, если отключите питание в момент записи данных, это может плохо сказаться на самих данных. Проще всего извлекать карту, завершив запись на нее специально выделенной кнопкой. Я бы так поступил, если бы боялся потерять данные. А вообще любые ошибки после вытаскивания карты хорошо исправляет виндовский стардартный checkdisk. Не раз им пользовался в подобных случаях.

leks
Offline
Зарегистрирован: 22.10.2017

negavoid пишет:

 Так не выдёргивайте карту, пока на неё пишете. Конец истории.

Ну значит после каждого закрытия файла проверять в скетче не нажата ли кнопка, нажата значит включаем сигнальный светодиод, делаем паузу и дальше по обстоятельствам.

123ksn
Offline
Зарегистрирован: 24.11.2014

negavoid пишет:

Я даже не поленился и нашёл для вас с*изженную полную спецификацию.

Спасибо, Яхве. Посмотрю на досуге.

andriano, нет противоречия в приведенных Вами моих высказываниях. Если Вы понимаете, то мне Вас жаль. Объяснять почему нет противоречия не хочу. Поскольку ветка превратилась в мусорницу (за исключением документации от negavoid), участвовать более в балагане не желаю. Когда решу для себя проблему с безопасным извлечением флешки, поделюсь информацией.

Всем не хворать!!!

b707
Offline
Зарегистрирован: 26.05.2017

123ksn пишет:

ветка превратилась в мусорницу (за исключением документации от negavoid), участвовать более в балагане не желаю. Когда решу для себя проблему с безопасным извлечением флешки, поделюсь информацией.

так вашими стараниями и превратилась. Вижу, что мой первый ответ #11 был верным, а потом извинялся я зря. Пришел этакий Д-Артаньян, все вокруг идиоты, один он в белом - библиотеки ему правильно не написали, производители шилдов что-то там не обеспечили, на форумах готового решения не выложили, да еще и конфа тут - мусор.

Вы сами решите проблему и выложите информацию? - будем ждать с нетерпением :))) Только сдается мне, что это бахвальство. Вам не под силу. Если почитать внимательно первое сообщение, половина которого посвещена тому, как вы не смогли перенести якобы "свой код" 3хлетней давности на новую версию ардуино - можно сделать вывод, что программировать вы не умеете.

Думаю, именно в этом вся проблема. Любой программист давно бы сел и написал - а вам только и остается, что ныть на форуме, что никто не приготовил вам готового решения.

Densl
Offline
Зарегистрирован: 28.11.2018

123ksn пишет:

Densl пишет:

У SD карты 2 дорожки длинее остальных. По ним идет питание. Если извлечь карточку раньше времени, то сперва прерывается передача данных, и только потом уходит питание. Ни чем это не грозит, кроме потери данных. На платах с карточками обычно ставят светодиод активности карты. По нему можно понять, когда достать карточку, чтобы ничего не запороть.

Не вводите людей в заблуждение!!! С одной стороны это правда, что есть более длинные дорожки, которые обеспечивают некую последовательность подключения/отключения контактов на физическом уровне. НО...SD-карточка - это аппаратно-программное устройство. Что она делает внутри себя в момент отключения никто не знает! А по сему бестолковое поведение владельца легко может привести не только к разрушению передаваемой информации, но и уже накопленной, но и FAT, MBR, и другой служебной информации. А думаю, что только продавцы и маркетологи флешек и карточек заявляют о беспроблемности выдергивания и вставляния съёмных носителей "на горячую". 

А нам надо иметь свои мозги и меньше слушать заинтересованных в продажах лиц!


Ну и в чем я ввел в заблуждение? Зачем писать тут голословные обвинения не разобравшись в сути? Вы тем самым провоцируете на написание многих и многих страниц текста, который будет малоинфориативен остальным участникам форума, а потом обвиняете многих что пишут не по сути, хотя это не так.
Задача по вытаскиванию карточек так, чтобы там не терялись данные настолько проста на фоне остальных, что складывается впечатление, что вы новичок в программировании. Вам бы получить матчасть, почитать спецификации, а потом уже создавать темы с обвинениями других форумовчан в некомпетентности в их хобби.