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

 
 
> 51й + I2C EEPROM, В чем моя ошибка?
amost
сообщение Jan 15 2007, 15:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



Здравствуйте
совсем недавно начал работать с контроллерами, "классический" первый проэкт "бегущая строка", ну дальше в том же духе...
в своей конструкции применяю EEPROM типа 24cXX. насколько правильно я понял из буржуйкого даташита, микруха эта, после каждого принятого байта (в направлении от мастера к EEPROM) должна выдавать сигнал подтверждения приема (АСК). Не имея достаточного практического опыта я проверяю сигнал подтверждения следующим образом: на линию данных вывожу "1" на протяжении 9-го импульса синхронизации, после чего считываю состояние этой линии, и проверяю на наличие "1". расчет сделан на то (возможно это и ошибочно), что если EEPROM выдает "0", т.е. не подтверждает прием, соответственно к "0" притягивается и линия данных, что сигнализирует контроллеру об отсутствии подтверждения. в результате получаю зависание (зацикливание) контроллера.
интересно и то, что зависание вообще не происходит в подпрограммах чтения (хотя нижеследующая процедура там используется тоже, для передачи контрольного байта чтения), а на записи виснет сразу после второго вызова. убираю выделенные жирным шрифтом команды - все работает. понимаю, можно оставить и так, но вопрос отчего же такое случается все равно остается...

Код
byte_trans:
    mov bt_count,#8;8 bits - кол-во передаваемых бит
x16:    
    rlc a
    mov sda,c
    nop;готовность данных
    nop
    setb scl
    nop
    nop
    nop
    nop
    nop
    clr scl
    djnz bt_count,x16
x17:    
    setb sda;ACKNOWLEDGE
    nop
    nop
    nop
    nop
    nop
    setb scl
    nop
    nop
    nop
    nop
agn:
    [b]mov c,sda        ;анализ флага подтверждения (АСК) от EEPROM
    jnc agn[/b]    
    clr scl
ret


Сообщение отредактировал amost - Jan 15 2007, 15:40
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Палыч
сообщение Jan 16 2007, 11:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Скорее всего Вы не дожидаетесь окончания микросхемой цикла записи после соответствующей команды.

"При любом обращении для записи после получения посылки SP(стоп) выполняется цикл записи, длительностью не более 10мс. При обращении к микросхеме, выполняющей цикл записи, ...вместо посылки АС(подтверждение) формируется посылка NA(нет подтверждения)..."

Вот на эту посылку NA(нет подтверждения) Вы, повсей видимости, и натыкаетесь.
Go to the top of the page
 
+Quote Post
amost
сообщение Jan 16 2007, 17:01
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



Огромное спасибо
после Ваших слов поглядел очередной раз документацию, есть такой раздел "Acknowledge polling" - именно то, о чем Вы говорили
буду пробовать...
Go to the top of the page
 
+Quote Post

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

 


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


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