Программа зависает при обращении к инному контроллеру I2C PI

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 374
Зарегистрирован: Сб июл 14, 2012 09:20:09
Откуда: Украина, город Полтава

Сообщение VHEMaster »

Доброго времени суток!
У меня есть контроллеры PIC16F877A (слейвы) которые получают и отправляют данные контроллеру PIC18F252 (мастер). I2C аппаратный. Проблема в том, что если мастер обращается в первый раз к слейву №1, то остальные наглухо зависают и вообще не формируют ACK при обращении к ним. То же самое, если в первый раз обратится к слейву №2, то он принимает пакет, а остальные виснут.
И если всё время обращаться только к одному контроллеру, то он данные без проблем принимает и всегда формирует ACK.
Отладка показала, что слейв, если обращаются не к нему, программно не обрабатывает пакеты.
Исходник прикрепил.
И несколько скриншотов.
Адрес слейва, который подключён - 0x82, а 0x86 не подключён.

Изображение
Изображение
Изображение

Как видно, всё прекрасно работает пока мастер не обратится не к тому контроллеру..
Пожалуйста, укажите, в чём может быть проблема? Как её исправить?
Вложения
Вложения
Slave.rar
(1.29 КБ) 152 скачивания
Реклама
Ответить

Вернуться в «PIC»