Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глюки у PIC18
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
avartemiy
День добрый, если он добрый... help.gif
Вопрос на засыпку:
Может ли измениться ROM в PIC18F4520-I/P от каких-то помех?
Ситуация следующая:
Есть контроллер инкубатора, недавно работающий нормально и в какой-то момент (возможно при смене положения лотков) стал работать не стабильно, т.е. не правильно выполнять переход по меню, не в тех пределах изменять задаваемые параметры (пределы заданы #define) и т.д. Лотки ворочает 12В привод от стеклоподъемника ВАЗ-2110.
Не исправляет ситуацию даже выключение питания на длительное время.
Выкладываю схему и плату контроллера, может там баги..??
evc
Цитата(avartemiy @ Apr 21 2010, 12:13) *
...Может ли измениться ROM в PIC18F4520-I/P от каких-то помех?...
Не исправляет ситуацию даже выключение питания на длительное время...


У 18-ой серии есть возможность перезаписывать программную память в процессе работы.
Если программу не писали вы, есть две возможности: Либо плохо написана программа (не исключена возможность случайной записи во FLASH), либо тот кто писал программу, поставил "time-bomb" - через некоторое время, программа "сбивается" и вы (по идее) должны ему позвонить, что бы он это исправил (за деньги, конечно). Во втором случае помогло бы перепрограммирование микроконтроллера (поскольку внешней памяти нет), если файл прошивки у вас имеется, конечно.
Если программу писали вы, второй возможности нету. ( smile.gif , без обид!)
Попробуйте перепрограммировать PIC18F4520.
Ну и по схеме не видно что за блок питания там у вас. При включении двигателя возникает большой пусковой ток, превышающий номинальный в 10 - 20 раз...
avartemiy
1. Прогу писал я, но процедуры записи в ПЗУ не использовал вообще здесь.
2. БП трансформаторный с номинальным током обмотки транса 7А, причем обмотка питания для процессора отдельная.
Общую схему приложил.
evc
Цитата(avartemiy @ Apr 22 2010, 00:55) *
1. Прогу писал я, но процедуры записи в ПЗУ не использовал вообще здесь.

А в EEPROM пишете?
Power Up Timer включен?
Brown Out Detect?
Цитата(avartemiy @ Apr 22 2010, 00:55) *
2. БП трансформаторный с номинальным током обмотки транса 7А, причем обмотка питания для процессора отдельная.

Я бы убрал L1 и R11 (процессорный блок) и уменьшил R10 до 1к.
А что это за телефонный разъем?
В связи с этим задумайтесь, если в цепи +5В откуда ни возьмись появиться напряжение выше 5-ти, кто будет его ограничивать?
А у вас и управление нагрузками гальванически не развязано ...
Например, если получиться пик напряжения в цепи +5В, из-за L1 и C6 + C7 на выводе питания процессора существенного увеличения не произойдет, за то на вывод RST/Vpp получиться тот самый пик. Это может привести к вхождению в режим программирования.
Это общие рассуждения, раз вы сами делали весь проект, разберетесь.
Но самовольного стирания/изменения содержимого FLASH-а я не наблюдал.

ПП После 7805 рекомендуется хотя бы конденсатор 0,1мкФ ставить.
avartemiy
Цитата(evc @ Apr 22 2010, 07:44) *
А в EEPROM пишете?
Power Up Timer включен?
Brown Out Detect?

В EEPROM пишу.
Power Up Timer выключен, включить?
Brown Out Detect установлен на 2,7 В

Цитата(evc @ Apr 22 2010, 07:44) *
А что это за телефонный разъем?

Датчики подключаются DS18B20 и аналоговый влажности HIH4000.

Цитата(evc @ Apr 22 2010, 07:44) *
А у вас и управление нагрузками гальванически не развязано ...

Как не развязано? от 220В - оптроны, а от мощных 12В - реле. И резисторы в базах транзисторов и анодах оптронов должны гасить кратковременные помехи, идущие на PIC.

Цитата(evc @ Apr 22 2010, 07:44) *
Например, если получиться пик напряжения в цепи +5В, из-за L1 и C6 + C7 на выводе питания процессора существенного увеличения не произойдет, за то на вывод RST/Vpp получиться тот самый пик. Это может привести к вхождению в режим программирования.

Присмотритесь, нога RST/Vpp подтягивается к той же цепи Vpp после L1, которая и пик питает... так что должно быть так, как вы сказали "на выводе питания процессора существенного увеличения не произойдет"

Цитата(evc @ Apr 22 2010, 07:44) *
ПП После 7805 рекомендуется хотя бы конденсатор 0,1мкФ ставить.

Там он есть, но чуть дальше - возле разъема XS1
evc
Цитата(avartemiy @ Apr 22 2010, 11:43) *
В EEPROM пишу.

WREN сбрасываете после записи?
Лучше сбрасывать, причем выставлять непосредственно до, и сбрасывать сразу после.
Цитата(avartemiy @ Apr 22 2010, 11:43) *
Power Up Timer выключен, включить?

Не помешало бы.
Цитата(avartemiy @ Apr 22 2010, 11:43) *
Как не развязано?

У меня был такой случай, ПИК включал напрямую мощную емкостную нагрузку через транзистор и реле. Ну именно как у вас. Каждый раз в момент включения реле, процессор сбрасывался. Оказалось совсем тривиальная причина - реле возвращает обратно как токовый трансформатор импульс, который по питанию сбрасывает систему. Да, но посмотрели мы этот импульс осциллографом, оказался совсем не хилый такой импульсЧег вольт эдак на 30. С тех пор всегда развязываю выходы процессора оптронами (мои устройства работают в промышленной среде). Может и чуть дороже, зато (тьфу тьфу) не было больше проблем.
Цитата(avartemiy @ Apr 22 2010, 11:43) *
Присмотритесь, нога RST/Vpp подтягивается к той же цепи Vpp после L1...

Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...
ViKo
Цитата(evc @ Apr 22 2010, 12:54) *
Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...

Я бы не убирал дроссель, а переставил его на вход линейного стабилизатора, который от НЧ помех избавит, а вот от ВЧ уже не сможет.
А проблема, мне кажется, чисто в программе. Не стабильно работает, потому что так написана.
Я не нашел, Вы сравнивали содержимое PIC после сбоев со своим кодом?
evc
Цитата(ViKo @ Apr 22 2010, 18:19) *
Я бы не убирал дроссель, а переставил его на вход линейного стабилизатора...


Там хороший фильтр уже есть.
ar__systems
Цитата(evc @ Apr 22 2010, 04:54) *
Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...

Я бы тоже убрал. Оно абсолютно лишнее и вредное. Не забывайте L стабилизирует ток, что при это проихсодит с напряжением его не волнует, а вас наоборот.

А отладочные средства есть какие-то в системе? Я делал несколько систем с сенсорами, и простейший сом-порт в который я выдаю всю необходимую инфу помагает при отладке чрезвычайно. Не говоря уже о тех случаях, когда плата не пашет нормально по вине клиента (дефекты сборки) -- подключаю комп к плате, и все им наглядно показыаю. А без этого была бы попа.... Предыдущий разработчик не предусмотрел такой функции, на чем и погорел, когда начались глюки (при чем не по его вине! -- был глючный сенсор).

Если есть возможность сделать двунаправленный ком-порт, тогда вообще красота. я вставлял в свои системы возможность читать и писать произвольные адреса памяти через него. Вот сейчас бы вам это пригодилось.

ФЛЕШ из поломанной системы назад читать не пробовали?
avartemiy
Цитата(ar__systems @ Apr 22 2010, 17:21) *
ФЛЕШ из поломанной системы назад читать не пробовали?


FLASH не читал еще, та плата у клиента за 600 км, да и залочена от чтения мной же.

Возможно причина в том, что BODEN у меня был установлен на 2,7 В, а проц работает по даташиту от 4,2, от этого при броске FLASH может измениться?

Исходя из всех подсказок форумчан, сегодня поднял BODEN до 4,2В, посадил программно все не неиспользуемые ноги проца программно на землю и после программирования повесил MCLR джампером на +5В. Как думаете, этого достаточно в данной схеме?
ar__systems
Цитата(avartemiy @ Apr 22 2010, 14:00) *
FLASH не читал еще, та плата у клиента за 600 км, да и залочена от чтения мной же.

Возможно причина в том, что BODEN у меня был установлен на 2,7 В, а проц работает по даташиту от 4,2, от этого при броске FLASH может измениться?

Исходя из всех подсказок форумчан, сегодня поднял BODEN до 4,2В, посадил программно все не неиспользуемые ноги проца программно на землю и после программирования повесил MCLR джампером на +5В. Как думаете, этого достаточно в данной схеме?

Как мертвому припарки.
Operating Voltage Range (V) 2 to 5.5
Flash наврядли может слететь.
avartemiy
Цитата(ar__systems @ Apr 23 2010, 03:11) *
Operating Voltage Range (V) 2 to 5.5


- Это для LF серии.
Гляньте раздел ELECTRICAL CHARACTERISTICS, FIGURE 26-1
zksystem
Лично мне попадались два PIC18F4585 у которых через какое-то время стиралась самопроизвольно ячейка Flash памяти, замена пика на новый устранила дефект.
DL36
Цитата(avartemiy @ Apr 21 2010, 11:13) *
Есть контроллер инкубатора, недавно работающий нормально и в какой-то момент (возможно при смене положения лотков) стал работать не стабильно,

В разводке значительные ошибки, общие рекомендации "помехоустойчивые устройства"
Уже несколько раз лечил проекты начинающих подобные вещи переразводкой.
-очень желателен полигон под процессором.
-совершенно неправильно разведен разведен кварцевый генератор.
-под контроллером практически все пусто сделай земляной полигон в топе под контроллером
и пятивольтовый в боттоме. Вообще полигон далеко не лишняя вещь.
avartemiy
Кто-то защищал от записи FLASH в PIC18 путем установки битов конфигурации Table Write Protect ? Я смогу потом переписать потом его программатором, или уже нет? В даташите ничего по этому поводу не нашел...
DL36
Цитата(avartemiy @ Apr 24 2010, 19:27) *
Кто-то защищал от записи FLASH в PIC18 путем установки битов конфигурации Table Write Protect ? Я смогу потом переписать потом его программатором, или уже нет? В даташите ничего по этому поводу не нашел...
Я тоже защищал таким образом, но это была конкренная проблема пик18ф4550 причем в тойже плате пик4550лф4550 работает совершенно нормально.
Ответил там
avartemiy
Цитата(DL36 @ Apr 24 2010, 18:43) *
Я тоже защищал таким образом, но это была конкренная проблема пик18ф4550 причем в тойже плате пик4550лф4550 работает совершенно нормально.
Ответил там

Да, я увидел, спасибо!
ar__systems
Цитата(DL36 @ Apr 24 2010, 10:17) *
В разводке значительные ошибки, общие рекомендации "помехоустойчивые устройства"
Уже несколько раз лечил проекты начинающих подобные вещи переразводкой.
-очень желателен полигон под процессором.
-совершенно неправильно разведен разведен кварцевый генератор.

Да? И что же такого совершенно неправильного в разводке кварца? По мне так совершенно нормально. Земля конечно никакая, но это не показатель в чисто цифровой схеме без больших токов, работающей на 10МГц. Уж во всяком случае переразводкой проблемы этого устройства не решить.
DL36
Цитата(ar__systems @ Apr 25 2010, 00:16) *
Да? И что же такого совершенно неправильного в разводке кварца? По мне так совершенно нормально. Земля конечно никакая, но это не показатель в чисто цифровой схеме без больших токов, работающей на 10МГц. Уж во всяком случае переразводкой проблемы этого устройства не решить.

Плохая разводка усугубляет остальные проблемы.
Кварцевый генератор это основа тактирования МК на него завязано все. Очень хорошая апнота по разводке генератора есть у интела. Суть в том, что ток питания не должен проходить по цепям генератора, а в этой разводке это реализовано. Земляной провод конденсаторов генератора прямо подключен к земляному проводнику по которому протекает весь ток питания а это неправильно.

Попросите покритиковать разводку в разделе псб там еще много накидают.
dosikus
Офигительно, это что модно теперь ?
Срать на трех форумах подряд ?!
Надежда на то , что количество в качество переползет ?
ar__systems
Цитата(DL36 @ Apr 25 2010, 03:43) *
Кварцевый генератор это основа тактирования МК на него завязано все. Очень хорошая апнота по разводке генератора есть у интела. Суть в том, что ток питания не должен проходить по цепям генератора, а в этой разводке это реализовано. Земляной провод конденсаторов генератора прямо подключен к земляному проводнику по которому протекает весь ток питания а это неправильно.
Замечание в целом справедливое, хотя и не относящаяесе к сути дела. Ток протекает не весь, а только ток самого микроконтроллера, те. довольно маленький.

Интел все-таки немного с другими частотами работает и динамические токи у его процессров тоже на много выше чем у пиков.
DL36
Цитата(ar__systems @ Apr 25 2010, 16:19) *
Ток протекает не весь, а только ток самого микроконтроллера, те. довольно маленький.

Маленький или большой не знаю но по этой цепи проходит весь ток контроллера.
Цитата(ar__systems @ Apr 25 2010, 16:19) *
Интел все-таки немного с другими частотами работает и динамические токи у его процессров тоже на много выше чем у пиков.
Да конечно но и встроенного генератора у них нет, а это аналоговая цепь обладающая высоким усилением и чувствительностью.
Использовать или нет рекомендации производителей дело каждого. Но из моего личного опыта простая переразводка нескольких проектов, разведенных без учета этих рекомендаций, решало проблемы с нестабильной работой.
Всего не так много надо
-земляной полигон полностью под МК
-правильная разводка генератора
-аналоговая и цифровая земли.
Это не сложно, гораздо тяжелее воевать с ветряными мельницами.

Далее мне сказать нечего.
ar__systems
Цитата(DL36 @ Apr 25 2010, 08:59) *
-земляной полигон полностью под МК
-правильная разводка генератора
-аналоговая и цифровая земли.
Это не сложно, гораздо тяжелее воевать с ветряными мельницами.

В принципе против этого ничего не имею. Не спорю, проще сделать как надо, чем потом голову ломать.

Кстати, автор -- насчет того, что длительное отключение не помогает. Было дело, что у меня одна схема работала нестабильно -- в какой-то момент переставала работать и отключение вроде как не помогало. Фишка была в том, что при отключении питания проц уходил в brown-out-reset, и в нем мог оставаться долго, сохраняя в том числе и RAM. Проц в ресете все пины ставит в hi-z, а другой цепи разряда (кроме проца) электролит. конденсатора на VDD в схеме не было. В результате при повторном включении программа стартовала из brown-out-reset а не из power-up-reset. Кратковременное закорачивание ножек конденсатора и устройство начинало работать нормально.

Дефект программы, с одной стороны, с другой - я теперь всегда стараюсь сделать так, чтобы конденсаторы питания могли самостоятельно разрядится всегда.

Может и вас что-то такое происходит?
avartemiy
Цитата(dosikus @ Apr 25 2010, 11:35) *
Офигительно, это что модно теперь ?
Срать на трех форумах подряд ?!
Надежда на то , что количество в качество переползет ?

Почему "срать"? Я лично Вам хуже сделал?
Сроки сокращенные, вот я задал вопрос на 3-х форумах, т.к. 1 голова (форум) - хорошо, а 3 - лучше!!!

Цитата(ar__systems @ Apr 25 2010, 18:32) *
Кстати, автор -- насчет того, что длительное отключение не помогает. Было дело, что у меня одна схема работала нестабильно -- в какой-то момент переставала работать и отключение вроде как не помогало. Фишка была в том, что при отключении питания проц уходил в brown-out-reset, и в нем мог оставаться долго, сохраняя в том числе и RAM. Проц в ресете все пины ставит в hi-z, а другой цепи разряда (кроме проца) электролит. конденсатора на VDD в схеме не было. В результате при повторном включении программа стартовала из brown-out-reset а не из power-up-reset. Кратковременное закорачивание ножек конденсатора и устройство начинало работать нормально.
Может и вас что-то такое происходит?

Я думаю, что конденсаторы у меня разряжаются, т.к. на +5В подключена подсветка ЖКИ, которая потребляет 40 мА. Выключали на 10 мин, где-то.
avartemiy
В итоге в схему и конфигурацию проца внес следующие изменения:
1. Вернул в схему к выводу MCLR конденсатор 0,1 мкФ,поставил перемычку на R11, программируется нормально, хотя в мануале на PICkit2 намалеван рез. 470 Ом.
2. Зашунтировал перемычкой L1.
3. Буззер зашунтировал диодом 1N4148
4. Установил флаги запрета записи во FLASH
5. Установил конфиг. BODEN на 4,2В
6. Включил Power Up Timer
7. Установил последовательно со входами от датчиков резисторы 100 Ом.
8. Перевел все неиспользуемые выводы на выход и в лог. 0.

Схема проверялась в "жестких" условиях с понедельника - полет нормальный.

Все помогавшим огромное спасибо!!!
MisterDi
Сорри, ошибся с ответом. Прошу удалить это сообщение
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.