Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC16F886 слет Flash
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
zltigo
Имеется часть большой системы - некое устройство разработанное для заказчика некой сторонней забугороной фирмой на двух smile.gif PIC16F886. Документация на железо вся есть. Из существенного на борту кроме них еще 433MHz "Chipcon" и маломощный низкочастотный генератор работающий на магнитную антенну. Дело идет к тому sad.gif, что все это надо со временем перерабатывать. Но и текущие устройства не выбросить, а с ними проблема - с завидной регулярностью слетает Flash. В процессе работы запись во Flash не производится, но в прошивке присутствует код загрузчика. "Мопед не мой", посему это все, что на данный момент знаю. Теперь глупый вопрос - знает-ли, встречал-ли кто-то объективно-аппаратные причины к слету Flash в упомянутых чипах? Недокументированные Баги? Проблемы с EMC?...? С тем, что это вероятнее всего косяк программеров, это понятно, можно при желании стрясти с них исходники и взяться копать. Вопрос в оценке вероятности того, что в софте явных ошибок и противоречий datasheet и errata тем не менее нет.



WHALE
имею аналогичную проблему с серийной железкой производства ваших соседей по прибалтике-литовцев.
Только сделано на мегах.Тоже имеется загрузчик через 485. Переписка-перезвонка с изготовителями ничего не дала-посылают [censored].
Решил проблему наиболее дешевым и быстрым способом-запретил фьюзами запись во флэш и работу из бута.
Наверное, и в пиках тоже должна быть такая возможность?
zltigo
QUOTE (WHALE @ Jul 18 2010, 12:23) *
Наверное, и в пиках тоже должна быть такая возможность?

Не хотелось-бы такие грубые заплатки использовать, хотя производитель (не разработчик) сейчас загрузчик выбросил и говорит полегчало. Не хочется, как минимум по причине того, что устройство залито компаундом, и перепрограммирование возможно только по радиоканалу через этот самый загрузчик. И вообще устройство связано с жизнеобеспечением и оставлять в нем грабли точно не надо совсем.
@Ark
Цитата
Не хотелось-бы такие грубые заплатки использовать...

Посмотрите, что там с битами конфигурации.
Частенько забывают выключить режим низковольтного программирования, который, по умолчанию, включен. Если RB3 никуда не притянут и болтается в воздухе, то наводка на него может переводить PIC в режим программирования, со всеми вытекающими. Причем, для этого часто достаточно переключения уровней на соседних ногах.
Вторая возможная причина - импульсные наводки на MCLR, как выше питания, так и ниже земли. Даже если MCLR отключен (подключен внутренне в VDD), это может приводить к зависаниям и самопроизвольному переходу в режим программирования. В этом случае помогает внешнее подсоединение MCLR к Vdd напрямую.
zltigo
QUOTE (@Ark @ Jul 18 2010, 13:43) *
Посмотрите, что там с битами конфигурации.

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

О! он не просто болтается в воздухе, он круто болтается в воздухе - к нему чрез диод подключена катушка приемной магнитной антенны. Причем, насколько я проинформирован, эта часть софта на данный момент опциональна и еще только разрабатывается, хотя железо уже есть.
QUOTE
Вторая возможная причина - импульсные наводки на MCLR

Ну с этим достаточно обыденно - подтянут 2K и уходит на внешний разъем к которому при производстве, очевидно, подключается программатор, а потом периферийные платы. По периферийной плате он тоже бегает sad.gif, но не подключается.

Большое спасибо за "наводки"!
kolisnichenko_r
Еще может быть температурный диапазон: превышение его во время работы как в "-" так и в "+" сторону приводит к таким проблемам.
zltigo
QUOTE (kolisnichenko_r @ Jul 20 2010, 12:36) *
Еще может быть температурный диапазон: превышение его во время работы как в "-" так и в "+" сторону приводит к таким проблемам.

Такого точно нет.
ViKo
Цитата(zltigo @ Jul 18 2010, 13:01) *
... и перепрограммирование возможно только по радиоканалу через этот самый загрузчик...

И так как на 433 MHz работают все, кому ни лень, не исключается возможность, что ваше устройство воспринимает нечто с эфира, как команду к перепрограммированию.
Было дело, устройство отказывалось работать в определенное время, в определенном месте. Возможно, оттого, что рядом парковались машины. И еще процессор в компьютере работал на 433 MHz. Других объяснений я не нашел.
Если в программе есть функция стирания - перепрограммирования памяти, то рано или поздно в нее можно залететь.
zltigo
QUOTE (ViKo @ Jul 20 2010, 15:39) *
И так как на 433 MHz работают все, кому ни лень

Я протокола на данный момент не знаю, но в том месте, где оно используются никто не работает smile.gif - просто не может.
QUOTE
Возможно, оттого, что рядом парковались машины.

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

В данном случае интересуют любые гадости, КРОМЕ этой. С этой разберусь, если что. А вот если вдруг железная проблема, то тяжело искать черную....
@Ark
to zltigo: Если есть аппаратная возможность, предлагаю соединить в устройстве RB3 с землей, а MCLR c Vdd. Конечно, если есть уверенность, что на функционирование устройства это не повлияет фатальным образом. Дать поработать какое-то время. Все станет ясно достаточно быстро.
P.S. Еще можно, при работающем устройстве попробовать подтянуть RB3 к питанию. При зависании, есть большая вероятность, что режим низковольтного программирования все-таки забыли выключить.
ViKo
Я все же в первую очередь подозревал бы команду, принятую с эфира (после той причины, которая КРОМЕ).
С потерей содержимого флэш-памяти не сталкивался никогда.
А вот по висящей в воздухе ноге Rx (USART) залетал хрен знает куда.
ar__systems
Подозревать баги в железе надо в последнюю очередь. EMP по идее не может приводить к слету флеш. Бит во флеше - это грубо говоря конденсатор и FET. Его можно только радиацией сбить, если я не ошибаюсь.

А вот бутлоадер может глючить легко.
DpInRock
Предлагается убить 433 (выключить) и посмотреть. У меня подобный передатчик соединенный с конвертором USB-232 и подключенный к компу одно время просто регулярно выбивал USB(!) при работе на передачу (1 мвт) (т.е требоалось передергивать USB). А с нормальной антенной - 100% результат. Вылечилось постановкой по питанию маленькой кучки пикофарадных (1-10) конденсаторов.
zltigo
QUOTE (DpInRock @ Jul 20 2010, 20:43) *
Предлагается убить 433 (выключить) и посмотреть.

Отпадает smile.gif. Без него этому контролеру просто нечего делать.
DpInRock
Ну он все равно ведь чего-то делает. Ибо в моем случае я просто был поражен силою эффекта при такой мизерной мощности. Просто вот сошлось все. И разводка платы, и соединительные шлейфы и прочая.

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

Ибо что плохо в таких случаях - сбой по излучению зависит от схождения в одном месте кучки волшебных факторов, которые невычисляемы, непознаваемы и противостоят любым заклинаниям.
DL36
Цитата(zltigo @ Jul 20 2010, 16:15) *
А вот если вдруг железная проблема, то тяжело искать черную....
Может и железная, пример.
Клон ИСД2 если ставить pic18f4550 то приходится в конфиге запрещать все виды записи во флешь а поставив pic18Lf4550 ничего этого делать не надо. Причем первый клон в котором стоит pic18LF4550 работает до сих пор в прошивке все варианты записи разрешены и прошивка не слетала ни разу.
Я к тому что если есть подозрение на железную проблему то стоит попробовать пик с расширенным диапазоном питания.
ViKo
Цитата(zltigo @ Jul 20 2010, 16:15) *
... но в том месте, где оно используются никто не работает smile.gif - просто не может.

Блоки охранной сигнализации, например, могут переговариваться между собой на 433 MHz.
В любой системе частота не занята постоянно, значит, есть вероятность приема чего-то непредусмотренного.
zltigo
QUOTE (ViKo @ Jul 21 2010, 11:19) *
Блоки охранной сигнализации, например,

Без "например" - ну нету там никого - глухое экранированное место. Даже в танке хуже smile.gif. Кроме того, меня интересуют любые ДРУГИЕ грабли. То, до чего я могу додуматься и проверить, если я возьмусь за эту работу, я додумаюсь и проверю.
FiNik
Цитата(zltigo @ Jul 18 2010, 02:49) *
проблема - с завидной регулярностью слетает Flash.

А сбой происходит непосредственно в процессе работы или при включении (выключении) питания?
zltigo
QUOTE (FiNik @ Jul 24 2010, 00:45) *
А сбой происходит непосредственно в процессе работы или при включении (выключении) питания?

Во время работы.
FiNik
Цитата(zltigo @ Jul 18 2010, 02:49) *
проблема - с завидной регулярностью слетает Flash

Если это происходит постоянно - должна быть какая-то закономерность...
С питанием все нормально? Сброс при снижении питания в битах конфигурации установлен?
zltigo
QUOTE (FiNik @ Jul 24 2010, 14:29) *
Если это происходит постоянно - должна быть какая-то закономерность...

Очевидно да smile.gif.
QUOTE
С питанием все нормально?

Насколько я могу судить по cхеме - да. Первичный источник многоамперчасовый аккумулятор и до разряда ему очень очень далеко. Дальше LDO со стандартной обвеской.
QUOTE
Сброс при снижении питания в битах конфигурации установлен?

На данный момент я этого, как и состояния других fuses, не знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.