На сайт "Мир микроконтроллеров"   Закрыть окно помощи

 

Эффект "убитой микросхемы"

Среди любителей микроконтроллерной техники бытует мнение, что при неправильном программировании можно микросхему "убить". То есть повредить безвозвратно. Такое убеждение связано с программированием некоторых конфигурационных (Fuse) переключателей. А точнее с программированием переключателей CKSEL, определяющих режимы работы тактового генератора.

Заводская установка выбрана таким образом, что новая микросхема работает в режиме внутренней синхронизации. Если вы используете последовательное программирование, то вам достаточно лишь подать питание на микросхему и подключить ее к программатору по последовательному каналу. Однако помните: при отсутствии синхросигнала программирование микросхемы в последовательном режиме невозможно! Если в процессе программирования конфигурационных ячеек вы, случайно либо намеренно измените состояние ячеек CKSEL3...0, вы переведете микросхему в один из режимов, требующих либо наличия внешнего кварцевого (пьезо) резонатора, либо внешней RC-цепочки, либо внешнего тактового генератора. При этом, если требуемые внешние цепи отсутствуют, тактовые колебания сорвутся и дальнейшее программирование микросхемы и изменение состояния конфигурационных ячеек станет невозможным. Но не волнуйтесь! Микросхема не вышла из строя. Если микросхема перестала отзываться на команды программатора, вам придется вспомнить, какое значение вы записали в переключатели CKSEL3...0 в последнем сеансе изменения конфигурационных ячеек. Обычно бывает так: Вы забыли вообще установить их значение и нажали кнопку " Write". В этом случае все "птички" отсутствовали и во все четыре ячейки CKSEL3...0 были записаны единицы. Это соответствует внешнему кварцевому резонатору. Подключите к выводам XTAL0 и XTAL1 кварцевый резонатор и согласующие конденсаторы в соответствии с технической документацией. После этого управляемость микросхемой восстановится. Если вы записали в ячейки CKSEL3...0 другие значения, то вам придется подключить либо внешнюю RC-цепочку, либо внешний генератор. В зависимости от того, в какой режим вы случайно перевели вашу микросхему.

Второй вариант, когда микросхема кажется "убитой" - программирование назначения вывода " Reset". В некоторых микросхемах, таких, как ATmega8, ATmega325, ATmega645, ATmega329 и некоторых других функция вывода RESET может быть изменена. Для изменения функции вывода Reset используется Fuse-переключатель RSTDISBL. Если запрограммировать этот бит (сделать равным нулю) вывод Reset превращается в еще одну дополнительную линию порта ввода/вывода. Но одновременно микросхема теряет способность последовательного программирования. Это связано с тем, что в режиме последовательного программирования активно учувствует сигнал Reset (низкий уровень на этом входе не только приводит к системному сбросу, но и переводит микросхему в режим программирования). Когда же вывод становится входом порта, то такой режим невозможен, так как иначе от внешнего нулевого сигнала микросхема постоянно будет переходить в режим программирования. В таком случае микросхему можно запрограммировать лишь в параллельном режиме. Если ваш программатор работает только в последовательном режиме, то случайно прошив Fuse-переключатель RSTDISBL вы потеряете связь с микросхемой и после этого такую микросхему вернуть в обычный режим можно только при помощи программатора работающего в параллельном режиме. Кстати, если программатор имеет панельку, куда вы должны вставить микросхему для программирования, то это еще не значит, что он работает в параллельном режиме. Поддерживаемые режимы работы программатора можно узнать из его документации.

На сайт "Мир микроконтроллеров"   Закрыть окно помощи