Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Непонятная проблема с PIC16F876A
S_moke Дата: Чт, 16.05.2013, 10:06  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 1   ±
Замечания:   ±
На сайте с 16.08.2011

Статус: Offline

Добрый день!
Помогите, пожалуйста, - может у кого было что подобное.
Проблема в реальном устройстве - примерно в течение суток отваливается весь порт А и часть порта Б (см. рисунок).
По алгоритму работы включаю нагрузку (непрерывный режим работы: нажимаю старт, жду когда загорятся все светодиоды и далее нажимаю стоп) - стенд работает часов 20, а потом на нагрузке полный ноль, на выводах портов, управляющих нагрузкой также ноль. В циклическом режиме проблем нет. Причем если перезапустить стенд, то работает без вопросов некоторое время. Пробовал перезпускать порты с задержкой 20мС каждый час - не помогает. Запарился уже. Может быдло код?
Помогите, кому не лень.
Проект в архиве
Прикрепления: -1_1_5.rar (35.7 Kb)
ЯНДЕКС Дата: 16.05.2013
anatol Дата: Чт, 16.05.2013, 23:30  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 16.08.2011

Статус: Offline

Анатоль, с портами все нормально (см. рисунок) там в базах резюки по 2,2к. пик холодный, напряжения не завышены и не занижены. Корпус диповский. На счет брака и убийства - отрицательно. Так ведут себя 4 контроллера. Порты произвольно отключаются со временем, очередность рандомная.
Прикрепления: 1012379.jpg (79.6 Kb) · 7210816.jpg (199.9 Kb)

Сообщение отредактировал S_moke - Пт, 17.05.2013, 16:48
anatol Дата: Пт, 17.05.2013, 17:40  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

К сожалению много времени уделить не могу - у меня гости на полторы недели. Фото с конструктивом прояснило кое-что. Монтаж выполнен "электрическим", а не "цифровым". Большая возможность наводок через провода монтажа, в том числе и по питанию. Для начала попытайтесь "запитаться" от дополнительного стороннего источника, не увязывая в общий жгут. Потом выбор места подключения общего провода. Потом пины контролера постараться включать через RCR цепочки . Конденсатор одной ногой на землю.
Есть возможность "вылета" контроллера в непонятную область памяти и случайного зацикливания.
А время как всегда торопит - надо было вчера. Сочувствую.
dimitriy-bc Дата: Пт, 17.05.2013, 22:55  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 150
Репутация: 1   ±
Замечания:   ±
На сайте с 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
Репутация: 1   ±
Замечания:   ±
На сайте с 16.08.2011

Статус: Offline

Цитата
Есть возможность "вылета" контроллера в непонятную область памяти и случайного зацикливания.
 Можно ли про это поподробнее?
По поводу грязной сети. Сеть действительно грязная - испытательная лаборатория с большими печками тепла/холода  и кучей другого оборудования.
Земля у меня оказалась общей для всей схемы без разделения на аналоговую и цифровую (первый серьезный проект на МК) так что вполне возможны вышеперечисленные пожелания. Но если пропустить данные рекомендации и обратить внимание на факт, что в циклическом режиме ПИК ведет себя прекрасно (пусть с наводками, неправильной землей и грязной сетью) и работает сутки напролет без сбоев - станет ясна проблема - пины рандомно отваливаются со временем именно при постоянно присутствующих высоких уровнях на выходах МК. То ли ему надоедает держать единицу на выходе Port.X, то ли еще что... Глюк с питанием/по питанию привел бы к сбросу/зависанию программы, но что интересно - дисплей отображает информацию, а порты отвалились. Мое предположение - быдлокод.
anatol Дата: Сб, 18.05.2013, 10:27  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

По "зацикливанию". Если Сделать вход в программный блок не с "нуля" или другой точки входа, то набор инструкций (команд) будет совершенно другим. Очень просто "увидеть" - попытаться дизассемблировать чужую программу, особенно с картинками или другими блоками не имеющими отношения к программе.
Попасть в нее легко если деактивированы функции контроля понижения напряжения и имеются значительные помехи в цепях питания (возможно и на других пинах. Через защитные диоды пины связаны с питанием).
Подайте "землю" контроллера отдельным проводом прямо на землю блока питания (выходной конденсатор). контроллер запитайте через диод и включите конденсатор десяток микрофарад (можно электролит + керамика) прямо на ноги ПИКа.
Цитата (S_moke)
То ли ему надоедает держать единицу на выходе
Это "цифра", а не память на конденсаторах. Просто в микроисполнении, а не на текстолите. Работает аналогично дискретной логике.

Сообщение отредактировал anatol - Сб, 18.05.2013, 10:28
DAlexV Дата: Сб, 18.05.2013, 11:56  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Цитатапредположение - быдлокод.
Поддерживаю !!!! S_moke, для чего используется таймер 1 ??? Судя по коду только для отсчета времени. Тогда вопрос, зачем такие трудности в прерывании ??? Почему бы не настроить таймер на отсчет по 1 секунде(и не по 256 мкс), программа постоянно висит в прерывании, и непонятно почему еще чего то успевает делать sad . В связи с этим и вставлены дополнительная инициализация дисплея (блок GLUK:), от сюда и могут происходить отваливание не только дисплея, но и портов. Так же возможно переполнение стека(правда долго не гонял).

Успехов wink
Прикрепления: gluk.rar (136.0 Kb)


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал DAlexV - Сб, 18.05.2013, 22:25
DAlexV Дата: Сб, 08.06.2013, 00:39  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 657
Репутация: 27   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Не много подправил таймер. Успехов wink
Прикрепления: Gluk1sec.rar (136.3 Kb)


Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
S_moke Дата: Пн, 19.08.2013, 10:41  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 1   ±
Замечания:   ±
На сайте с 16.08.2011

Статус: Offline

DAlexV, спасибо - вроде бы проблемы исчезли

Добавлено (19.08.2013, 10:41)
---------------------------------------------
Возвращаюсь! Все проблемы исчезли после установки полноценного фильтра перед трансформатором и установки бусинок-ферритов по питанию МК.

Добавлено (19.08.2013, 10:41)
---------------------------------------------
Возвращаюсь! Все проблемы исчезли после установки полноценного фильтра перед трансформатором и установки бусинок-ферритов по питанию МК.

  • Страница 1 из 1
  • 1
Поиск: