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

 
 
> переход с AT89S8252 на AT89S8253, взаимодействие с EEPROM
_VoRoN_
сообщение Aug 17 2006, 16:04
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 3-07-06
Из: Россия, Краснодар
Пользователь №: 18 530



Если кто сталкивался с такой проблемой, поделитесь пожалуйста опытом, касательно изменения существующих программ под новый чип, особенно в части взаимодействия с EEPROM. help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pretorianec
сообщение Dec 4 2006, 13:00
Сообщение #2





Группа: Участник
Сообщений: 14
Регистрация: 18-01-06
Пользователь №: 13 317



Цитата
Заработала побайтная запись. Действительно необходимо ожидать начала и окончания записи. А так, отличия от at 89S8252 только в регистрах настроек eeprom и сторожевого таймера.


Если быть точным, то надо сначала записать 1 байт, потом проверить RDY/BUSY == 1, потом RDY/BUSY == 0, а затем RDY/BUSY = 1, и только после этого что-то делать.
Go to the top of the page
 
+Quote Post
-Tумблер-
сообщение Dec 8 2006, 18:59
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 4-11-04
Из: Московская область
Пользователь №: 1 040



Цитата(Pretorianec @ Dec 4 2006, 13:00) *
Если быть точным, то надо сначала записать 1 байт, потом проверить RDY/BUSY == 1, потом RDY/BUSY == 0, а затем RDY/BUSY = 1, и только после этого что-то делать.


У жука 8253 почему-то медленно сбрасывается флаг RDY/BUSY.
Поэтому, после начала записи надо дождаться RDY=0, потом дождаться RDY=1.
Это будет означать, что байт записан и можно начинать следующую
операцию записи.
Например, приблизительно так (IAR C):
Код
/*-------------------------------------*/
void eeprom_rdy (void)
{
for (;;) {if ((EECON & (1 << EERDY)) != 0) break;}
}
/*-------------------------------------*/
void eeprom_rdy0 (void)
{
for (;;) {if ((EECON & (1 << EERDY)) == 0) break;}
}
/*-------------------------------------*/
write_byte (word ad, byte dat)
{
data byte *pxdata;

pxdata = (byte *) (0x010000 | ad);

DI
EECON |= (1 << EEMEN) | (1 << EEMWE);
EI

*pxdata   = dat;

eeprom_rdy0 ();
eeprom_rdy   ();

DI
EECON &= ~((1 << EEMEN) | (1 << EEMWE));
EI
}
/*-------------------------------------*/


--------------------

- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
Go to the top of the page
 
+Quote Post



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

 


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


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