Заголовок сообщения: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 15:52:11
Родился
Зарегистрирован: Пт май 18, 2018 07:27:47 Сообщений: 6
Рейтинг сообщения:0
Господа, доброго времени суток. Два контроллера PIC16 общаются по USART через LIN-микросхемы TPIC1021. Через некоторое время (минут 10-15) контроллер №2 перестаёт отвечать на запросы контроллера №1, хотя все остальные функции контроллера №2 работают. На ножку контроллера №2 приходит сигнал-кодовое слово, а тот не отвечает, хотя должен отвечать по прерыванию. Перезапустил контроллер №2- всё работает снова. Может есть какая-то встроенная защита порта С по току/напряжению? Просто условия для функционирования контроллеров промышленные. Везде наводятся помехи с силовых линий, может срабатывает какая-то внутренняя защита порта? Везде наставили конденсаторов, исказили фронты в байтах USART до безобразия, помех на ножке микроконтроллера уже не наблюдается, но периодически такая проблема возникает. До установки конденсаторов приёмопередатчик зависал через 3-4 минуты. Контроллер №1 PIC16f690 кварц 20, контроллер №2 PIC16f874A кварц 4. Может поможет программный перезапуск USART?
Увеличение времени нормальной работы с 3-4 до 10-15 минут наводит на мысль, что вы двигаетесь в правильном направлении. Но одни только конденсаторы не панацея. Стоит использовать и другие средства: экранирование, витую пару, разведение силовых и сигнальных цепей на максимальное расстояние и т.д.
_________________ Делай то, что тебе нравится и ты никогда не будешь работать
Заголовок сообщения: Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:13:04
Родился
Зарегистрирован: Пт май 18, 2018 07:27:47 Сообщений: 6
Рейтинг сообщения:0
Кабеля экранированы, да. Наводка через общий нуль приходит, чтоли. Больше хотелось понять механику работы контроллера, есть ли там аппаратные защиты и можно ли их сбросить? Хотя защита не просто же так срабатывает, так долго не посбрасываешь.
Везде наставили конденсаторов, исказили фронты в байтах USART до безобразия
А это уже другая крайность, перебор. Я бы понаблюдал осликом некоторое время на линиях USART, питания и других, что там на самом деле происходит. А уже потом делал какие-нибудь выводы...
Есть еще вот такой букварь на эту тему: Хабигер Э. "Электромагнитная совместимость. Основы ее обеспечения в технике" 1995г. Думаю, как минимум стр. 88 - 106 оттуда вам стоит посмотреть.
_________________ Делай то, что тебе нравится и ты никогда не будешь работать
Последний раз редактировалось ЭлектроKOT Чт авг 29, 2019 16:44:22, всего редактировалось 1 раз.
И все чисто? Невероятно. Сколько все это нормально отработало до появления проблем?
Нормально это не работало, проблемы сразу появились.
-=Vovka=- писал(а):
Опторазвязка между МК есть?
Опторазвязка между МК невозможна, TPIC1021 работает если 5В контроллера и 12В канала объединены общей землёй, то есть питание обоих контроллеров завязано общим нулём через канал приёмопередачи 12В
А может использовать микросхемы USART<->422, и передавать данные по диф паре, за счёт этого я полагаю многие помехи наведённые в проводах уже не будут иметь такого влияния. И второе а есть уверенность что второй контроллер после 15 минут попросту не виснет по какой либо причине: нестабильность питания или висяк в коде, вочдог включён?
питание обоих контроллеров завязано общим нулём через канал приёмопередачи 12В
Сомневаюсь, что никак нельзя развязать. Схему покажите
1 схема - Контроллер №2, который виснет. транзисторы нужны, чтобы переключать канал на три разных контроллера, без введения адресации. По мануалу TPIC нужно землю 5В и 12В объединять. Попробую впаять вместо транзисторов оптопары сейчас. 2 схема - Контроллер №1, который работает. на 1 схеме это "LIN консоль". Вся плата №1 питается от 12VL со 2 платы.
Если кому интересно - программный перезапуск USART решает проблему, всё снова пашет. Даже без перезапуска контроллера. При чём при ошибке отпадает даже не весь PORTC, а только USART.
А может использовать микросхемы USART<->422, и передавать данные по диф паре, за счёт этого я полагаю многие помехи наведённые в проводах уже не будут иметь такого влияния. И второе а есть уверенность что второй контроллер после 15 минут попросту не виснет по какой либо причине: нестабильность питания или висяк в коде, вочдог включён?
Спасибо за совет, в следующих проектах я подумаю над этим. В этом проекте сроки поджимают уже. Контроллер не виснет, все остальные функции, кроме USART пашут. Собаки не имею.
Вложения:
Комментарий к файлу: 2 схема 2.JPG [44.89 KiB]
Скачиваний: 389
Комментарий к файлу: 1 схема 1.JPG [60.88 KiB]
Скачиваний: 381
Спасибо за совет, в следующих проектах я подумаю над этим.
Если уж на то пошло, идите в сторону 485 там и диф пара и всего 2 провода на приём и передачу и устройств можно кучу понавешать на эту шину, минус только один: нужно программно разруливать общение между устройствами.
Зависание УАРТа - это отсутствие в коде контроля за переполнением буфера OERR. Контроль должен быть сделан в суперлупе. Взведение оного бита в регистре RCSTA требует выключения-включения модуля УАРТ. Сбросить бит иначе не выйдет.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения