PIC продолжает сбрасывать: вижу ли я побочные эффекты от использования макета?

Я использую PIC18F4680, и у меня возникают проблемы с его запуском из внешнего источника тактовой частоты 40 МГц или кристалла 10 МГц в режиме HSPLL. Использование кварцевого резонатора 10 МГц в режиме HS выглядит нормально, и кварцевый резонатор 5 МГц в режиме HSPLL также работает нормально.

Что происходит, так это то, что PIC запускается, работает несколько секунд, а затем выключается на некоторое время и снова запускается. Общий период цикла составляет около 5 секунд, из которых работа ПОС прекращается в начале второй секунды.

Я также заметил, что иногда, когда я добавляю достаточно большой разряженный конденсатор к шине питания макетной платы, PIC будет работать нормально. Интересно, что это происходит только в том случае, если я добавляю конденсатор, когда PIC уже работает. Если я подаю питание на макетную плату с конденсатором или помещаю конденсатор, который не был полностью разряжен, проблема остается.

Я читал на некоторых сайтах, что проблемы, подобные моей, могут возникать из-за повышенного энергопотребления PIC на более высокой частоте и более низком рабочем напряжении. В этих случаях, если на блоке питания происходят короткие перепады напряжения, они, скорее всего, достигнут самого низкого рабочего напряжения PIC на этой частоте, поэтому рекомендуется иметь дополнительные конденсаторы на макетной плате, чтобы решить эту проблему. Поскольку при полной нагрузке на частоте 40 МГц вся схема потребляет около 64 мА, моей первой идеей было добавить 10   мю Ф танталовые конденсаторы, надеясь, что они будут достаточно большими и будут иметь достаточно низкое ESR, чтобы решить проблему. Один не помог, второй тоже. Поэтому я добавил 100   мю Ф алюминиевый конденсатор и это тоже не помогло. Затем я добавил 470   мю Ф алюминиевый конденсатор ни к чему. В конце концов, я добавил алюминиевый электролитический конденсатор на 1 мФ, и тогда впервые схема работала нормально, пока не выключил и не включил питание. Я также должен отметить, что для целей тестирования я использую Vcc 5,5 В, что является самым высоким номинальным напряжением для этого микроконтроллера. Это должно оставить мне место до 4,2 В, что является самым низким рабочим напряжением на частоте 40 МГц.

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

Из-за длины провода, идущего от выхода генератора к входу генератора на PIC, я ожидал проблем с ним, но я не ожидал проблем с кварцем 10 МГц, который находится очень близко к контактам генератора на PIC. Также с кристаллом я ожидаю проблем и в режиме HS, если бы проблема заключалась в искажении сигнала генератора из-за макета, но в режиме HS PIC работает нормально.

Я обычно использую конденсаторы на 33 пФ для кристаллов, но я пробовал и конденсаторы на 15 пФ и не смог обнаружить никаких изменений.

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

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

У PCF8583 нет никаких проблем, и он продолжает работать правильно, даже когда PIC перезагружается, но, с другой стороны, он имеет гораздо более низкое минимальное напряжение.

К сожалению, у меня нет осциллографа, но я провел некоторые тесты со звуковой картой (частота дискретизации 96 кГц) и заметил, что когда RTC включен, в линии питания присутствует шум 25 Гц. Программа, которую я использую, сообщает о примерно 300 мВ от пика до пика, но я не знаю, насколько ей можно доверять, и я не знаю, будет ли этого достаточно, чтобы вызвать какие-либо проблемы для PIC. Когда все выключено, шум составляет около 100 мВ от пика к пику, так что все должно быть в порядке.

Если это поможет, вот изображение самой макетной платы: (щелкните правой кнопкой мыши-> просмотреть изображение в полном размере)введите описание изображения здесь

Так кто-нибудь знает, что здесь происходит?

В конце концов, я мог бы просто запустить PIC на частоте 20 МГц, но если мне потребуется больше вычислительной мощности, я бы хотел иметь возможность запускать ее на частоте 40 МГц.

ОБНОВИТЬ

Я поставил еще один регулятор на саму макетную плату, и шум, улавливаемый звуковой картой, теперь намного ниже (около 50 мВ от пика к пику), но это не повлияло на основную проблему.

Хм, я хотел предложить WDT и затемнение, но вы их отключили. Знаете ли вы, что есть некоторые опечатки с отключением для этого PIC? Я никогда не пробовал так быстро запускать PIC на макетной плате. Мы постоянно используем 18F4580 с генератором 10 МГц и HSPLL. Они работают нормально.
звучит для меня как эффект пульсации регулятора. Рябь нельзя подавить электролитическими колпачками, где твой регулятор? Идите туда и добавьте керамические колпачки с обеих сторон регулятора и отфильтруйте пульсации до такой степени, что объемная крышка может выдержать.
@Rocketmagnet Этот PIC не имеет ошибок, связанных с отключением питания. Версия, которую я использую, содержит только опечатки, связанные с MSSP. Ошибки для предыдущих версий, похоже, не применимы к моей проблеме.
@sandun dhammika У меня уже есть керамика на регуляторе. Сам регулятор мне кажется в порядке. У меня не было проблем с запуском устройств с еще более высокими тактовыми частотами и более высоким энергопотреблением, чем у этого. На всякий случай я попробую добавить регулятор на макетную плату и посмотреть, будет ли это иметь какое-то значение.
Забудьте о макетной плате (я никогда ими не пользуюсь) и используйте правильную печатную плату, это сэкономит много времени.
@ Леон Хеллер Это может сэкономить много времени, но на данный момент печатная плата дороже моего времени, тем более что у меня даже нет списка всех основных компонентов, которые я буду использовать.
Попробуйте вставить контакты заземления загрузочных колпачков кристалла прямо в землю PIC. Мои два цента и ваша 1 минута :) Я не надеюсь, что это сработает, но вы ничего не потеряете, если попробуете :)
Также, если возможно, попробуйте отключить порт MCLR и назначить его цифровым входом в словах конфигурации.
@abdullah kahraman Я пробовал оба, и это не помогло.
Если у вас есть мультиметр, попробуйте измерить Vcc, возможно, вы увидите внезапное падение, а затем рост при сбросе MCU.
@AndrejKo Это звучит как одна из тех проблем, из-за которых мне хочется свернуться клубочком и плакать. Вы УВЕРЕНЫ, что ваше время так мало стоит? Я бы просто сделал печатную плату - обычно это тоже очень весело!
@abdullah kahraman Используя мультиметр, я ничего не вижу. Звуковая карта видит только отсутствие шума, который, я думаю, создается переключением MCU.
@AngryEE К сожалению, я плохо разбираюсь в домашнем изготовлении печатных плат (на самом деле у меня есть хороший набор печатных плат, которого так и не было). Поскольку в конечном итоге мне придется сделать для этого печатную плату, я нахожусь в процессе поиска УФ-лампы, но это требует времени.
Вам не нужна УФ-лампа, мне удалось сделать 10-ю ширину строки, межстрочный интервал очень легко с помощью метода переноса тонера.
@abdullah kahraman С другой стороны, после многочисленных попыток мне вообще не удалось удалить переводную бумагу с печатной платы с помощью переноса тонера. Он всегда прилипает к печатной плате и усилия, необходимого для его перемещения, достаточно, чтобы удалить перенесенный макет на печатной плате.
@abdullah kahraman Надеюсь, я не слишком много прошу, но не могли бы вы, если у вас будет достаточно времени, объяснить в чате, как именно вы выполняете процесс переноса тонера?
Конечно.. Сейчас я вхожу в чат.
@AndrejaKo: Если вы не возражаете подождать неделю или около того, я добился большого успеха с этим групповым заказом печатных плат: dorkbotpdx.org/wiki/pcb_order . Если вы не хотите делать свой собственный, то есть
Я делаю свои собственные печатные платы, используя процесс фототравления, это очень просто: forums.parallax.com/showthread.php?137896-Making-PCBs-at-home
Конденсаторы генератора вызывают у меня желание плакать. Очень чувствителен к проблемам и огромным электромагнитным помехам. Проверьте спецификацию вашего кристалла, какой бы ни была емкость нагрузки, удвойте ее и вычтите несколько пФ для паразитной C, хотя в этой ситуации у вас могут быть 10 пФ паразитной. Cuse = (2*Cl)-Cstray Я всегда возвращаю колпачки генератора непосредственно на ближайший контакт заземления процессора, не касаясь чего-либо еще. Это само по себе может вызвать вашу проблему. В вашем случае я бы снял их с этой рейки и припаял прямо к выводу микросхемы. Проблемы со стеком в программном обеспечении также могут вызывать те же симптомы.
@ user103218 Я не уверен, что вы в курсе, но проблема в этом вопросе была решена 7 лет назад, и она не имела ничего общего с кристаллом.

Ответы (6)

Это довольно старый совет, и я не знаю, будет ли он актуален для вашего микро, но около 4 лет назад я делал проект с PIC18F, который столкнулся со странными ложными сбросами. После прочтения отчета и повторной пробежки моей памяти вот что, кажется, решило это:

У вас Low Voltage Programming Enableвключен бит конфигурации? Ваша PGMбулавка включена PORTB? Если это так, вы можете захотеть отключить оба цифровых входа Low Voltage Programming Enableи при сбросе. Port B A/D EnableСогласно моему старому отчету, происходило то, что мы оставались PORTBплавающими, в то время как они были аналоговыми входами и вызывали PGMпин. Оглядываясь назад, я не знаю, был ли этот диагноз правильным, но в итоге мы успешно завершили этот проект, так что, возможно, стоит попробовать.

Интересный! Всего несколько минут назад я заметил, что подключение программиста повлияло на проблему, и теперь этот ответ. Я отключил порт BA/D и LVP, и пока все работает нормально. Это может быть какое-то странное взаимодействие на выводе PGM.
@AndrejaKo, это звучит очень знакомо из того, что я испытал. Я надеюсь, что он останется стабильным ... привередливое оборудование может сильно разочаровать, когда вы пытаетесь что-то сделать :S
Ну, он работает нормально уже 21 минуту и ​​30 секунд. Я надеюсь, что так и останется. Я просто оставлю его включенным на ночь и посмотрю, сбрасывается ли он.
Большой! Я рад, что это решило проблему.
Сделал мой день, братан, я провел целый день, пытаясь понять, почему мой PIC 16F887 сбрасывался каждые несколько мс. Было установлено низкое напряжение в программе схемы, и плавающий контакт PGM издавал шум, запускающий сброс. +1 представитель для вас

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

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

Когда такой микроконтроллер работает неправильно, вам почти всегда приходится сосредотачиваться на основах: питание, часы и сброс. С макетной платой все три пункта сомнительны!

Подозреваемый № 1 для меня — это тактовая частота 40 МГц. 40 МГц достаточно быстро для передачи по проводу, парящему в воздухе. Еще и быстро запихнуть в макетную плату, где "система распределения сигналов" толком не рассчитана на высокие скорости. Если бы это была печатная плата, я бы посоветовал вам убедиться, что импеданс вашей трассы постоянен, и правильно завершить ваши сигналы. К сожалению, вы не можете сделать это на макетной плате. Лучшее, что я могу вам сказать, это делать провода как можно короче, а затем делать их еще короче! Используйте оскоп на тактовом сигнале, проверяемом непосредственно на контакте PIC, с проводом GND пробника также непосредственно на ближайшем контакте GND на PIC. Это многое скажет вам о ваших часах.

(Постарайтесь одолжить о-скоп, если можете. Без него будет сложно отлаживать вещи.)

Подозреваемый номер 2 — власть. Мощность также представляет собой огромную проблему с макетными платами, поскольку индуктивность и сопротивление провода относительно высоки. Опять же, держите провода короткими. Я также отмечаю, что у вас нет никаких развязывающих колпачков на генераторе 40 МГц. Для OSC я бы использовал 0,1 мкФ и что-то большее (от 4,7 мкФ до 100 мкФ) параллельно. Ваш PIC также может использовать что-то большее параллельно с крышками 0,1 мкФ. Обычно большие колпачки не требуются, но с макетной платой все в порядке.

Подозреваемый №3 сброшен. Вы не дали нам никакой информации о сигнале сброса, и я бы сказал, что это самое низкое из того, что я подозреваю, но вы все равно должны его проверить. Наденьте на него о-скоп и посмотрите, что происходит. Вы можете просто использовать вольтметр. Если напряжение на выводе сброса близко к пороговому уровню, то его необходимо исправить.

Теперь давайте рассмотрим, что вы пробовали:

Вы проделали много экспериментов с размещением колпачков на линиях электропередач, но с небольшими или запутанными результатами. Это один из тех случаев, когда вам просто нужно поставить несколько крышек и не беспокоиться о том, делают ли они что-то положительное или нет. Возможно, ваша мощность шумная, но это только одна из нескольких причин, вызывающих проблему. Добавьте конденсаторы большего размера параллельно с конденсаторами 0,1 мкФ на PIC. Добавьте колпачки к генератору 40 МГц. Убедитесь, что провода как можно короче. Затем переходите к следующему.

Дополнительные ограничения мощности — одна из тех вещей, которые вряд ли вызовут проблемы. Вот почему вы можете просто надеть их и не слишком беспокоиться о них. Особенно с конденсаторами 10-100 мкФ.

Позже, когда все заработает, вы можете снимать эти колпачки по одному и смотреть, вернется ли проблема. Если он не возвращается, значит, проблема была не в крышках. Но пока вам нужно удалить это как потенциальную проблему, но добавив заглавные буквы.

Хотя плавающие контакты могут быть проблемой, они редко бывают достаточно серьезными, чтобы вызвать сбой MCU. Это стоит исправить, так как это вызывает другие проблемы, но вряд ли проблема здесь. Примечание: простой способ предотвратить плавание неиспользуемых выводов — установить их в качестве выходов! Высокий или низкий, не имеет значения. Но если PIC управляет этими булавками, они не могут плавать.

Хороший ответ. Все эти длинные неопрятные провода просто заставили меня подумать, что попытка заставить это работать на противной макетной плате не стоила времени и страданий.
Хороший список! О результатах сообщу, когда пройду.

Вы не упомянули контакт PGM (иногда называемый LVP). Это должно быть привязано к низкому уровню или LVP отключено в конфигурационных байтах.

Вы уверены, что этот PIC может принимать 40 МГц напрямую? Некоторые могут достигать только 40 МГц через внутреннюю PLL. Я не проверял таблицу, но вы должны. Даже если это так, я бы не ожидал, что 40 МГц на макетной плате будут вести себя хорошо. Я действительно думаю, что вы сможете запустить PIC с кристаллом 10 МГц и внутренней 4-кратной ФАПЧ, если вы будете осторожны с макетной платой и поместите заглушки байпаса в нужные места.

Подобный вопрос возникает регулярно. Вместо того, чтобы повторять все типичные проблемы, см . https://electronics.stackexchange.com/a/29620/4512 .

Кажется, у нас есть два правильных ответа :)

Я должен согласиться с Дэвидом. Там так много длинных проводов, а 40МГц на макетной плате вполне оптимистично. Я не могу поверить, что ваше время действительно стоит так мало, что вы не можете позволить себе сделать небольшой прототип печатной платы . Эти вещи стоят всего около 30 фунтов стерлингов от PCB Train . Я уверен, что рядом с вами найдется кто-нибудь, кто может предоставить подобное.

Почему бы не сделать это. Разработайте печатную плату, которая имеет PIC, генератор и регулятор в качестве компонентов SMD, а затем целую загрузку перфополосных плат. Таким образом, вы все еще можете делать свои прототипы, но будьте уверены, что PIC доволен.

Перфораторная плата прототипа ПК

О, я люблю 3D Altium! Кстати, для студента £30 может быть многовато :) Лучше использовать перфорированную плату, а лучше самодельную печатную плату.
Должна получиться самодельная печатная плата, обязательно попробую с этой идеей.
@AndrejaKo - Круто. Тогда поставьте нам галочку :) - Или даже просто поставьте два ряда штыревых полосок, чтобы можно было воткнуть в макетную плату.

если у вас есть генератор внешней переменной F, рассмотрите возможность использования его для проверки макета / чипа на наличие проблем. и найдите внешнюю неисправность, которая вызывает сбой. И помните, что удлиненные заземляющие кабели действуют как антенна для перекрестных помех.

зонд выглядит так, как будто вам нужен логический зонд, dvm или осциллограф... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

Наденьте колпачок на тактовый чип V+/gnd и рассмотрите витую пару на 40 МГц, если далеко. Pic xtal имеет вход и выход. Проверьте инвертированный выход DC level = v/2? .. согревается ли Пик? ха..

Я предлагаю режим Xtal PLL 10 МГц при частоте 40 МГц, чтобы избежать проблем с компоновкой.

«Режим HSPLL использует генератор режима HS для частот до 10 МГц. Затем PLL умножает выходную частоту генератора на 4, чтобы получить внутреннюю тактовую частоту до 40 МГц. PLL доступна только для кварцевого генератора, когда Биты конфигурации FOSC3:FOSC0 запрограммированы для режима HSPLL (= 0110).

На самом деле я пытался использовать HSPLL и кварц 10 МГц, но в режиме HSPLL он показывает те же результаты, что и осциллятор. В режиме HS работает нормально.
Также PIC не нагревается во время использования, насколько я вижу.