На днях столкнулся со странной неисправностью.
Дано: 4 одинаковых платы на контроллере MSP430F2618. Плата подключается к компьютеру через COM-порт, в качестве преобразователя уровней на плате установлена MAX3232. Прошивка везде одинаковая, компьютер и софт тоже одни и те же.
3 платы работают без вопросов, одна же вытворяет чудеса. А конкретно - через какое-то время она перестает отвечать по UART. Модуль UART тактируется от SMCLK (ВЧ кварц на 11.0592 МГц).
При первых разборках оказалось, что срывается генерация на ВЧ кварце, пробовал менять кварц - не помогает.
Тогда переделал прошивку на работу от DCO, который калибруется по НЧ генератору на часовом кварце. Первый запуск - полет нормальный, UART работает. Прошло пару часов.. Такая же хрень! Процессор перестал отвечать.
Причем, ни ресет, ни полное обесточивание платы работоспособность не восстанавливают (перепрошивка тоже). Для того, чтобы она заработала, необходимо было обесточить плату на несколько минут! Никаких больших емкостей на плате нет, нагреваться тоже нечему.
Загнать процессор в этот зависон удавалось многократно в течение дня, в том числе под отладчиком. При дебаге выяснилось, что в таком состоянии, прерывание по приему байта происходит, однако, принимается мусор (0xFF).
Но и это еще не все, я взял сбойную плату на выходные домой. На текущий момент она отработала уже 8 часов, но ситуация пока не повторяется..
Уже не знаю что делать, прибор ответственный, зависание должно быть исключено. Монтаж качественный - паял сам и очень аккуратно.
Осциллографа, к сожалению, нет. Хотя он бы мне очень помог..
--------------------
Good News Everyone!
|