Jump to content

    
Sign in to follow this  
avartemiy

Глюки у PIC18

Recommended Posts

День добрый, если он добрый... :help:

Вопрос на засыпку:

Может ли измениться ROM в PIC18F4520-I/P от каких-то помех?

Ситуация следующая:

Есть контроллер инкубатора, недавно работающий нормально и в какой-то момент (возможно при смене положения лотков) стал работать не стабильно, т.е. не правильно выполнять переход по меню, не в тех пределах изменять задаваемые параметры (пределы заданы #define) и т.д. Лотки ворочает 12В привод от стеклоподъемника ВАЗ-2110.

Не исправляет ситуацию даже выключение питания на длительное время.

Выкладываю схему и плату контроллера, может там баги..??

post-36629-1271835779_thumb.png

post-36629-1271835809_thumb.png

post-36629-1271835854_thumb.jpg

post-36629-1271836630_thumb.jpg

Edited by avartemiy

Share this post


Link to post
Share on other sites
...Может ли измениться ROM в PIC18F4520-I/P от каких-то помех?...

Не исправляет ситуацию даже выключение питания на длительное время...

 

У 18-ой серии есть возможность перезаписывать программную память в процессе работы.

Если программу не писали вы, есть две возможности: Либо плохо написана программа (не исключена возможность случайной записи во FLASH), либо тот кто писал программу, поставил "time-bomb" - через некоторое время, программа "сбивается" и вы (по идее) должны ему позвонить, что бы он это исправил (за деньги, конечно). Во втором случае помогло бы перепрограммирование микроконтроллера (поскольку внешней памяти нет), если файл прошивки у вас имеется, конечно.

Если программу писали вы, второй возможности нету. ( :) , без обид!)

Попробуйте перепрограммировать PIC18F4520.

Ну и по схеме не видно что за блок питания там у вас. При включении двигателя возникает большой пусковой ток, превышающий номинальный в 10 - 20 раз...

Share this post


Link to post
Share on other sites

1. Прогу писал я, но процедуры записи в ПЗУ не использовал вообще здесь.

2. БП трансформаторный с номинальным током обмотки транса 7А, причем обмотка питания для процессора отдельная.

Общую схему приложил.

post-36629-1271882349_thumb.png

Share this post


Link to post
Share on other sites
1. Прогу писал я, но процедуры записи в ПЗУ не использовал вообще здесь.

А в EEPROM пишете?

Power Up Timer включен?

Brown Out Detect?

2. БП трансформаторный с номинальным током обмотки транса 7А, причем обмотка питания для процессора отдельная.

Я бы убрал L1 и R11 (процессорный блок) и уменьшил R10 до 1к.

А что это за телефонный разъем?

В связи с этим задумайтесь, если в цепи +5В откуда ни возьмись появиться напряжение выше 5-ти, кто будет его ограничивать?

А у вас и управление нагрузками гальванически не развязано ...

Например, если получиться пик напряжения в цепи +5В, из-за L1 и C6 + C7 на выводе питания процессора существенного увеличения не произойдет, за то на вывод RST/Vpp получиться тот самый пик. Это может привести к вхождению в режим программирования.

Это общие рассуждения, раз вы сами делали весь проект, разберетесь.

Но самовольного стирания/изменения содержимого FLASH-а я не наблюдал.

 

ПП После 7805 рекомендуется хотя бы конденсатор 0,1мкФ ставить.

Share this post


Link to post
Share on other sites
А в EEPROM пишете?

Power Up Timer включен?

Brown Out Detect?

В EEPROM пишу.

Power Up Timer выключен, включить?

Brown Out Detect установлен на 2,7 В

 

А что это за телефонный разъем?

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

 

А у вас и управление нагрузками гальванически не развязано ...

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

 

Например, если получиться пик напряжения в цепи +5В, из-за L1 и C6 + C7 на выводе питания процессора существенного увеличения не произойдет, за то на вывод RST/Vpp получиться тот самый пик. Это может привести к вхождению в режим программирования.

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

 

ПП После 7805 рекомендуется хотя бы конденсатор 0,1мкФ ставить.

Там он есть, но чуть дальше - возле разъема XS1

Share this post


Link to post
Share on other sites
В EEPROM пишу.

WREN сбрасываете после записи?

Лучше сбрасывать, причем выставлять непосредственно до, и сбрасывать сразу после.

Power Up Timer выключен, включить?

Не помешало бы.

Как не развязано?

У меня был такой случай, ПИК включал напрямую мощную емкостную нагрузку через транзистор и реле. Ну именно как у вас. Каждый раз в момент включения реле, процессор сбрасывался. Оказалось совсем тривиальная причина - реле возвращает обратно как токовый трансформатор импульс, который по питанию сбрасывает систему. Да, но посмотрели мы этот импульс осциллографом, оказался совсем не хилый такой импульсЧег вольт эдак на 30. С тех пор всегда развязываю выходы процессора оптронами (мои устройства работают в промышленной среде). Может и чуть дороже, зато (тьфу тьфу) не было больше проблем.

Присмотритесь, нога RST/Vpp подтягивается к той же цепи Vpp после L1...

Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...

Share this post


Link to post
Share on other sites
Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...

Я бы не убирал дроссель, а переставил его на вход линейного стабилизатора, который от НЧ помех избавит, а вот от ВЧ уже не сможет.

А проблема, мне кажется, чисто в программе. Не стабильно работает, потому что так написана.

Я не нашел, Вы сравнивали содержимое PIC после сбоев со своим кодом?

Share this post


Link to post
Share on other sites
Да, но я все таки L1 убрал бы. Может многие не согласятся, но мне магнитные антенны в цепи питания процессора не нужны. Тем более после линейного стабилизатора...

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

 

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

 

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

 

ФЛЕШ из поломанной системы назад читать не пробовали?

Share this post


Link to post
Share on other sites
ФЛЕШ из поломанной системы назад читать не пробовали?

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
FLASH не читал еще, та плата у клиента за 600 км, да и залочена от чтения мной же.

 

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

 

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

Как мертвому припарки.

Operating Voltage Range (V) 2 to 5.5

Flash наврядли может слететь.

Share this post


Link to post
Share on other sites

Лично мне попадались два PIC18F4585 у которых через какое-то время стиралась самопроизвольно ячейка Flash памяти, замена пика на новый устранила дефект.

Share this post


Link to post
Share on other sites
Guest DL36
Есть контроллер инкубатора, недавно работающий нормально и в какой-то момент (возможно при смене положения лотков) стал работать не стабильно,

В разводке значительные ошибки, общие рекомендации "помехоустойчивые устройства"

Уже несколько раз лечил проекты начинающих подобные вещи переразводкой.

-очень желателен полигон под процессором.

-совершенно неправильно разведен разведен кварцевый генератор.

-под контроллером практически все пусто сделай земляной полигон в топе под контроллером

и пятивольтовый в боттоме. Вообще полигон далеко не лишняя вещь.

Share this post


Link to post
Share on other sites

Кто-то защищал от записи FLASH в PIC18 путем установки битов конфигурации Table Write Protect ? Я смогу потом переписать потом его программатором, или уже нет? В даташите ничего по этому поводу не нашел...

Edited by avartemiy

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this