Записи с меткой ‘Fuse’

Fuse-bits или вторая жизнь микроконтроллера

Одна из самых частых проблем связанных с блокировкой микроконтроллера — неправильно установленные во время программирования fuse — биты. Довольно актуальной темой остается установка битов отвечающих за способ тактирования и частоту работы микроконтроллера. При повторении или разработке проекта, как правило, приходится менять дефолтную частоту на другую. Но что делать если  все-таки выставили неправильно? Для этого случая есть всевозможные программаторы и модули. Но это все дополнительные затраты и время, которого как всегда не хватает…

В зависимости от корпуса микроконтроллера, варьируется и количество доступных для программирования  fuse — битов. Их конфигурация и определяет, источник тактовых импульсов и частоту работы МК.

CKSEL0-3  —  отвечают за выбор частоты и источника тактового сигнала

CKOPT  — служит для корректировки амплитуды колебаний на выходе с карцевого резонатора

SUT0-1  —  отвечают за выбор времени старта микроконтроллера (4ms — 65ms)

SKDIV8  —  выполняет деления частоты на 8 (При частоте кварца 8 MHz, получим 1 MHz)

Как уже говорилось, микроконтроллер может работать как от внутреннего кварцевого резонатора, так и от внешнего. При выставлении fuse — битов — это следует учитывать ! По дефолту (новый) микроконтроллер работает от внутреннего кварца на частоте 1 MHz. Ниже представлено описание конфигураций для ATmega8.

Конфигурация фьюз-битов для внешнего кварца:

Если есть необходимость точно измерять определенные промежутки времени, лучше использовать внешний кварцевый резонатор. Он имеет большую точность и помехоустойчивость, в следствии уход частоты (от заявленной) будет небольшой.

fuse_crystal

Временные задержки для старта микроконтроллера:

Задержки варьируются в диапазоне 4ms — 65ms, за счет установки битов CKSEL0 и  SUT0-1. По сути они необходимы для того, чтобы после подачи питания, МК стартовал не сразу, а через некоторое время. Так что можно смело ставить 65 ms, будет надежнее.

fuse_crystal_time

Конфигурация фьюз-битов для внутреннего кварца:

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

fuse_rc2

При построении устройств где нет необходимости в высокой частоте, применяют низкочастотные кварцы. Часовой кварц работает на частоте 32,768 kHz, удобно при работе в асинхронном режиме таймера. Упрощается построение часов, работа с отсчетом времени и тд.  Для подключения низкочастотного внешнего кварцевого резонатора необходимо установить биты: 

• CKSEL3…0  =  1001

Для подключения кварца к внутренним конденсаторам, необходимо установить бит CKOPT. Конденсаторы имеют емкость 36 pf.

Также, в качестве источника тактовых импульсов, можно использовать RC- цепочку.

fuse_rc

 

Следует помнить!

При выставлении Fuse-битов, не ленитесь и открывайте даташит ! Сверьтесь,  убедитесь что выставили все правильно и только тогда прошивайте МК. Порой залочить микроконтроллер гораздо проще, чем потом восстановить его в рабочий режим.

Небольшое отступление, вторая жизнь микроконтроллера…

Если случилось так, что fuse — биты уже выставлены и на последующий запрос МК уже не отвечает. Следует внимательно посмотреть на поставленные ранее конфиги, и подбирать источник тактирования. Как вариант, можно поступить следующим образом: использовать генератор в качестве источника тактирования микроконтроллера, это поможет прочитать МК и заменить  fuse — биты. Вопрос в том где взять генератор — уже решен. На небольшой отладочной плате собрал генератор на базе микроконтроллера ATmega8. МК работает от внутреннего кварца, так что из обвязки практически ничего не надо.

IMG_7280

Читать далее »