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

 
 
> AT45DB161D, Не пойму в чем дело ???
Metallist64
сообщение Jun 4 2009, 20:22
Сообщение #1


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Приветствую уважаемые специалисты!
Столкнулся с проблемой.
Применяю сабжевую микросхему, написал функции записи в буфер(0x84), записи из буфера(0x83), и чтение из основной памяти(0x03).
Пишу из буфера в страницы: с 0-ой по 10-ю. Т.е. пишу одно и тоже. Начинаю читать, считывает правильно ровно через одну страницу.Т.е. правильно читает 1-3-5-7-9. На четных номерах один и тот же мусор.

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

Никак не въеду в чем дело. Если кто сталкивался помогите пожалуйста!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 9)
XVR
сообщение Jun 4 2009, 21:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Ошибка где то. Сорцы будут, или нам включать телепатические способности?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 4 2009, 22:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Metallist64 @ Jun 5 2009, 02:22) *
Никак не въеду в чем дело.
Совершенно очевидно, что дело в вашей программе, которую тут пока еще никто не видел.
Go to the top of the page
 
+Quote Post
smalcom
сообщение Jun 4 2009, 23:55
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



наверно теряется младший бит адреса. рекомендую писать в страницы разную инфу и проверить не попало ли в нечетные страницы то что писалось в четные
Go to the top of the page
 
+Quote Post
plombir
сообщение Jun 5 2009, 06:11
Сообщение #5


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

Группа: Участник
Сообщений: 99
Регистрация: 14-12-05
Пользователь №: 12 191



Цитата(Metallist64 @ Jun 5 2009, 00:22) *
.. и чтение из основной памяти(0x03).

Лень качать свежий ДШ, но в моём есть опечатка. Сдвигать вправо адрес страницы надо не на 3, а на 2.
Посмотрите, может у Вас такое же.

Сообщение отредактировал plombir - Jun 5 2009, 06:16
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jun 5 2009, 07:31
Сообщение #6


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



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

Адрес страницы увеличивается после нажатия кнопки.
Между записями выдерживается пауза ~ 100мс.(стоит задержка.)
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jun 5 2009, 08:59
Сообщение #7


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Всем огромное спасибо!
Похоже я не вкурил, что изначально чип сконфигурирован на страницу в 528 байт.
Я же сдвигал все байты на из расчета, что страница 512 байт. Как только повнимательнее прочитал ДатаШитик все встало на свои места!
Еще раз всем огромное спасибо!
Go to the top of the page
 
+Quote Post
XVR
сообщение Jun 5 2009, 09:16
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Читаем 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
Чтение не смотрел.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 5 2009, 10:14
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Metallist64 @ Jun 5 2009, 11:59) *
Я же сдвигал все байты на из расчета, что страница 512 байт. Как только повнимательнее прочитал ДатаШитик все встало на свои места!
Если соберетесь переключать размер страницы на 512 байт, то обратите внимание - это дорога в один конец. Обратно на 528 переключить невозможно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jun 5 2009, 12:33
Сообщение #10


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Цитата
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.


Большое спасибо!
Данная фраза, как говориться, более чем однозначно написана.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:58
Рейтинг@Mail.ru


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