Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись байта в AT26
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
_Артём_
Не могу понять алгоритм записи данных в микросхемах этой серии (конкретней для AT26DF161).
Непонятно вот что: в отличие от микросхем серии AT45 появилась возможность писать не страницами, а по-байтно, но нужно ли стирать байт (т.е. вернуть ячейку в состояние 0xFF)? Команды стирания байта или страницы нет (или я не нашёл?), есть только стирание блока размером от 4к. Как же тогда с тогда изменить содержимое одного дайта не стирая весь блок?
rx3apf
Цитата(_Артём_ @ Mar 10 2007, 01:50) *
Не могу понять алгоритм записи данных в микросхемах этой серии (конкретней для AT26DF161).
Непонятно вот что: в отличие от микросхем серии AT45 появилась возможность писать не страницами, а по-байтно, но нужно ли стирать байт (т.е. вернуть ячейку в состояние 0xFF)? Команды стирания байта или страницы нет (или я не нашёл?), есть только стирание блока размером от 4к. Как же тогда с тогда изменить содержимое одного дайта не стирая весь блок?

Никак. "1"-значение бита можно превратить в "0", но чтобы сделать обратное изменение - придется вычитать блок, стереть, и перезаписать.
_Артём_
Цитата(rx3apf @ Mar 10 2007, 01:18) *
Цитата(_Артём_ @ Mar 10 2007, 01:50) *

Не могу понять алгоритм записи данных в микросхемах этой серии (конкретней для AT26DF161).
Непонятно вот что: в отличие от микросхем серии AT45 появилась возможность писать не страницами, а по-байтно, но нужно ли стирать байт (т.е. вернуть ячейку в состояние 0xFF)? Команды стирания байта или страницы нет (или я не нашёл?), есть только стирание блока размером от 4к. Как же тогда с тогда изменить содержимое одного дайта не стирая весь блок?

Никак. "1"-значение бита можно превратить в "0", но чтобы сделать обратное изменение - придется вычитать блок, стереть, и перезаписать.


Понятно.
Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode?
Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново.
rx3apf
Цитата(_Артём_ @ Mar 10 2007, 02:36) *
Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode?

Это всего лишь опция записи. Стирание как требовалось, так и требуется, поскольку принцип не изменился.
Цитата(_Артём_ @ Mar 10 2007, 02:36) *
Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново.

Чтобы _записать_ - это не требуется (достаточно заранее стереть). А вот чтобы _изменить_ содержимое, отличное от FF - да, придется так и делать. Или отказаться от использования блочного FLASH, и использовать традиционную EEPROM с возможностью побайтовой модификации. Но там емкости куда меньше...
Laptop
Цитата(rx3apf @ Mar 10 2007, 03:11) *
Цитата(_Артём_ @ Mar 10 2007, 02:36) *

Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode?

Это всего лишь опция записи. Стирание как требовалось, так и требуется, поскольку принцип не изменился.

И не забывать снимать защиту с сектора при записи.
Цитата(rx3apf @ Mar 10 2007, 03:11) *
Цитата(_Артём_ @ Mar 10 2007, 02:36) *

Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново.

Чтобы _записать_ - это не требуется (достаточно заранее стереть). А вот чтобы _изменить_ содержимое, отличное от FF - да, придется так и делать. Или отказаться от использования блочного FLASH, и использовать традиционную EEPROM с возможностью побайтовой модификации. Но там емкости куда меньше...

Либо использовать AT45... У нее есть встроенный буфер к тому же.
Ноль с переносом
Здравствуйте. Столкнулся с интересным поведением AT26DF161, о котором в документации не упоминается ни слова.

При записи в Status Register любой комбинации вида xx0000xx, все Sector Protection Registers разом сбрасываются в состояние Unprotected, а при записи xx1111xx - тоже все и тоже разом переходят в состояние Protected, если только они не были зафиксированы до этого битом SPRL (новое значение этого бита, записываемое этой командой, не считается). Я конечно понимаю, что там два бита reserved, но раз уж из них читаются нули, то логично, что и записывать надо нули; а при записи, например, всех восьми нулей сбрасываются все Sector Protection Registers.
А так - всё читается, пишется, зашибись. Я даже записал в это микросхему фотографию любимого человека =)

Ребят, кто-нибудь наблюдал подобное? Или это мои недосмотры?

P.S. Я здесь недавно, поэтому новую тему создавать побоялся, на всякий случай пишу суда.
Stirliz85
Цитата(Ноль с переносом @ Feb 2 2009, 06:39) *
Здравствуйте. Столкнулся с интересным поведением AT26DF161, о котором в документации не упоминается ни слова.

При записи в Status Register любой комбинации вида xx0000xx, все Sector Protection Registers разом сбрасываются в состояние Unprotected, а при записи xx1111xx - тоже все и тоже разом переходят в состояние Protected, если только они не были зафиксированы до этого битом SPRL (новое значение этого бита, записываемое этой командой, не считается). Я конечно понимаю, что там два бита reserved, но раз уж из них читаются нули, то логично, что и записывать надо нули; а при записи, например, всех восьми нулей сбрасываются все Sector Protection Registers.
А так - всё читается, пишется, зашибись. Я даже записал в это микросхему фотографию любимого человека =)

Ребят, кто-нибудь наблюдал подобное? Или это мои недосмотры?

P.S. Я здесь недавно, поэтому новую тему создавать побоялся, на всякий случай пишу суда.


В новой документации к памяти это описано. Можно через регистр статуса глобально сбрасывать защиту
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.