Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 51й + I2C EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
amost
Здравствуйте
совсем недавно начал работать с контроллерами, "классический" первый проэкт "бегущая строка", ну дальше в том же духе...
в своей конструкции применяю 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
Палыч
Скорее всего Вы не дожидаетесь окончания микросхемой цикла записи после соответствующей команды.

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

Вот на эту посылку NA(нет подтверждения) Вы, повсей видимости, и натыкаетесь.
amost
Огромное спасибо
после Ваших слов поглядел очередной раз документацию, есть такой раздел "Acknowledge polling" - именно то, о чем Вы говорили
буду пробовать...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.