Форум » Программирование микроконтроллеров. » PIC16F876A помехи на PortB,6 » Ответить

PIC16F876A помехи на PortB,6

Дмитрий2212: Доброе время суток всем.В общих чертах постараюсь изложить суть проблемы.Собрал устройство на 16Ф876А.К PortB подключается 8 датчиков(релейные контакты замыкающиеся на корпус).Все работает отлично, НО обнаружился такой глюк---при косании отверткой с неизолированной ручкой PortB,6 толи сбрасывается толи сбоит.на остальных выводах такое не наблюдается.PortB настроен на вход,подтянут к +5В резистором 4,7к.В программе запрещены все виды прерываний.В интернете описана подобная проблема, предлагают таблетку 22пФ между выводом порта и корпусом, мне не помогает.Если кто сталкивался с подобными вещами прошу консультации.Заранее благодарен.

Ответов - 39

MAZ: Интересно, а зачем вы касаетесь отверткой вывода порта. Неужели так задуманно. Наверно подключаете датчик? Вы же пишите, когда не касаетесь, все нормально работает. Мне кажется это не глюк, а просто неправильное использование контроллера. Не надо тыкать в него отвертку. Он настроен на вход, всякие наводки и статика, ни к чему хорошему не приведет. Все равно, по идеи, так не должно происходить, прерываний на этом выводе никаких нет, только тактовый для программирования с тригером Шмидта. Вы пробывали поменять контроллер? И мне кажется оптимально, для датчиков на замыкание, лучше использовать вх. без ОК, подключив через резистор на корпус, а при замыкание подавать +5 на вход. Так работает надежней, если захотите при включенном контроллере менять датчик. Все на общем проводе.

Гоша Александрович: У нас на работе один монтажник регулировщику как то сказал: у меня с компьютером проблема – когда я по нему стучу, он перестает работать. Не знаешь, что это может быть?

Дмитрий2212: Насчет подключения полностью согласен.Но сделал уже так и печатки развел и получил.Экспериментировал с DIP корпусом такого не замечал.Когда перешел на SOIC проявилась такая проблемка.Конечно хотелось бы отключать датчики при включенном питании, тем более что когда контакт разомкнут получается антена т.е проводник идущий к контакту, и может достигать нескольких метров.Здесь речь идет о помехоустойчивости.Ведь остальные выводы порта стоят мертво.PortB,6 дает сбой даже если закорочен коротким проводником на корпус.Кстати говоря у PIC16F876 (Без А) такого нет (но у нас в магазине их не и не хотелось бы на них ориентироваться). когда я по нему стучу, он перестает работать. Не знаешь, что это может быть? Хотелось бы сделать устройство по которому можно слегка постучать.


igor: Дмитрий2212 пишет: Кстати говоря у PIC16F876 (Без А) такого нет С буквой А- имеет компаратор. Без буквы -нет компаратора. Может быть у Вас прерывания по входам RB6 разрешены? Посмотрите регистр INTCON. А выводы RB6 и RB7 лучше не использовать а оставлять для связи с отладчиком.

MAZ: Игорь. Компаратор, не как не подключен к RB6 и прерываний на RB6 нет . Хотя может есть какая-то внутренняя связь, раз реагирует на букву. RB6 у 876 и у 876А полностью структурно одинаковые. Тут надо какое-то схемное решение. Дмитрий, а попробуйте 2-4 последовательных диодов подключить к выводу, анодом на корпус. Может обрежет наводку. Конечно, не красиво, но попробывать можно.

Photographer: Дмитрий2212 пишет: (релейные контакты замыкающиеся на корпус) Это как? котакты релюшек? Мне избавиться от помех от релюшек и от коллекторного двигателя помогли ферритовые кольца (в дополнение к стандартным подключениям конденсаторов и диодов). Витка три спаренного провода общего и сигнального, и по питанию не помешает (зависит от схемы).

igor: MAZ пишет: Компаратор, не как не подключен к RB6 и прерываний на RB6 нет . Про компаратор - понятно. Это я просто назвал чем отличаются друг от друга корпуса с буквой и без буквы. Теперь по второму пункту. Открываем русский перевод даташита PIC16FX. В пункте 3.2 на странице 34, читаем: "...Четыре канала PORTB RB7:RB4 настроенные на вход, могут генерировать прерывания по изменению логического уровня сигнала на входе. .....Сигнал на выводах RB7:RB4 сравнивается со значением, сохранённым при последнем чтении PORTB. В случае несовпадения одного из значений устанавливается флаг RBIF(INTCON<0>), и если разрешено, генерируется прерывание..... .

MAZ: Игорь, опять склероз. Не первый раз, ты знаешь. Все правильно. Забыл. на RB0-RB3. Еще пишу и думаю, а как же отладчик будет работать без прерываний. Но RB6 у 876 и у 876А полностью структурно одинаковые. Заклинило. Удали сообщение выше. Photographer пишет: Мне избавиться от помех от релюшек Тут кажется не помеха, а хорошая наводка по амлитуде. Длинный провод, отверка, рука, тело и т.п. Феррит вряд ли поможет, но попробывать нужно. Можно и дроссель 100мгн попробывать.

Илья: С буквой А сделаны по меньшим технологическим нормам => лучше восприимчивы к помехам. НО, конструировать приборы тоже нужно правильно. Висящие в воздухе входы это очень неправильно. почитайте вот это http://microchip.com.ru/Support/MASTERs2008/EMC_ru.pdf

igor: MAZ пишет: Удали сообщение выше. Удалил.

Дмитрий2212: Большое спасибо всем за участие.Илья спасибо за литературу. С прерываниями пробовал-запрещал все виды прерываний clrf Intcon clrf PIR1 clrf PIR2 эфекта никакого.Срабатывает именно RB6,с RB7 и другими все нормально. Игорь, насчет висящих выводов в воздухе-они подтянуты через 4,7к на +5В.Разве это можно считать висящими или я не прав? Диоды эфекта не дали. Как вариант пришло в голову -у меня остался висящий вывод порта С надо бы его посадить на землю, может поможет.Вечером попробую.Еще раз всем спасибо.

igor: Неиспользуемые выводы нужно просто переконфигурировать на выход. Тогда не надо будет ничего подтягивать, и к помехам они будут невосприимчивыми. Выше Вы писали, что ставили конденсаторы по 22пф. Это очень мало. Надо не менее 00,1мкф-0,22мкф.

MAZ: igor пишет: Неиспользуемые выводы нужно просто переконфигурировать на выход. Вполне разумно. Особенно если это сделать при настройке системы. До установки на режим. После установки на режим, перейти на вход.

kaligraf: igor пишет: Неиспользуемые выводы нужно просто переконфигурировать на выход. А если вывод используется как вход, то тоже его как выход, а в программе переключать на вход только на время опроса. Должно по идее повысить помехоустойчивость...

Дмитрий2212: ... MAZ пишет: Вполне разумно. Особенно если это сделать при настройке системы. До установки на режим. После установки на режим, перейти на вход. Это я не понимаю.Обьясните.Как это настройка системы и выход на режим. kaligraf пишет: А если вывод используется как вход, то тоже его как выход, а в программе переключать на вход только на время опроса. Должно по идее повысить помехоустойчивость... Это конечно хорошая мысль.Но программа готова ,и дело даже не в том что не хочется лезть в 1241 строку,ведь также не должно быть! Хочу проработать все возможные варианты.В крайнем случае попробовать перейти без А. Дело в принципе.Не хочется спотыкаться о первый попавшийся камишек.С модулем USART разбирался неделю наверное, в итоге обнаружил что неправильно указал адрес RCREG. Так и здесь думаю на 99% моя вина гдето-чтото.Хотя люди наступали на теже грабли-(это из сохраненной страницы) Автор: Yrec (80.80.111.---) Дата: 23/01/2006 11:39 Отвечу сразу на все вопрос: C землями разбирались. Было предложение найти точку заземления.Но... Представте - на обьекте, для каждого модуля, искать точку заземления, это на мой взгляд не серьёзно. Greg предложил почитать интересную ссылку. Но для меня это не ново,всё это учитывалось. Программно вопрос практически не решался: переодически в программе делались подкачки (обновления) данных, после END прога забивалась NOPами и в конце указание на переход по адресу 0x00. Толку ни какого. Если проц вис, то до перезапуска питания не дышал. Питания разные - где КРЕН5А,а где и DS\DS (MINMAX MIV1032-вещь серьёзная). Низковольтное программирование все недолюбливают(по крайней мере у нас) поэтому LVP- Disable везде. Самое интересное, что после прострела статикой в светодиод (а - это RA5,открытый коллектор !!! PIC16F876) Проц затыкался, но после перезапуска питания снова работал!!! ЖЕЛЕЗОБЕТОННЫЕ PICи. Проблеме решилась установкой 22pF на RB6. Вроде бы так просто,но чем меньше иголка тем тяжелей её найти. Пришлось разобрать весь стог сена.

MAZ: Дмитрий2212 пишет: Это я не понимаю.Обьясните.Как это настройка системы и выход на режим. Подразумевается ваша система, я же не знаю что это. Но режим подготовки или настройки может быть, и он скорей всего есть. А потом рабочий режим, основной. Пока настраиваете, меняете, подключаете датчики и т.п. можно на вых. порт. Когда вошли в основной режим, отвертка уже не нужна, включаете на вход.

Дмитрий2212: Но это все равно работа на грани.Суть проблемы не меняется. Почему именно PortB.6? Все остальные выводы порта работают четко,а это обходные дороги.

MAZ: Если хотите докопаться до таких дебрей. Это очень хорошо. Но лучше тогда обратится к самому производителю - компании Microchip. Но они вас скорей всего отошлют к их же рекомендациям по правильному использованию контроллеров.

Дмитрий2212: Да, тоже думаю в микрочипе конкретного ответа не будет.Если что нибудь получится поделюсь.Значит буду портить печатку.

vinogrm: Дмитрий2212 Я столкнулся с точно такой же проблемой, но только с PIC16F873A. К портам RB7-RB4 подключены 4 датчика, замыкающиеся на корпус. Порт настроен на вход, подтянут резисторами. На макете все работает нормально, но в промышленном устройстве на объекте именно с портом RB6 и только с ним одним происходят неприятности. С вероятностью 0,8 при срабатывании датчика, подключенного к RB6, контроллер перестает правильно работать или зависает. Два месяца я бился с этой загадкой, проверял программу, пытался ставить конденсаторы, ставил корпуса из разных партий(думал может партия контроллеров боакованная) и т.д и т.п Результата не получил. В итоге плюнул и перекроссировал датчик на RB1, благо была возможность. RB6 не использую. Вот уже год как система работает без сбоев. Вижу что проблема не единична. Нужно писать в Microchip, можеет чего дельного ответят....

igor: Скорее всего этот глюк должен быть описан в ERRATA. Сегодня ради интереса прошерстил форум Микрочип. С подобной проблемой сталкиваются многие, и именно с контроллерами с буквой "А", и именно с выводом RB6. Поэтому не ломайте голову, перевешивайте датчик на другой вывод.

Дмитрий2212: Датчик на другой вывод -это проблема.Вариант контроллер без А.VINOGRM, а в каком корпусе 873А DIP или SOIC. Поищу по интернету без А.А насчет 873А это полный аналог 876А ,толко у 876А больше память программ и 873А в корпусе SOIC -это редкость.Я тоже сделал на 873А ,а из-за корпуса перешел на 876А.Полагаю корпус у Вас DIP.-

MAZ: Да нет, немножко 873А не совсем полный аналог 876А. 876А по удобней будет.

vinogrm: Да у меня контроллер 873А в DIP корпусе

Дмитрий2212: Шож,раз такое дело перекрою датчик на RC6.Тем более поспрашивал без буквы А и в соике это дефицит почти и стоит почему-то в 3 раза дороже. MAZ , а в чем отличие 873 от 876 кроме объема памяти программ.Я писал изначально программу на 873 а потом без проблем залил в 876.Все регистры и ноги совпадают, или это я плаваю на поверхности?

Evgeny Korabelnikov: В 873-м, все регистры общего назначения 0-го банка отображаются во 2-м банке, а все регистры общего назначения 1-го банка отображаются в 3-м банке. В 876-м, регистры общего назначения 0-го банка, c адресами 70h … 7Fh, отображаются во всех банках, а остальные не отображаются. Если этого не учитывать, то при переходе с одного на другое, возможны конфузы. Но их может и не быть. Если повезет. В этом случае, Вам повезло.

MAZ: КЕА ответил, как всегда четко и доходчиво. Мне и напрягаться не надо.

Дмитрий2212: Всем огромная БЛАГОДАРНОСТЬ.Пока не хватает времени, домашние проблемы.Обезательно доведу до ума свое устройство.Вобщем это GSM сигнализация в нее входит GSM модуль SIM300D ,пики 876 и628 -2шт DTMF декодер MT8870, голосовой Chip Coder aP89341.Все это создано благодаря Корабельникову Евгению Александровичу. Кому интересно могу поделиться (для учасников обсуждения).Вобщем все работает но единственная проблема RB6. Это переделаю.

MAZ: Переходите в постоянные участники и добро пожаловать в "Обмен". Успехов в работе!

Дмитрий2212: MAZ,а как получитьдоступ к закрытой части?

MAZ: На сайте КЕА, ссылка в верху форума, есть порядок представления полной информации. Конечно она платная. Но думаю, не пожалете. Пока из 350 человек никто не жалел.

Дмитрий2212: Для информации кому интересно. Переключил датчик на RC6, RB6-на выход проблемы исчезли.

Sergey Roslik: А в конфигурации у Вас дебагер (внутрисхемная отладка) выключен?

Дмитрий2212: К сожалению не знаю что это такое.Все делаю по Самоучителю.Но лишнего ничего не включал.Если по умолчанию включен тогда просьба обьясните что это такое и чем это грозит.Огромная благодарность за Вашу статью (Посылка команды в сотовый телефон).На начальном этапе очень помогла в работе.

Sergey Roslik: Так в самоучителе это вроде всё расписано, поищите "биты конфигурации", вроде DEBUGER. На работе материала у меня нет, точно не могу сказать какой раздел. Но смысл в том, что задействуется внутрисхемная отладка микроконтроллера, в которой участвуют RB6 и RB7. Может с этим както связанно. А лучше использовать RB6 и RB7 для отладки.

MAZ: _DEBUG_OFF в конце строки конфигурации. Но если поставите DEBUG_ON, точно прошивка работать не будет без подключения отладчика. Поэтому маловероятно, что включили режим отладчика.

Sergey Roslik: MAZ пишет: точно прошивка работать не будет без подключения отладчика. Я иногда забываю отключать, но у меня работает.

Алексей: MAZ пишет: точно прошивка работать не будет без подключения отладчика. Да в общем то все прекрасно работает. Точно не работает если прошивку залить именно в режиме отладчика...

MAZ: У меня ни разу не проскочило. Все равно были проблемы.



полная версия страницы