реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Запись во Flash ROM ATmega128A
ADEPTPS
сообщение Feb 1 2012, 07:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



Вопрос банальный, но как мне записать переменную (float) в постоянную память?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 1 2012, 08:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Описано это в DS в разделе "Boot Loader Support". Используется команда SPM, при этом размещена она (команда) должна быть в Boot Loader Section

PS. Почему именно во Flash? Чем EEPROM не устраивает?
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Feb 1 2012, 08:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



необходимо хранить данные в энергонезависимой памяти
Go to the top of the page
 
+Quote Post
hd44780
сообщение Feb 1 2012, 08:41
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(ADEPTPS @ Feb 1 2012, 10:28) *
необходимо хранить данные в энергонезависимой памяти


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

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

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

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

Сообщение отредактировал hd44780 - Feb 1 2012, 08:46


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Feb 1 2012, 08:52
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



pgmspace.h вроде чарез эту библиотечку можно это сделать

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

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

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

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


Работаю в AVR Sudio 5

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

Как тут?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 1 2012, 08:52
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



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


Смотрите DS раздел "AVR ATmega128 Memories" подраздел "EEPROM Data Memory"
Go to the top of the page
 
+Quote Post
hd44780
сообщение Feb 1 2012, 08:54
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Там же до фига функций eeprom_read_ХХХХХ и eeprom_write_ХХХХХХ.
И float ы есть ....


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 1 2012, 09:02
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(hd44780 @ Feb 1 2012, 12:41) *
Но помните, что EEPROM имеет ограниченный ресурс.
10000 циклов по ДШ. Некоторые говорят, что гораздо больше, но это у кого как ...

Производитель гарантирует 100 000 циклов "запись-стирание"
Go to the top of the page
 
+Quote Post
zhevak
сообщение Feb 1 2012, 09:26
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



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

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

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

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


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 1 2012, 09:47
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(zhevak @ Feb 1 2012, 13:26) *
...у всех примерно 3-3.5 миллиона циклов на одну и ту же ячейку.

Вероятно, Вам - "повезло". Я тоже как-то проводил подобный эксперимент: "убивание" происходило через ~280 тыс. циклов.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Feb 1 2012, 10:12
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



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

Ой! Кажись сейчас нечаянно вдохновим народ на эксперименты... biggrin.gif


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 1 2012, 11:04
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



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

Типично байт в EEPROM пишется около 5 mS. 3 миллиона циклов - это 15000 секунд, больше четырех часов.... Ну, если за три часа убилось - ладно. А если за час - то это ну никак не три миллиона.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Feb 1 2012, 11:17
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Убиваемость EEPROM - параметр недокументированный sm.gif . Диапазон значений неизвестен заранее.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
zhevak
сообщение Feb 1 2012, 12:18
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



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

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


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 1 2012, 14:11
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Убивал одну ячейку епрома меги162 (Typ Programming Time = 8.5 ms).
Планировал за 15 мин убить но не тут то было.
Сдохла через ~2.500.000 шесть часов томительного ожидания biggrin.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 12:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01418 секунд с 7
ELECTRONIX ©2004-2016