Непонятная проблема с PIC16F876A
|
|
S_moke |
Дата: Чт, 16.05.2013, 10:06 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 16.08.2011
Статус:
Offline
|
Добрый день! Помогите, пожалуйста, - может у кого было что подобное. Проблема в реальном устройстве - примерно в течение суток отваливается весь порт А и часть порта Б (см. рисунок). По алгоритму работы включаю нагрузку (непрерывный режим работы: нажимаю старт, жду когда загорятся все светодиоды и далее нажимаю стоп) - стенд работает часов 20, а потом на нагрузке полный ноль, на выводах портов, управляющих нагрузкой также ноль. В циклическом режиме проблем нет. Причем если перезапустить стенд, то работает без вопросов некоторое время. Пробовал перезпускать порты с задержкой 20мС каждый час - не помогает. Запарился уже. Может быдло код? Помогите, кому не лень. Проект в архиве
|
|
|
|
anatol |
Дата: Чт, 16.05.2013, 23:30 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Ну когда научитесь проблему описывать правильно. Не новичок на сайте ведь. Вы когда нибудь заглядываете в даташит целиком? В частности, в вашем случае, глава 17.0 ELECTRICAL CHARACTERISTICS. Там что-то написано про мощность. И учтите что данные для "нормальных" условий, т.е. с отводом тепла из зоны нагрева. как у вас один бог знает. Я не знаю даже в каком корпусе пик и не от батареек ли вы питаетесь. Если по модели то завесить 2 порта надолго на 100 миллиампер только по светикам при предельном токе в 300 на весь корпус, это как детоделательный орган в тиски зажать и кричать что больно. Общем, мое предположение, тепловая блокировка кристала. Возможно и брак или убийство.
Сообщение отредактировал
anatol - Чт, 16.05.2013, 23:31
|
|
|
|
S_moke |
Дата: Пт, 17.05.2013, 16:42 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 16.08.2011
Статус:
Offline
|
Анатоль, с портами все нормально (см. рисунок) там в базах резюки по 2,2к. пик холодный, напряжения не завышены и не занижены. Корпус диповский. На счет брака и убийства - отрицательно. Так ведут себя 4 контроллера. Порты произвольно отключаются со временем, очередность рандомная.
Сообщение отредактировал
S_moke - Пт, 17.05.2013, 16:48
|
|
|
|
anatol |
Дата: Пт, 17.05.2013, 17:40 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
К сожалению много времени уделить не могу - у меня гости на полторы недели. Фото с конструктивом прояснило кое-что. Монтаж выполнен "электрическим", а не "цифровым". Большая возможность наводок через провода монтажа, в том числе и по питанию. Для начала попытайтесь "запитаться" от дополнительного стороннего источника, не увязывая в общий жгут. Потом выбор места подключения общего провода. Потом пины контролера постараться включать через RCR цепочки . Конденсатор одной ногой на землю. Есть возможность "вылета" контроллера в непонятную область памяти и случайного зацикливания. А время как всегда торопит - надо было вчера. Сочувствую.
|
|
|
|
dimitriy-bc |
Дата: Пт, 17.05.2013, 22:55 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
150
Замечания:
±
На сайте с 19.03.2012
Статус:
Offline
|
S_moke, здравствуйте. В общем, согласен с anatol. Для надежной работы микроконтроллера, 1) блок питания в грязной сети выполняется либо как импульсный, но обязательно обратноходовой, либо как у Вас, но обязательно LC фильтры как низко частотные, так и высокочастотные. 2) Земля МК, должна быть чистая. Т.е. земля микроконтроллера должна без всяких подключений подходить к стабилизатору МК и только оттуда идти к остальным потребителям. Это очень важно если в схеме используются силовые потребители или импульсные источники помех, такие как реле. В Вашей ситуации для начала, распустите и разведите все жгуты и если изделие используется в промышленной сети, то включите перед трансформатором как в фазу так и в ноль дросселя низкой частоты. Первичку трансформатора зашунтируйте емкостью. И обратите особое внимание на чистоту земли.
Сообщение отредактировал
dimitriy-bc - Пт, 17.05.2013, 22:59
|
|
|
|
S_moke |
Дата: Сб, 18.05.2013, 08:59 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 16.08.2011
Статус:
Offline
|
Цитата Есть возможность "вылета" контроллера в непонятную область памяти и случайного зацикливания. Можно ли про это поподробнее? По поводу грязной сети. Сеть действительно грязная - испытательная лаборатория с большими печками тепла/холода и кучей другого оборудования. Земля у меня оказалась общей для всей схемы без разделения на аналоговую и цифровую (первый серьезный проект на МК) так что вполне возможны вышеперечисленные пожелания. Но если пропустить данные рекомендации и обратить внимание на факт, что в циклическом режиме ПИК ведет себя прекрасно (пусть с наводками, неправильной землей и грязной сетью) и работает сутки напролет без сбоев - станет ясна проблема - пины рандомно отваливаются со временем именно при постоянно присутствующих высоких уровнях на выходах МК. То ли ему надоедает держать единицу на выходе Port.X, то ли еще что... Глюк с питанием/по питанию привел бы к сбросу/зависанию программы, но что интересно - дисплей отображает информацию, а порты отвалились. Мое предположение - быдлокод.
|
|
|
|
anatol |
Дата: Сб, 18.05.2013, 10:27 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
По "зацикливанию". Если Сделать вход в программный блок не с "нуля" или другой точки входа, то набор инструкций (команд) будет совершенно другим. Очень просто "увидеть" - попытаться дизассемблировать чужую программу, особенно с картинками или другими блоками не имеющими отношения к программе. Попасть в нее легко если деактивированы функции контроля понижения напряжения и имеются значительные помехи в цепях питания (возможно и на других пинах. Через защитные диоды пины связаны с питанием). Подайте "землю" контроллера отдельным проводом прямо на землю блока питания (выходной конденсатор). контроллер запитайте через диод и включите конденсатор десяток микрофарад (можно электролит + керамика) прямо на ноги ПИКа. Цитата (S_moke) То ли ему надоедает держать единицу на выходе Это "цифра", а не память на конденсаторах. Просто в микроисполнении, а не на текстолите. Работает аналогично дискретной логике.
Сообщение отредактировал
anatol - Сб, 18.05.2013, 10:28
|
|
|
|
DAlexV |
Дата: Сб, 18.05.2013, 11:56 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитатапредположение - быдлокод. Поддерживаю !!!! S_moke, для чего используется таймер 1 ??? Судя по коду только для отсчета времени. Тогда вопрос, зачем такие трудности в прерывании ??? Почему бы не настроить таймер на отсчет по 1 секунде(и не по 256 мкс), программа постоянно висит в прерывании, и непонятно почему еще чего то успевает делать . В связи с этим и вставлены дополнительная инициализация дисплея (блок GLUK:), от сюда и могут происходить отваливание не только дисплея, но и портов. Так же возможно переполнение стека(правда долго не гонял).
Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Сб, 18.05.2013, 22:25
|
|
|
|
DAlexV |
Дата: Сб, 08.06.2013, 00:39 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Не много подправил таймер. Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
S_moke |
Дата: Пн, 19.08.2013, 10:41 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 16.08.2011
Статус:
Offline
|
DAlexV, спасибо - вроде бы проблемы исчезли Добавлено (19.08.2013, 10:41) --------------------------------------------- Возвращаюсь! Все проблемы исчезли после установки полноценного фильтра перед трансформатором и установки бусинок-ферритов по питанию МК. Добавлено (19.08.2013, 10:41) --------------------------------------------- Возвращаюсь! Все проблемы исчезли после установки полноценного фильтра перед трансформатором и установки бусинок-ферритов по питанию МК.
|
|
|
|