Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись во Flash ROM ATmega128A
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
ADEPTPS
Вопрос банальный, но как мне записать переменную (float) в постоянную память?
Палыч
Описано это в DS в разделе "Boot Loader Support". Используется команда SPM, при этом размещена она (команда) должна быть в Boot Loader Section

PS. Почему именно во Flash? Чем EEPROM не устраивает?
ADEPTPS
необходимо хранить данные в энергонезависимой памяти
hd44780
Цитата(ADEPTPS @ Feb 1 2012, 10:28) *
необходимо хранить данные в энергонезависимой памяти


EEPROM, о котором Палыч сказал, тоже энергонезависим.
А Flash писать может только бутлоадер.

Если пишете на CvAVR, объявляйте переменную:
eeprom float a;

Компилятор сам сделает всё остальное. Но помните, что EEPROM имеет ограниченный ресурс.
10000 циклов по ДШ. Некоторые говорят, что гораздо больше, но это у кого как ...

Если начнёте писать туда как попало на каждом углу, убъёте его довольно бстро
ADEPTPS
pgmspace.h вроде чарез эту библиотечку можно это сделать

Но если EEPROM так же энергонезависим, то опять же вопрос как это сделать?

Цитата(hd44780 @ Feb 1 2012, 12:41) *
Если пишете на CvAVR, объявляйте переменную:
eeprom float a;

Компилятор сам сделает всё остальное. Но помните, что EEPROM имеет ограниченный ресурс.
10000 циклов по ДШ. Некоторые говорят, что гораздо больше, но это у кого как ...

Если начнёте писать туда как попало на каждом углу, убъёте его довольно бстро


Работаю в AVR Sudio 5

таким образом у меня все надежды на avr/eeprom.h

Как тут?
Палыч
Цитата(ADEPTPS @ Feb 1 2012, 12:44) *
... то опять же вопрос как это сделать?


Смотрите DS раздел "AVR ATmega128 Memories" подраздел "EEPROM Data Memory"
hd44780
Там же до фига функций eeprom_read_ХХХХХ и eeprom_write_ХХХХХХ.
И float ы есть ....
Палыч
Цитата(hd44780 @ Feb 1 2012, 12:41) *
Но помните, что EEPROM имеет ограниченный ресурс.
10000 циклов по ДШ. Некоторые говорят, что гораздо больше, но это у кого как ...

Производитель гарантирует 100 000 циклов "запись-стирание"
zhevak
Цитата(Палыч @ Feb 1 2012, 15:02) *
Производитель гарантирует 100 000 циклов "запись-стирание"

Ага.
Причем, заметьте, это в самом худшем варианте. Плюс еще немного запаса для поддержания марки. Итого примерно 30-ти кратный запас для нормальных условий.

Несколько лет назад я специально так "высасывал" ресурс EEPROM -- проверял __реальное__ количество циклов записи-стирания. Убил две или три TINY2313, у всех примерно 3-3.5 миллиона циклов на одну и ту же ячейку. Причем, на соседние ячейки "расход" ресурса не распространяется. Условия проведения эксперимента были следующие: комнатная температура, питалово +5В, частота вроде как была 8 МГц. Примерно за час или (три часа?) микросхема "убивалась". Топик, где обсуждалось "убивание" EEPROM, был где-то здесь же на electronix-e.

После этого я сделал вывод, что AVR-ки обладают практически неисчерпаемым количеством циклов записи-стирания. Чтобы убить микросхему, нужно либо целенаправленно ее "высаживать", либо быть законченным идиотом.
Палыч
Цитата(zhevak @ Feb 1 2012, 13:26) *
...у всех примерно 3-3.5 миллиона циклов на одну и ту же ячейку.

Вероятно, Вам - "повезло". Я тоже как-то проводил подобный эксперимент: "убивание" происходило через ~280 тыс. циклов.
zhevak
Цитата(Палыч @ Feb 1 2012, 15:47) *
Вероятно, Вам - "повезло". Я тоже как-то проводил подобный эксперимент: "убивание" происходило через ~280 тыс. циклов.

Ой! Кажись сейчас нечаянно вдохновим народ на эксперименты... biggrin.gif
rx3apf
Цитата(zhevak @ Feb 1 2012, 13:26) *
Убил две или три TINY2313, у всех примерно 3-3.5 миллиона циклов на одну и ту же ячейку. Причем, на соседние ячейки "расход" ресурса не распространяется. Условия проведения эксперимента были следующие: комнатная температура, питалово +5В, частота вроде как была 8 МГц. Примерно за час или (три часа?) микросхема "убивалась".

Типично байт в EEPROM пишется около 5 mS. 3 миллиона циклов - это 15000 секунд, больше четырех часов.... Ну, если за три часа убилось - ладно. А если за час - то это ну никак не три миллиона.
hd44780
Убиваемость EEPROM - параметр недокументированный sm.gif . Диапазон значений неизвестен заранее.
zhevak
Цитата(rx3apf @ Feb 1 2012, 17:04) *
Типично байт в EEPROM пишется около 5 mS. 3 миллиона циклов - это 15000 секунд, больше четырех часов.... Ну, если за три часа убилось - ладно. А если за час - то это ну никак не три миллиона.

Да ладно Вам докапываться-то до деталей! Повторите, если уж так хочется. Не помню я, давно это было. Помню, что не сидел и не ждал окончания. Помню, что в общей сложности потратил на эксперимент два дня. Возможно это -- каждый час бегал смотреть на счетчик... Короче, на продолжительности эксперимента на заморачивался. Помню, только цифру -- более трех миллионов.
zombi
Убивал одну ячейку епрома меги162 (Typ Programming Time = 8.5 ms).
Планировал за 15 мин убить но не тут то было.
Сдохла через ~2.500.000 шесть часов томительного ожидания biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.