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

 
 
> Работа с 25lc640
CSB
сообщение May 16 2006, 17:43
Сообщение #1


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Hi, All!
С форума взял исходники для работы с 25lc640, немного переделал. Добавил функцию для записи страниц (32 байта). И при проверке произходит
следующее:
1. Пишем страницу.
2. Читаем 32 байта.
Записанное и прочитанное совпадают.

1. Пишем 32 байта с помощью функции, записывающей 1 байт за раз
2. Читаем 32 байта.
Записанное и прочитанное совпадают.

1. Пишем 1 байт с помощью функции записи страницы.
2. Пишем страницу.
3. Читаем 33 байта.
Записанное и прочитанное совпадают.

//================================================================================
==

Теперь пошли баги:

1. Пишем 1 байт.
2. Пишем страницу.
3. Читаем 33 байта.
Записанное и прочитанное не совпадают. Конкретно: не записывается самый первый байт, пишется как "0".
Обмен местами пунктов 1 и 2 не дает результата.

1. Пишем 1 байт.
2. Пишем 1 байт.
3. Пишем страницу.
4. Читаем 34 байта.
Записанное и прочитанное не совпадают. Конкретно: не записывается первые два байта, пишутся как "0".

У кого какие идей возникли?

Компилятор CVAAVR 1.24.4Прикрепленный файл  25lc640.txt ( 3.51 килобайт ) Кол-во скачиваний: 225


Сообщение отредактировал CSB - May 16 2006, 18:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CSB
сообщение May 16 2006, 19:19
Сообщение #2


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



А теперь понятно. Разбивка в программе. Что-то типа такого (нужно записать 64 байта):
Код
..........
    eeprom_address = 0;
    eeprom_putbytes(eeprom_address, ptr, 32);
         eeprom_address += 32;
    eeprom_putbytes(eeprom_address, ptr + 32, 32);
.........


Только в datasheet явно про страницы ничего не сказано, кроме того что они по 32 байта. Причем это страницы для записи, т.е. память на страницы не разбита.

datasheet 25lc640

Сообщение отредактировал CSB - May 16 2006, 19:39
Go to the top of the page
 
+Quote Post
rezident
сообщение May 16 2006, 19:50
Сообщение #3


Гуру
******

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



Цитата(CSB @ May 17 2006, 01:19) *
Только в datasheet явно про страницы ничего не сказано, кроме того что они по 32 байта. Причем это страницы для записи, т.е. память на страницы не разбита.

Писать можно не более 32 байт за раз. Читать можно непрерывную последовательность байт, не превышающую разрядность внутреннего автоинкрементного счетчика (0x1FFF).
Цитата(CSB @ May 17 2006, 01:19) *
Цитата

начинать нужно с адреса не кратного странице

Почему? (где про подобное можно почитать)

раздел 3.3 Write Sequence

Цитата
Once the write enable latch is set, the user may
proceed by setting the CS low, issuing a WRITE
instruction, followed by the address, and then the data
to be written. Up to 32 bytes of data can be sent to the
25XX640 before a write cycle is necessary. The only
restriction is that all of the bytes must reside in the
same page. A page address begins with XXX0 0000
and ends with XXX1 1111. If the internal address
counter reaches XXX1 1111 and the clock continues,
the counter will roll back to the first address of the page
and overwrite any data in the page that may have been
written.


P.S. вы бы не могли остановиться в непрерывном редактировании ваших сообщений? Готовлю ответ с цитированием, глядь, а сообщение уже изменилось smile.gif
Go to the top of the page
 
+Quote Post



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

 


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


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