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

 
 
 
Reply to this topicStart new topic
> Моделирование в Протеусе I2C памяти, Некорректное поведение модели
okela
сообщение Sep 2 2005, 11:17
Сообщение #1


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

Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896



Давеча один проектик для 51-го делал и проверял работоспособность в Протеусе.
Задача выполнялась простая - записывать постранично (по 16 байт) в память типа 24с04 до упора, а затем считывать . Так вот были сделаны следующине наблюдения:
Побайтовая запись-чтение проходят без проблем, а вот со страничным режимом происходит какая-то жопа.. Причём в Протеусе 6.1- 6.5 страничная запись вообще не работает (происходит запись только 1-2 первых байт), а в последнем 6.73 вроде бы уже записывает , но не всегда стабильно, а при последующем чтении и сравнение наблюдается куча несовпадений...
Хотя даже когда запись прошла нормально (контролируется содержимое памяти) при чтении не всегда выводится правильная информация.
Долго бился головой об стенку, раз 15 просматривал код программы и ПДФ на память (нашел правда несколько некорректных моментов), подключил лог.анализатор на шину I2C, смотрю лог обмена по шине - все нормано. Но всеравно продолжаются ошибки сравнения.
После всего этого было принято решение сделать реальный девайс и проверить живьём.. Всё зароботало без проблем.

Кто-нить сталкивался с подобной траблой ?
Go to the top of the page
 
+Quote Post
bzx
сообщение Sep 2 2005, 11:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Несколько уточняющих вопросов.
1) Надеюсь, что начальный (первый) адрес, по которому Вы пишите при страничной записи в 24с04 кратен 16. Т.е. 00h, 10h, 20h и т.д.
2)После того как закончили запись страницы, т.е. после STOPа какие действия:
a) ждёте определённое время (как минимум время записи страницы);
б) обращаетесь к 24с04 и ловите ACK


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
okela
сообщение Sep 2 2005, 12:22
Сообщение #3


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

Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896



Цитата(bzx @ Sep 2 2005, 14:36)
Несколько уточняющих вопросов.
1) Надеюсь, что начальный (первый) адрес, по которому Вы пишите при страничной записи в 24с04 кратен 16. Т.е. 00h, 10h, 20h и т.д.
2)После того как закончили запись страницы, т.е. после STOPа какие действия:
  a) ждёте определённое время (как минимум время записи страницы);
  б) обращаетесь к 24с04 и ловите ACK
*


1. Да, конечно.
2. После записи страницы выжидается таймаут около 5мс, а затем производится чтение записанного.
Go to the top of the page
 
+Quote Post
bzx
сообщение Sep 2 2005, 12:59
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Впрочем, если в железе всё Ok, тогда действительно какая то фигня с Протеусом. Если хочется докопаться, проверьте компонет памяти.

PS: Рекомендую пользоваться, в дальнейшем, не таймаутом, а алгоритмом 2б. Он шустрее. К тому же, таймаут сильно зависит от Vdd а в 2б отлавливается момент, что страница записана, т.е. нет фиксированного таймаута.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
okela
сообщение Sep 2 2005, 13:10
Сообщение #5


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

Группа: Свой
Сообщений: 165
Регистрация: 11-01-05
Из: Украина, г. Одесса
Пользователь №: 1 896



Цитата(bzx @ Sep 2 2005, 15:59)
PS: Рекомендую пользоваться, в дальнейшем, не таймаутом, а алгоритмом 2б. Он шустрее. К тому же, таймаут сильно зависит от Vdd а в 2б отлавливается момент, что страница записана, т.е. нет фиксированного таймаута.
*


А можно поподробнее - что за алгоритм 2б.
Go to the top of the page
 
+Quote Post
bzx
сообщение Sep 2 2005, 14:29
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Цитата(okela @ Sep 2 2005, 16:10)
А можно поподробнее - что за алгоритм 2б.
*

Я писал
Цитата(bzx @ Sep 2 2005, 14:36)
2)После того как закончили запись страницы, т.е. после STOPа какие действия:
  б) обращаетесь к 24с04 и ловите ACK
*

Т.е. после STOPа (закончили запись страницы), в цикле:
START, CONTROL BYTE и надо отлавливать состояние ACK=0 (страница записана и разрешёна запись следующей страницы)
если ACK=1, STOP и цикл повторяется. Выйти из цикла можно по таймауту. Это на всякий случай, например, отсутствует EEPROM.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 22:26
Рейтинг@Mail.ru


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