Страница 1 из 1

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

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

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

Добавлено: Вт апр 03, 2018 07:27:45
Аlex
Nikita.Dorovskikh писал(а):другим скетчем считываю ранее записанные данные

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

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

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

Добавлено: Вт апр 03, 2018 07:40:49
Nikita.Dorovskikh
[uquote="Аlex",url="/forum/viewtopic.php?p=3345135#p3345135"]
Nikita.Dorovskikh писал(а):другим скетчем считываю ранее записанные данные

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

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

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

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

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

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

Добавлено: Вт апр 03, 2018 11:54:05
Ivanoff-iv
проверь так: 1) запиши программу записи, запиши значение в еепром
2) запиши программу чтения - считай значение еепром
3) выключи-включи питание - считай кашу из еепром :)

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

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

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

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

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

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

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

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

Добавлено: Вт апр 03, 2018 19:19:27
Feruz
Содержимое отдельных ячеек (обычно первых) может портится если функция BOD отключена. Включите ее во фьюзах.

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

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

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

Добавлено: Чт апр 05, 2018 02:19:25
arkhnchul
[uquote="BOB51",url="/forum/viewtopic.php?p=3345731#p3345731"]А там в принципе для пользователя состав фузов НЕДОСТУПЕН[/uquote]
там прям в комплекте положен avrdude, которым, собственно, ардуинская среда и льет прошивки. Имея вторую ардуину, из нее можно соорудить программатор (скетч для него тож в комплекте со средой) и ковырять фьюзы как угодно.

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

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

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

Добавлено: Чт апр 05, 2018 08:43:20
BOB51
[uquote="arkhnchul",url="/forum/viewtopic.php?p=3346602#p3346602"]...
там прям в комплекте положен avrdude, которым, собственно, ардуинская среда и льет прошивки. Имея вторую ардуину, из нее можно соорудить программатор (скетч для него тож в комплекте со средой) и ковырять фьюзы как угодно.[/uquote]
Это уже "вторичная прошивка".
А основной код прошивает сама IDE - разговор именно об этом загрузчике.
Т.е. если в скетче выставлено заполнение ЕЕРПРОМ (прожка с изначально размещенными в ЕЕПРОМ константами) то при загрузке область ЕЕПРОМ должна быть перезаписана обязательно.
А вот заложили ли "стирание ЕЕПРОМ по умочанию" - Х/З - проверить бы не помешало...
:roll:

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

Добавлено: Чт апр 05, 2018 09:23:13
Ivanoff-iv
читайте внимательно[uquote="Nikita.Dorovskikh",url="/forum/viewtopic.php?p=3345120#p3345120"]Потом другим скетчем считываю ранее записанные данные так: EEPROM.get(0, phone); Все отображается правильно, но если отключить питание Ардуино Уно и снова подключить к компьютеру, то при считывании получается какая-то абракадабра.[/uquote] т.е. во время порчи информации записи не происходит.
я спрашивал о составе 2го скетча (о наличии в нём записывающего кода, пусть даже не активного), но ТС молчит...

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

Добавлено: Пн апр 23, 2018 14:22:55
YS
1. Если не стоит fuse-бит EESAVE, при стирании кристалла EEPROM очищается.

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

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

Добавлено: Пн апр 23, 2018 15:17:11
Ivanoff-iv
1) повреждение происходит не при перепрошивке.
2) я тоже встречал, но там в самой программе был код, пишущий в еепром, а это немаловажно. у ТС (как он пишет) такого кода нет... (еепромка была прописана другим скетчем).

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