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

 
 
> EEPROM нельзя читать сразу после записи?
akken
сообщение Nov 15 2009, 22:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Нигде в документации не встречал требования к выдержке времени после записи в ЕЕПРОМ для чтения, причем не только что записанных ячеек, а следующих.
Конкретно, м/с тини2313, запись двух байт, увеличение адреса на 2, чтение 2-х байт.
Интервал требуется приличный, на 4Мгц двадцати тактов не хватает, поставил 4 мс.

Кто нибудь сталкивался с подобным? Убил два дня на пустом месте wacko.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Sergey'F
сообщение Nov 15 2009, 22:10
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(akken @ Nov 16 2009, 01:04) *
Нигде в документации не встречал требования к выдержке времени после записи в ЕЕПРОМ для чтения, причем не только что записанных ячеек, а следующих.

Вот из доки на AtMega8:
The user should poll the EEWE bit before starting the read operation. If a write operation is in progress, it is neither possible to read the EEPROM, nor to change the EEAR Register.
Go to the top of the page
 
+Quote Post
akken
сообщение Nov 15 2009, 22:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(Sergey'F @ Nov 16 2009, 01:10) *
Вот из доки на AtMega8:
The user should poll the EEWE bit before starting the read operation. If a write operation is in progress, it is neither possible to read the EEPROM, nor to change the EEAR Register.


Для записи применяю стандартную процедуру из документации Атмел, указанный бит контролируется. Здесь ( для Тини) не так прозрачно написано:

The EEPROM Program Enable Signal EEPE is the programming enable signal to the
EEPROM. When EEPE is written, the EEPROM will be programmed according to the
EEPMn bits setting. The EEMPE bit must be written to one before a logical one is written
to EEPE, otherwise no EEPROM write takes place. When the write access time has
elapsed, the EEPE bit is cleared by hardware. When EEPE has been set, the CPU is
halted for two cycles before the next instruction is executed.

Если бы я читал ячейки, которые только что записал, то насторожился бы сразу.
Теперь механика понятна, спасибо.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 15 2009, 23:57
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(akken @ Nov 16 2009, 00:42) *
Здесь ( для Тини) не так прозрачно написано:

Это просто из другой оперы.
В приведенной вами цитате написано аболютно прозрачно на тему - что надо делать для того чтобы инициировать запись.
Длительность операций стрирания и записи смотрите в табличке EEPROM Mode bits, для
Erase + Write одной ячейки указано время выполнения - 3.4ms.

В том же даташите на Tiny, секцией ниже (в которой описывается бит EERE) есть такая информация:

The user should poll the EEPE bit before starting the read operation. If a write operation is in progress, it is neither possible
to read the EEPROM, nor to change the EEAR Register.
Go to the top of the page
 
+Quote Post
akken
сообщение Nov 16 2009, 00:58
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 17-04-09
Из: UA
Пользователь №: 47 867



Цитата(defunct @ Nov 16 2009, 02:57) *
Это просто из другой оперы.
В приведенной вами цитате написано аболютно прозрачно на тему - что надо делать для того чтобы инициировать запись.
Длительность операций стрирания и записи смотрите в табличке EEPROM Mode bits, для
Erase + Write одной ячейки указано время выполнения - 3.4ms.

В том же даташите на Tiny, секцией ниже (в которой описывается бит EERE) есть такая информация:

The user should poll the EEPE bit before starting the read operation. If a write operation is in progress, it is neither possible
to read the EEPROM, nor to change the EEAR Register.




EEPROM_read:
; Wait for completion of previous write
sbic EECR,EEWE

EEPROM_write:
; Wait for completion of previous write
sbic EECR,EEPE


– – EEPM1 EEPM0 EERIE EEMPE EEPE EERE - так расписаны биты ЕЕСR

Видимо восемь лет назад, не найдя в регистре бита с именем EEWE, решил его проигнорировать smile.gif Поэтому в подпрограмме записи он есть, при чтении нету.
Век живи - век учись.
Go to the top of the page
 
+Quote Post

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

 


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


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