Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT45DB161D
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Metallist64
Приветствую уважаемые специалисты!
Столкнулся с проблемой.
Применяю сабжевую микросхему, написал функции записи в буфер(0x84), записи из буфера(0x83), и чтение из основной памяти(0x03).
Пишу из буфера в страницы: с 0-ой по 10-ю. Т.е. пишу одно и тоже. Начинаю читать, считывает правильно ровно через одну страницу.Т.е. правильно читает 1-3-5-7-9. На четных номерах один и тот же мусор.

Пишу в страницу всего 4 символа.

Никак не въеду в чем дело. Если кто сталкивался помогите пожалуйста!
XVR
Ошибка где то. Сорцы будут, или нам включать телепатические способности?
rezident
Цитата(Metallist64 @ Jun 5 2009, 02:22) *
Никак не въеду в чем дело.
Совершенно очевидно, что дело в вашей программе, которую тут пока еще никто не видел.
smalcom
наверно теряется младший бит адреса. рекомендую писать в страницы разную инфу и проверить не попало ли в нечетные страницы то что писалось в четные
plombir
Цитата(Metallist64 @ Jun 5 2009, 00:22) *
.. и чтение из основной памяти(0x03).

Лень качать свежий ДШ, но в моём есть опечатка. Сдвигать вправо адрес страницы надо не на 3, а на 2.
Посмотрите, может у Вас такое же.
Metallist64
В общем скачал новый Даташитик, в нем все "по-старому", изменений нету. И биты я сдвигаю влево, а не вправо.
Сырец прикреплен. Синдром все тот же.
- Заношу данные из массива в буфер.(нажатием кнопочки)
- пишу из буфера в страницу.(нажатием второй кнопочки)
- читаю страницы. Правильно данные читаются через раз... ??? cranky.gif

Адрес страницы увеличивается после нажатия кнопки.
Между записями выдерживается пауза ~ 100мс.(стоит задержка.)
Metallist64
Всем огромное спасибо!
Похоже я не вкурил, что изначально чип сконфигурирован на страницу в 528 байт.
Я же сдвигал все байты на из расчета, что страница 512 байт. Как только повнимательнее прочитал ДатаШитик все встало на свои места!
Еще раз всем огромное спасибо!
XVR
Читаем DS (соманда записи):
Цитата
For the standard
DataFlash page size (528 bytes), the opcode must be followed by three address bytes consist of
2 don’t care bits, 12 page address bits (PA11 - PA0) that specify the page in the main memory to
be written and 10 don’t care bits. To perform a buffer to main memory page program with built-in
erase for the binary page size (512 bytes), the opcode 83H for buffer 1 or 86H for buffer 2, must
be clocked into the device followed by three address bytes consisting of 3 don’t care bits 12
page address bits (A20 - A9) that specify the page in the main memory to be written and 9 don’t
care bits.
Т.е. по умолчанию (528 байтные сектора) адрес страницы надо сдвигать на 10.
Смотрим сорец:
Код
void data_flash_buffer_to_main_memory(void)
{
  unsigned char* p_char;
  flash_receive_byte_counter = 0;
  
  page_convert = page_address;
  page_convert = page_convert << 9;
т.е. сдвигается на 9
Чтение не смотрел.
Сергей Борщ
Цитата(Metallist64 @ Jun 5 2009, 11:59) *
Я же сдвигал все байты на из расчета, что страница 512 байт. Как только повнимательнее прочитал ДатаШитик все встало на свои места!
Если соберетесь переключать размер страницы на 512 байт, то обратите внимание - это дорога в один конец. Обратно на 528 переключить невозможно.
Metallist64
Цитата
The “power of 2” page size is a one-
time programmable configuration register and once the device is configured for “power
of 2” page size, it cannot be reconfigured again.


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