Фанат науки
Если Вы работали на встроенном тактовом генераторе и случайно прошили фьюзы (например нажали кнопку Program All , забыв при этом снять галочку «запрограммировать фьюзы» Program Fuse Bit(s) — микроконтроллер может отключить встроенный тактовый генератор и переключиться на работу с внешним кварцем (естественно перестав при этом работать).
При попытке прошить кристалл, CodeVision выдаёт подобные ошибки:
Фьюзы — это «переключатели» внутри микроконтроллера, отвечающие за подключение встроенного тактового генератора, за подключение внешнего кварца, за подключение режима работы от внешнего генератора итд. Настроить их прямо в программе, так же как регистры, нельзя. Настраиваются фьюзы только при прошивке.
Fuse по-английски «плавкая перемычка». На старых микроконтроллерах фьюзы были одноразовые. Это была группа проводящих участков на кристалле микроконтроллера. Если проводящий участок нужно было запрограммировать, на него подавали большой ток, структура кристалла в этом месте разрушалась и переставала проводить ток. Повреждённый непроводящий участок считали за лог. нуль; целый участок — за лог. единицу.
Сейчас фьюзы многоразовые (это просто вспомогательная ячейка памяти) , но пережиток тех времён остался в обозначении запрограммированных фьюзов:
• Запрограммированный фьюз обозначают дыркой (лог.0, непроводящий участок
• Незапрограммированный — галочкой (лог.1, проводящий участок
Таким образом, фьюзы программируются «дырками», а не галочками.
__________________________________________________________________________________________________
Для восстановления работоспособности микроконтроллера, найдите в окошке ProgramFuseBit(s) биты:
CKSEL0
CKSEL1
CKSEL2
CKSEL3
SUT0
SUT1
CKOPT
. и сравните с табличкой. Определите, на какой режим работы вы только что прошили свой микроконтроллер :
Чаще всего, все вышеуказанные биты — это дырки (по умолчанию в CVAVR не стоит ни одна галочка), т. е. все эти биты запрограммированы. Что соответствует подключению внешнего кварца с частотой от трёх до 8 МГц:
1. Купите кварц на частоту от трёх до 8 МГЦ или выпаяйте из компьютерного лома (частота кварца написана на его корпусе). И два конденсатора от 12 до 36 пф.
2. Найдите на микроконтроллере выводы XTAL1 и XTAL2, воткните между ними кварц. С этих же выводов бросьте на общий провод конденсаторы (хотя можете и без них попробовать).
3. В конфигурации проекта поменяйте частоту чипа на 8000000 (или другую, на которую рассчитан Ваш кварц). Можно не менять, но тогда функция delay будет неправильно рассчитывать задержки (если вы, конечно, будете её использовать).
4. На всякий случай перепрошейте фьюзы (теперь уже CVAVR должна нормально распознавать микроконтроллер):
Tools >> Chip programmer >> Program >> Fuse Bit(s)
5. Почистите чип и ещё раз залейте прогу (естественно не забудьте откомпилировать её перед этим).
Если будут вылезать ошибки, попробуйте просто закрыть окошко с ошибкой и прошить ещё разок. Протоколы для программаторов разрабатывались ещё во времена Windows95 и для старых моделей компов. На некоторых современных, особенно многоядерных компьютерах с Windows XP (Windows Vista, Windows 7) иногда бывает только со второго-третьего раза нормально прошивается (во всяком случае у меня).
6. Когда снова получите «власть» над микроконтроллером, тут уж как хотите — можете его обратно на встроенный генератор переключить, а можете и на кварце продолжать работать, на высокой частоте.
PS. Прочитать значения фьюзов из CodeVisionAVR (и записать их перед тем, как что-либо проделывать с микроконтроллером, чтобы восстановить потом можно было) можно так: Tools >> Chip Programmer >> Read >> Fuse Bit(s)
Источник
Как проверить микроконтроллер на исправность
В ремонте техники и сборке схем всегда нужно быть уверенным в исправности всех элементов, а иначе вы зря потратите время. Микроконтроллеры тоже могут сгореть, но как его проверить, если нет внешних признаков: трещин на корпусе, обугленных участков, запаха гари и прочего? Для этого нужно:
- Источник питания со стабилизированным напряжением;
- Мультиметр;
- Осциллограф.
Внимание:
Полная проверка всех узлов микроконтроллера трудна – лучший способ заменить заведомо исправным, или на имеющийся прошить другой программный код и проверить его выполнение. При этом программа должна включать как проверку всех пинов (например, включение и отключение светодиодов через заданный промежуток времени), а также цепи прерываний и прочего.
Теория
Микроконтроллер – это сложное устройство в нём многофункциональных узлов:
Поэтому при диагностике микроконтроллера возникают проблемы:
Работа очевидных узлов не гарантирует работу остальных составных частей.
Прежде чем приступать к диагностике любой интегральной микросхемы нужно ознакомиться с технической документацией, чтобы её найти напишите в поисковике фразу типа: «название элемента datasheet», как вариант – «atmega328 datasheet».
На первых же листах вы увидите базовые сведения об элементе, для примера рассмотрим отдельные моменты из даташита на распространенную 328-ю атмегу, допустим, она у нас в dip28 корпусе, Нужно найти цоколевки микроконтроллеров в разных корпусах, рассмотрим интересующий нас dip28.
Первое на что мы обратим внимание – это то, что выводы 7 и 8 отвечают за плюс питания и общий провод. Теперь нам нужно узнать характеристики цепей питания и потребление микроконтроллера. Напряжение питания от 1.8 до 5.5 В, ток потребляемый в активном режиме – 0.2 мА, в режиме пониженного энергопотребления – 0.75 мкА, при этом включены 32 кГц часы реального времени. Температурный диапазон от -40 до 105 градусов цельсия.
Этих сведений нам достаточно, чтобы провести базовую диагностику.
Основные причины
Микроконтроллеры выходят из строя, как по неконтролируемым обстоятельствам, так и из-за неверного обращения:
2. Перегрев при пайке.
3. Перегрузка выводов.
4. Переполюсовка питания.
5. Статическое электричество.
6. Всплески в цепях питания.
7. Механические повреждения.
8. Воздействие влаги.
Рассмотрим подробно каждую из них:
- Перегрев может возникнуть, если вы эксплуатируете устройство в горячем месте, или если вы свою конструкцию поместили в слишком маленький корпус. Температуру микроконтроллера может повысить и слишком плотный монтаж, неверная разводка печатной платы, когда рядом с ним находятся греющиеся элементы – резисторы, транзисторы силовых цепей, линейные стабилизаторы питания. Максимально допустимые температуры распространенных микроконтроллеров лежат в пределах 80-150 градусов цельсия.
2. Если паять слишком мощным паяльником или долго держать жало на ножках вы можете перегреть мк. Тепло через выводы дойдёт до кристалла и разрушит его или соединение его с пинами.
3. Перегрузка выводов возникает из-за неверных схемотехнических решений и коротких замыканий на землю.
4. Переполюсовка, т.е. подача на Vcc минуса питания, а на GND – плюса может быть следствием неправильной установки ИМС на печатную плату, или неверного подключения к программатору.
5. Статическое электричество может повредить чип, как при монтаже, если вы не используете антистатическую атрибутику и заземление, так и в процессе работы.
6. Если произошел сбой, пробило стабилизатор или еще по какой-то причине на микроконтроллер было подано напряжение выше допустимого – он вряд ли останется цел. Это зависит от продолжительности воздействия аварийной ситуации.
7. Также не стоит слишком усердствовать при монтаже детали или разборке устройства, чтобы не повредить ножки и корпус элемента.
8. Влага становится причиной окислов, приводит к потере контактов, короткого замыкания. Причем речь идет не только о прямом попадании жидкости на плату, но и о длительной работе в условиях с повышенной влажностью (возле водоёмов и в подвалах).
Проверяем микроконтроллер без инструментов
Начните с внешнего осмотра: корпус должен быть целым, пайка выводов должна быть безупречной, без микротрещин и окислов. Это можно сделать даже с помощью обычного увеличительного стекла.
Если устройство вообще не работает – проверьте температуру микроконтроллера, если он сильно нагружен, он может греться, но не обжигать, т.е. температура корпуса должна быть такой, чтобы палец терпел при долгом удерживании. Больше без инструмента вы ничего не сделаете.
Проверка мультиметром
Проверьте, приходит ли напряжение на выводы Vcc и Gnd. Если напряжение в норме нужно замерить ток, для этого удобно разрезать дорожку, ведущую к выводу питания Vcc, тогда вы сможете локализоровать измерения до конкретной микросхемы, без влияния параллельно подключенных элементов.
Не забудьте зачистить покрытие платы до медного слоя в том месте, где будете прикасаться щупом. Если разрезать аккуратно, восстановить дорожку можно каплей припоя, или кусочком меди, например из обмотки трансформатора.
Как вариант можно запитать микроконтроллер от внешнего источника питания 5В (или другого подходящего напряжения), и замерить потребление, но дорожку резать все равно нужно, чтобы исключить влияние других элементов.
Для проведения всех измерений нам достаточно сведений из даташита. Не будет лишним посмотреть, на какое напряжение рассчитан стабилизатор питания для микроконтроллера. Дело в том, что разные микроконтроллерные схемы питаются от разных напряжений, это может быть и 3.3В, и 5В и другие. Напряжение может присутствовать, но не соответствовать номиналу.
Если напряжения нет – проверьте, нет ли КЗ в цепи питания, и на остальных ножках. Чтобы быстро это сделать отключите питание платы, включите мультиметр в режим прозвонки, поставьте один щуп на общий провод платы (массу).
Обычно она проходит по периметру платы, а на местах крепления с корпусом имеются залуженные площадки или на корпусах разъёмов. А вторым проведите по всем выводам микросхемы. Если он где-то запищит – проверьте что это за пин, прозвонка должна сработать на выводе GND (8-й вывод на atmega328).
Если не сработала – возможно, оборвана цепь между микроконтроллером и общим проводом. Если сработала на других ножках – смотрите по схеме, нет ли низкоомных сопротивлений между пином и минусом. Если нет – нужно выпаять микроконтроллер и прозвонить повторно. То же самое проверяем, но теперь между плюсом питания (с 7-м выводом) и выводами микроконтроллера. При желании прозваниваются все ножки между собой и проверяется схема подключения.
Проверка осциллографом
Осциллограф – глаза электронщика. С его помощью вы можете проверить наличие генерации на резонаторе. Он подключается между выводами XTAL1,2 (ножки 9 и 10).
Но щуп осциллографа имеет ёмкость, обычно 100 пФ, если установить делитель на 10 ёмкость щупа снизится до 20 пФ. Это вносит изменения в сигнал. Но для проверки работоспособности это не столь существенно, нам нужно увидеть есть ли колебания вообще. Сигнал должен иметь форму наподобие этой, и частоту соответствующую конкретному экземпляру.
Если в схеме используется внешняя память, то проверить можно очень легко. На линии обмена данными должны быть пачки прямоугольных импульсов.
Это значит, что микроконтроллер исправно выполняет код и обменивается информацией с памятью.
Используем программатор
Если выпаятьмикроконтроллер и подключить его к программатору можно проверить его реакцию. Для этого в программе на ПК нажмите кнопку Read, после чего вы увидите ID программатора, на AVR можно попробовать читать фьюзы. Если нет защиты от чтения, вы можете считать дамп прошивки, загрузить другую программу, проверить работу на известном вам коде.Это эффективный и простой способ диагностики неисправностей микроконтроллера.
Программатор может быть как специализированным, типа USBASP для семейства АВР:
Так и универсальный, типа Miniprog.
Схема подключения USBASP к atmega 328:
Заключение
Как таковая проверка микроконтроллера не отличается от проверки любой другой микросхемы, разве что у вас появляется возможность использовать программатор и считать информацию микроконтроллера. Так вы убедитесь в его возможности взаимосвязи с ПК. Тем не менее, случаются неисправности, которые нельзя детектировать таким образом.
Вообще управляющее устройство редко выходит из строя, чаще проблема заключается в обвязке, поэтому не стоит сразу же лезть к микроконтроллеру со всем инструментарием, проверьте всю схему, чтобы не получить проблем с последующей прошивкой.
Источник