Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Жесткие проблемы с I2C...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Genius1
Использую PIC18LF2520. Система состоит из 3 процессоров. Они обмениваются друг с другом по I2C. При этом один является мастером, а 2 других - слейвы. Один слейв я для отладки выключил.
Собственно суть проблемы: Мастер производит постоянное (через 10мс) чтение 16 байт с одного из слейвов. Сначала все идет по графику. А через некоторое время (может быть как 2мин, так и 40) мастер уходит в постоянную генерацию. Т.е. на линии SCL наблюдается постоянная генерация тактовых импульсов, а на SDA - постоянная 1. При этом что интересно процессор может так глючить какое-то время (обычно десятки минут) а затем восстановить нормальную работу. Перерыли казалось бы все... Кварц исправен, WDT включен на 4с., Подтяжка I2C 5,6кОм на питание.
И, кстати, еще, снимая питание с MCLR ноги обоих слейвов мастеру попрежнему кто-то в линии I2C отвечает. Фьюз = MCLREN. Так что оба слева вообще должны быть выключены... Кто тогда мастеру отвечает? Сам себе?
ПОМОГИТЕ!!! Тупим уже втроем... Все перебрали...
rezident
Используете аппаратный модуль MSSP или программный I2C? Я бы попробовал на мастере сделать программный I2C. Уж он-то при сбросе 100% обязан "затыкаться".
Genius1
Цитата(rezident @ Sep 19 2008, 22:17) *
Используете аппаратный модуль MSSP или программный I2C? Я бы попробовал на мастере сделать программный I2C. Уж он-то при сбросе 100% обязан "затыкаться".

Аппаратный MSSP... Использование программного затруднительно, т.к. слейвы одновременно работают еще и через USART.
rezident
Цитата(Genius1 @ Sep 20 2008, 00:24) *
Аппаратный MSSP... Использование программного затруднительно, т.к. слейвы одновременно работают еще и через USART.
Не, вы не поняли меня. На слейвах пускай аппаратный остается. Программный I2C попробуйте только на мастере! Генерит (по спецификации I2C имеет право генерить) SCL ведь только мастер.
Constantka
Цитата(rezident @ Sep 19 2008, 22:49) *
Генерит (по спецификации I2C имеет право генерить) SCL ведь только мастер.
могу подать идею, во время аномальной генерации посадить SDА на землю пинцетиком, если генерация осмысленная, мастер должен ждать, пока линию отпустят, но сама я так не пробовала. За неимением под рукой осциллографа с памятью на 40 минут smile.gif меня выручает ICD2 в режиме отладчика. По крайне мере можно остановить и посмотреть состояние упр. битиков MSSP.
Genius1
Спасибо отозвавшимся! Не буду пока утверждать что проблема решена, но после исправления программы срывов еще не было.
Предварительный диагноз: Модуль MSSP на слейве отключался (или включался?) в неподходящее время. Т.е. во время активности на шине. Ввел небольшой контроль активности и будем надеяться, что вуаля)

P.S. Контроллерами начал заниматься с нуля, причем уже в этом году. И это мой первый проект. Причем сложный. Так что ошибки неизбежны. Спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.