Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Быстрая запись в EEPROM АТмеги128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Zlumd
В даташите на АТмегу128 сказано, что перед записью каждого байта в EEPROM, нужно дождаться когда флаг EEWE в регистре EECR сбросится в ноль и потом писать. На это ожидание уходит около 8 мс. Если записывать за один раз много байт, то получается слишком долго.
В разделе Parallel Programming написано, что размер страницы EEPROM 8 байт. Значит ли это, что я могу переделать процедуры записи в EEPROM так, чтобы они писали за один раз целую страницу из 8 байт, и уже потом делалось ожидание бита EEWE ? Кто-нибудь пробовал так делать?
P.S. Пишу на IAR v5.11B.
mempfis_
Цитата(Zlumd @ Jul 23 2009, 07:32) *
В разделе Parallel Programming написано, что размер страницы EEPROM 8 байт. Значит ли это, что я могу переделать процедуры записи в EEPROM так, чтобы они писали за один раз целую страницу из 8 байт, и уже потом делалось ожидание бита EEWE ? Кто-нибудь пробовал так делать?
P.S. Пишу на IAR v5.11B.


В документаци также написано The ATmega128 contains 4K bytes of data EEPROM memory. It is organized as a separate
data space, in which single bytes can be read and written.
О том что есть возможность буфферизации данных при записи еепром из секции программы или секции бутлоадера нигде не упоминается. Так что пишите побайтно или программируйте еепром при прошивке контроллера.
xelax
Постраничный доступ к eeprom из firmware невозможен для atmega. Только при параллельном программировании.
В XMegа есть возможность страничного доступа к eeprom.
defunct
Цитата(Zlumd @ Jul 23 2009, 07:32) *
Значит ли это, что я могу переделать процедуры записи в EEPROM так, чтобы они писали за один раз целую страницу из 8 байт, и уже потом делалось ожидание бита EEWE ?

Так, увы, сделать нельзя.
Но, Вы можете воспользоваться прерыванием EE READY и буферизировать самостоятельно столько данных, сколько нужно.
Zlumd
Цитата(defunct @ Jul 24 2009, 06:48) *
Так, увы, сделать нельзя.
Но, Вы можете воспользоваться прерыванием EE READY и буферизировать самостоятельно столько данных, сколько нужно.
Увы, все 4КБ оперативки забиты до отказа. Поэтому я в будущем хочу перейти на Хмегу с внешней SDRAM. Кстати, никто не знает доставабельную 8-разрядную SDRAM 8 или 16 МБайт с температурным диапазоном от -40 градусов?
defunct
Цитата(Zlumd @ Jul 24 2009, 06:45) *
Увы, все 4КБ оперативки забиты до отказа. Поэтому я в будущем хочу перейти на Хмегу с внешней SDRAM.

можно к m128 подцепить SRAM, при условии что 32-64KB хватит.

Цитата
Кстати, никто не знает доставабельную 8-разрядную SDRAM 8 или 16 МБайт с температурным диапазоном от -40 градусов?

http://www.micron.com/products/dram/sdram/partlist.aspx
Поидее все доставабельные.
sensor_ua
Цитата
Увы, все 4КБ оперативки забиты до отказа. Поэтому я в будущем хочу перейти на Хмегу с внешней SDRAM.

Для начала можно посмотреть на ATmega2561 с 8K SRAM на борту и pin-2-pin совместимую со 128-й. А насчёт SDRAM и xmega были слышны отрицательные моменты - http://caxapa.ru/160029.html. Как вариант SPI FRAM или SRAM.
Но, думаю, что в большинстве случаев можно для начала постараться утоптать программуwink.gif на предмет увеличения свободного ОЗУ за счёт ПЗУ.
Rst7
Рассмотрите вопрос использования флеша программ вместо EEPROM для хранения данных. Там можно будет писать пачками.
Zlumd
Цитата(sensor_ua @ Jul 25 2009, 13:01) *
А насчёт SDRAM и xmega были слышны отрицательные моменты - http://caxapa.ru/160029.html.
Посмотрел внимательно. Дейстительно ATXmega128A1 может только с 4-разрядной SDRAM общаться.
Цитата(defunct @ Jul 25 2009, 05:46) *
http://www.micron.com/products/dram/sdram/partlist.aspx
Поидее все доставабельные.
Среди 4-разрядных на этой странице все чипы только от 0 градусов. У самсунга из 4-х разрядных чипов только 256 Мбит, которые в ХМеге не подключишь. Так что облом получается.
defunct
Цитата(Zlumd @ Jul 27 2009, 05:03) *
Среди 4-разрядных на этой странице все чипы только от 0 градусов.

Если потеря половины емкости не смущает, можно подключить любые 4 разряда 8-ми разрядного чипа памяти.
Думаю для xmega не принципиально будет использоваться 8MB или 16MB из 16MB. И то и другое изразходовать слабо реально.
По цене, 16Mb x 4 или 16Mb x 8 тоже принципиальной разницы не составит.
Так что не все так скверно.
xelax
Цитата(Rst7 @ Jul 25 2009, 23:04) *
Рассмотрите вопрос использования флеша программ вместо EEPROM для хранения данных. Там можно будет писать пачками.


Но только из boot секции. Смысл в такой кривизне.
Rst7
Цитата
Но только из boot секции. Смысл в такой кривизне.


Не так страшен черт wink.gif Хотя, конечно, надо аккуратно подходить к вопросу.
mempfis_
Код
Так, увы, сделать нельзя.
Но, Вы можете воспользоваться прерыванием EE READY и буферизировать самостоятельно столько данных, сколько нужно.


Кстати а почему действительно не использовать буфферизацию и работу по прерыванию?
Организовуете фифо, кидаете в него данные (естественно первый байт пойдёт сразу на запись а остальные в фифо, в прерывании проверяете указатель на хвост и голову фифо, если они не равны значит ещё есть данные, извлекаете байт и пишете следующий байт в еепром и так пока не опустошите фифо).
Пока идёт запись в еепром процессор то ведь может заниматься другими задачами. Получится запись в еепром в фоновом режиме с минимальной загруженностью процессора.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.