Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 05:59:52

Доброго времени суток. Потихоньку осваиваю Ардуино. Есть много толковых статей и видео по основам, но вот по поводу EEPROM Гугл выдает одинаковые примеры использования энергонезависимой памяти. Все очень сухо и не совсем понятно.
Мне необходимо записать в EEPROM номер телефона из переменной String. Делаю это так: EEPROM.put(0, phone);
Потом другим скетчем считываю ранее записанные данные так: EEPROM.get(0, phone); Все отображается правильно, но если отключить питание Ардуино Уно и снова подключить к компьютеру, то при считывании получается какая-то абракадабра. Почему так происходит и что можно с этим сделать?
Заранее всем спасибо за ответы :)

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 07:27:45

Nikita.Dorovskikh писал(а):другим скетчем считываю ранее записанные данные

И для чего такие манипуляции ? Обычно данные хранят в пределах одной и той же программы.

PS: А если не заливать другой скетч, данные нормально читаются ?

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 07:40:49

Nikita.Dorovskikh писал(а):другим скетчем считываю ранее записанные данные

И для чего такие манипуляции ? Обычно данные хранят в пределах одной и той же программы.

PS: А если не заливать другой скетч, данные нормально читаются ?


В пределах одной программы и заметил искажения. Просто сейчас для тестов взял ардуино нано и методом научного тыка шью ее двумя разными маленькими скетчами. Один для записи, другой для чтения. Так и так кракозябры получаются. Как-то не правильно я строку записываю видимо :?

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 11:37:14

Nikita.Dorovskikh писал(а):В пределах одной программы и заметил искажения.
Ну так и ищите проблему тоже в пределах одной программы.
Возможно, при прошивке МК, EEPROM затирается.

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 11:54:05

проверь так: 1) запиши программу записи, запиши значение в еепром
2) запиши программу чтения - считай значение еепром
3) выключи-включи питание - считай кашу из еепром :)

если работает именно так и если в программе чтения впринципе нет кода записи в еепром, то на что грешить кроме сбойного еепрома я не знаю (если такой код есть - возможно в момент голодных судорог какимто образом на него попадает управление)
Последний раз редактировалось Ivanoff-iv Вт апр 03, 2018 13:27:26, всего редактировалось 1 раз.

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 13:00:14

А ОДНОЙ программой сначала из терминального окна в макет, а затем по команде (программно или аппаратно) назад в терминалку послать?
8)
Велика вероятность того, что при записи прожки в ардуинку ВСЕ предыдущие данные ЗАТИРАЮТСЯ.
:roll:

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 17:34:00

Аlex писал(а):Возможно, при прошивке МК, EEPROM затирается.
точно стирается. нужно соответствующий фьюз поставить, чтобы при стирании флеши EEPROM не стирался.

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 17:57:03

Для ардуино IDE при заливке скотча положение о произвольном изменении фузов НЕПРИМЕНИМО.
Там работает загрузка через бутлоадер с установленными "по умолчанию для средств IDE" фузами.
Частенько "продвинутые"пользователи пользуются и непосредственной заливкой через программатор - но то и компиляция со "спецприемами" и прочие для начинающего с ардуинки "невонятными терминами/приемами".
8)

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 19:19:27

Содержимое отдельных ячеек (обычно первых) может портится если функция BOD отключена. Включите ее во фьюзах.
Вложения
eeprom.JPG
(116.01 KiB) Скачиваний: 574

Re: Искажается EEPROM после выключения питания Ардуино

Вт апр 03, 2018 19:35:20

Опять мимо - говорено же ЭТО АРДУИНО! (А не "чистый" МК под Си или под ассемблером).
А там в принципе для пользователя состав фузов НЕДОСТУПЕН - иначе невозможно вписаться в требования базовых функций "операционной системы", предоставляемых компилятором.
Более глубокое использование возможностей среды отнюдь не для начинающих.
8)

Re: Искажается EEPROM после выключения питания Ардуино

Чт апр 05, 2018 02:19:25

А там в принципе для пользователя состав фузов НЕДОСТУПЕН

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

Re: Искажается EEPROM после выключения питания Ардуино

Чт апр 05, 2018 08:25:52

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

Re: Искажается EEPROM после выключения питания Ардуино

Чт апр 05, 2018 08:43:20

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

Это уже "вторичная прошивка".
А основной код прошивает сама IDE - разговор именно об этом загрузчике.
Т.е. если в скетче выставлено заполнение ЕЕРПРОМ (прожка с изначально размещенными в ЕЕПРОМ константами) то при загрузке область ЕЕПРОМ должна быть перезаписана обязательно.
А вот заложили ли "стирание ЕЕПРОМ по умочанию" - Х/З - проверить бы не помешало...
:roll:

Re: Искажается EEPROM после выключения питания Ардуино

Чт апр 05, 2018 09:23:13

читайте внимательно
Потом другим скетчем считываю ранее записанные данные так: EEPROM.get(0, phone); Все отображается правильно, но если отключить питание Ардуино Уно и снова подключить к компьютеру, то при считывании получается какая-то абракадабра.
т.е. во время порчи информации записи не происходит.
я спрашивал о составе 2го скетча (о наличии в нём записывающего кода, пусть даже не активного), но ТС молчит...

Re: Искажается EEPROM после выключения питания Ардуино

Пн апр 23, 2018 14:22:55

1. Если не стоит fuse-бит EESAVE, при стирании кристалла EEPROM очищается.

2. Я встречал ситуацию, когда при медленно спадающем питании содержимое EEPROM повреждалось. Лечится выставлением fuse-битов BODLEVEL для уровня сброса 2.7 В или выше.

Re: Искажается EEPROM после выключения питания Ардуино

Пн апр 23, 2018 15:17:11

1) повреждение происходит не при перепрошивке.
2) я тоже встречал, но там в самой программе был код, пишущий в еепром, а это немаловажно. у ТС (как он пишет) такого кода нет... (еепромка была прописана другим скетчем).

Добавлено after 1 minute 51 second:
но, ТС давно не появлялся, думаю, он сам нашел свой косяк... только признаться стыдно :)
Ответить