Страница 1 из 1
USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 15:52:11
Rovi
Господа, доброго времени суток.
Два контроллера PIC16 общаются по USART через LIN-микросхемы TPIC1021.
Через некоторое время (минут 10-15) контроллер №2 перестаёт отвечать на запросы контроллера №1, хотя все остальные функции контроллера №2 работают. На ножку контроллера №2 приходит сигнал-кодовое слово, а тот не отвечает, хотя должен отвечать по прерыванию.
Перезапустил контроллер №2- всё работает снова.
Может есть какая-то встроенная защита порта С по току/напряжению? Просто условия для функционирования контроллеров промышленные. Везде наводятся помехи с силовых линий, может срабатывает какая-то внутренняя защита порта?
Везде наставили конденсаторов, исказили фронты в байтах USART до безобразия, помех на ножке микроконтроллера уже не наблюдается, но периодически такая проблема возникает. До установки конденсаторов приёмопередатчик зависал через 3-4 минуты.
Контроллер №1 PIC16f690 кварц 20, контроллер №2 PIC16f874A кварц 4.
Может поможет программный перезапуск USART?
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:04:20
ЭлектроKOT
Увеличение времени нормальной работы с 3-4 до 10-15 минут наводит на мысль, что вы двигаетесь в правильном направлении.
Но одни только конденсаторы не панацея. Стоит использовать и другие средства: экранирование, витую пару, разведение силовых и сигнальных цепей на максимальное расстояние и т.д.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:13:04
Rovi
Кабеля экранированы, да. Наводка через общий нуль приходит, чтоли.
Больше хотелось понять механику работы контроллера, есть ли там аппаратные защиты и можно ли их сбросить?
Хотя защита не просто же так срабатывает, так долго не посбрасываешь.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:25:02
ЭлектроKOT
[uquote="Rovi",url="/forum/viewtopic.php?p=3691156#p3691156"]может срабатывает какая-то внутренняя защита порта?[/uquote]Ни разу о таком не слышал. По крайней мере, для PIC.
[uquote="Rovi",url="/forum/viewtopic.php?p=3691156#p3691156"]Везде наставили конденсаторов, исказили фронты в байтах USART до безобразия[/uquote]А это уже другая крайность, перебор.
Я бы понаблюдал осликом некоторое время на линиях USART, питания и других, что там на самом деле происходит.
А уже потом делал какие-нибудь выводы...
Есть еще вот такой букварь на эту тему:
Хабигер Э. "Электромагнитная совместимость. Основы ее обеспечения в технике" 1995г.
Думаю, как минимум стр. 88 - 106 оттуда вам стоит посмотреть.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:43:27
Rovi
Да мы уж два дня наблюдаем)
А может быть какой-то рассинхрон контроллеров? Кварцы и контроллеры разные.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:46:25
ЭлектроKOT
И все чисто? Невероятно. Сколько все это нормально отработало до появления проблем?
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Чт авг 29, 2019 16:55:14
-=Vovka=-
Опторазвязка между МК есть?
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 06:33:34
Rovi
[uquote="ЭлектроKOT",url="/forum/viewtopic.php?p=3691177#p3691177"]И все чисто? Невероятно. Сколько все это нормально отработало до появления проблем?[/uquote]
Нормально это не работало, проблемы сразу появились.
-=Vovka=- писал(а):Опторазвязка между МК есть?
Опторазвязка между МК невозможна, TPIC1021 работает если 5В контроллера и 12В канала объединены общей землёй, то есть питание обоих контроллеров завязано общим нулём через канал приёмопередачи 12В
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 06:56:33
ЭлектроKOT
[uquote="Rovi",url="/forum/viewtopic.php?p=3691430#p3691430"][uquote="ЭлектроKOT",url="/forum/viewtopic.php?p=3691177#p3691177"]Сколько все это нормально отработало до появления проблем?[/uquote]
Нормально это не работало, проблемы сразу появились.[/uquote]
Хм, в таком случае хорошо бы посмотреть на схему и ее воплощение в железе...
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 07:04:44
-=Vovka=-
[uquote="Rovi",url="/forum/viewtopic.php?p=3691430#p3691430"]питание обоих контроллеров завязано общим нулём через канал приёмопередачи 12В[/uquote]
Сомневаюсь, что никак нельзя развязать. Схему покажите
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 07:04:58
alex_
А может использовать микросхемы USART<->422, и передавать данные по диф паре, за счёт этого я полагаю многие помехи наведённые в проводах уже не будут иметь такого влияния.
И второе а есть уверенность что второй контроллер после 15 минут попросту не виснет по какой либо причине: нестабильность питания или висяк в коде, вочдог включён?
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 09:12:35
Rovi
[uquote="-=Vovka=-",url="/forum/viewtopic.php?p=3691437#p3691437"][uquote="Rovi",url="/forum/viewtopic.php?p=3691430#p3691430"]питание обоих контроллеров завязано общим нулём через канал приёмопередачи 12В[/uquote]
Сомневаюсь, что никак нельзя развязать. Схему покажите[/uquote]
1 схема - Контроллер №2, который виснет. транзисторы нужны, чтобы переключать канал на три разных контроллера, без введения адресации. По мануалу TPIC нужно землю 5В и 12В объединять. Попробую впаять вместо транзисторов оптопары сейчас.
2 схема - Контроллер №1, который работает. на 1 схеме это "LIN консоль". Вся плата №1 питается от 12VL со 2 платы.
Если кому интересно - программный перезапуск USART решает проблему, всё снова пашет. Даже без перезапуска контроллера. При чём при ошибке отпадает даже не весь PORTC, а только USART.
Добавлено after 1 minute 37 seconds:
[uquote="alex_",url="/forum/viewtopic.php?p=3691438#p3691438"]А может использовать микросхемы USART<->422, и передавать данные по диф паре, за счёт этого я полагаю многие помехи наведённые в проводах уже не будут иметь такого влияния.
И второе а есть уверенность что второй контроллер после 15 минут попросту не виснет по какой либо причине: нестабильность питания или висяк в коде, вочдог включён?[/uquote]
Спасибо за совет, в следующих проектах я подумаю над этим. В этом проекте сроки поджимают уже.
Контроллер не виснет, все остальные функции, кроме USART пашут. Собаки не имею.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 14:26:18
alex_
[uquote="Rovi",url="/forum/viewtopic.php?p=3691520#p3691520"]Спасибо за совет, в следующих проектах я подумаю над этим.[/uquote]
Если уж на то пошло, идите в сторону 485 там и диф пара и всего 2 провода на приём и передачу и устройств можно кучу понавешать на эту шину, минус только один: нужно программно разруливать общение между устройствами.
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт авг 30, 2019 17:30:27
ЭлектроKOT
[uquote="Rovi",url="/forum/viewtopic.php?p=3691520#p3691520"]1 схема
2 схема[/uquote][uquote="ЭлектроKOT",url="/forum/viewtopic.php?p=3691433#p3691433"]посмотреть на схему и ее воплощение в железе...[/uquote]
И еще: длина линии связи между МК? Что она из себя представляет (как выполнена)?
Re: USART в PIC16 перестает работать через некоторое время
Добавлено: Пт сен 06, 2019 02:59:16
КРАМ
Зависание УАРТа - это отсутствие в коде контроля за переполнением буфера OERR. Контроль должен быть сделан в суперлупе. Взведение оного бита в регистре RCSTA требует выключения-включения модуля УАРТ. Сбросить бит иначе не выйдет.