Проблема c IC2
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Gerg 14 июля 2004 г. 16:33

Пока в девайсе(PIC18F452), были только таймер и память I2Cсишные, все было хорошо, но
понадобился термометр(DS1621), вот и начались проблемы. Прошу помощи у тех кто уже
с ним боролся, не откажусь от ссылок на примеры. Вопросы следующие, как я понял
любое обращение к DS1621 нчинается с записи командного байта.Ну если с запуском
преобразования все просто, Запиываем код 0xEE и все то с чтением тепературы.....
Расписываю подробно:
Даю старт SEN=1;
жду SSPIF, далее в SSBUF отправляю адрес ус-трва.(у DS1621 это 0x90) и RW=0-запись,
жду SSPIF, проверяю ACKSTAT, если ответ есть посылаю 0xAA-код чтения температуры,
жду SSPIF, проверяю ACKSTAT, если ответ есть RSEN=1, даю повторный старт,
жду SSPIF, проверяю ACKSTAT, если ответ есть посылаю адрес ус-трва.и RW=1 чтение,
жду SSPIF, проверяю ACKSTAT, если ответ есть разрешаю чтение RCEN=1,
жду SSPIF, проверяю ACKSTAT, если ответ есть читаю старший байт, даю ответ ACKEN,
жду SSPIF, проверяю ACKSTAT, если ответ есть читаю младший байт,
а вот дальше затык если даю PEN - стоп,SSPIF не взводится, если вначале ACKEN потом
PEN результам тот же да и в считанных байтах ахинея какя-то. Что не так делаю? Да,
после всего этого линия SDA в низком состоянии и надо сбрасывать питание

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru