Фьюзы мікроконтролерів AVR - як і з чим їх їдять

  • Час 7-08-2015, 12:10
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Що ж таке FUSE біти? Слова начебто знайомі, але багато толком і не знають їх призначення, ставлять галочки і прошивають, працює пристрій та й ладно. Я вам хочу розповісти трохи про ці FUSE біти.

FUSE біти (фьюзы) - ну якщо по простому, то вони налаштовують певні параметри мікроконтролерів, це якийсь інструмент для їх тонкої настройки Фьюзы включають або налаштовують такі параметри як:
-  частота генератора, зовнішній чи внутрішній генератор
-  заборона на читання прошивки мікроконтролера
-  увімкнення або вимкнення таймерів
-  поділ частота кварцового генератора
-  захист EEPROOM від стирання
...і так далі. У кожного мікроконтролера виставляються свої фьюзы, у різних мікроконтролерів різний список фьюзов, наприклад в ATmega8 немає фьюза CKOUT, але він присутній у ATtiny2313. У даташітах до мікроконтролерів всі ці фьюзы розписані.

Головне правило при роботі з фьюзами - не поспішати їх виставляти, якщо ви точно не впевнені в правильності своїх дій.

Тепер розпишемо назви деяких фьюзов, їх позначення і те, на що вони впливають. Взагалі, є фьюзы для захисту програми від копіювання (лок-біти), фьюзы, що встановлюють певні функції, а також так звані "старші" і "молодші" байти. Найпопулярніший фьюз, який виставляється практично завжди, це:

CKSEL, таких фьюзов з різними літерами всього чотири, це група CKSEL0, CKSEL1, CKSEL 2 і CKSEL3, визначають частоту тактового генератора, і його тип, тактові імпульси для роботи необхідні практично будь-якого мікроконтролера. У багатьох мікроконтролерах є внутрішній генератор, але ми можемо підключити зовнішній і фюзы виставити для роботи від зовнішнього генератора. Зовнішній кварцовий резонатор, що підключається на виведення XTAL1 і XTAL2, крім того припаюється пара конденсаторів ~20пф одні кінцем на кварц, іншим на мінус. Якщо допустити помилку при установці цих фьюзов, то мікроконтроллер може заблокуватися" для того щоб відновити контролер, подають тактовий сигнал на ногу XTAL1, на даний момент придумано не мало схем для відновлення контролерів, залоченних таким чином. Цей генератор можна зробити практично з будь-якої логіки або навіть з таймера 555.

 

Фьюзы мікроконтролерів AVR - як і з чим їх їдять

 Є прості схеми, з використанням 1 транзистора, пар резисторів і кварцового резонатора, і більш складні, на мікросхемах типу К155ЛА3. Дані способи 100% оживляють контролери з таким дефектом

Група фьюзов SUT1 і SUT0 - fuse біти, керуючі режимом запуску тактових генераторів МК, а так само задають швидкість старту МК після подачі живлення. Пов'язані з фьюзами CKSEL, а саме CKSEL0.

CKOPT - біт, що визначає роботу вбудованого генератора для роботи з кварцовими резонаторами, встановлює "амплітуду" хитань тактового сигналу на кварці. Даний біт програмується досить часто.

RSTDISBL - дуже небезпечний фьюз, помилкова установка може відключити висновок RESET, після чого пропаде можливість програмування ISP програматором. Біт RSTDISBL перетворює висновок RESET у порт вводу-виводу.

SPIEN - фьюз, який дозволяє роботу МК по інтерфейсу SPI. Всі мікроконтролери випускаються з вже встановленим бітом SPIEN. Вважається небезпечним фьюзом.

EESAVE -  Зручно читати як EEPROOM SAVE, дослівно означає "зберегти EEPROOM", даний фьюз захищає від EEPROM стирання. Наприклад, коли в черговий раз заливаєте прошивку в контролер, можна поставити EESAVE = 0, і при стиранні МК EEPROOM залишиться не зворушеним.

BOOTSZ, складається з групи бітів BOOTSZ1 і BOOTSZ0, визначають розмір області пам'яті записуваних програм, пов'язаний з бітом BOOTRST.

BOOTRST, визначає адресу, з якого і буде розпочато виконання програми. Якщо біт встановлений тобто якщо BOOTRST = 0, початок програми буде з адреси області завантажувача (Boot Loader).

BODEN - біт, який при виставленні (BODEN=0), буде контролювати за годує напругою, на гранично низьких напругах мікроконтролер може перезавантажиться, глючити і так далі. Пов'язаний з BODLEVEL.

BODLEVEL. - визначає момент спрацьовування детектора рівня живлячої напруги, при зниженні напруги живлення нижче рівня, відбудеться "перезавантаження" контролера.

SELFPRGEN - біт, що дозволяє (SELFPRGEN=0) або забороняє (SELFPRGEN =1 програмі робити запис в пам'ять.

OCDEN - даний фьюз дозволяє або забороняє читання програми з пам'яті контролера.

Я згадував у своїх статтях про те, що в деяких програмах фьюзы виставляються дзеркально. Запам'ятайте, запрограмований фьюз=0, а не запрограмований=1. У програмах Algorithm Builder, UniProf фьюзы виставляються одним чином, а в програмах PonyProg, CodeVisionAVR, AVR Studio, SinaProg та деяких інших, фьюзы потрібно виставляти дзеркально порівняно з попереднім списком програм.

Вже давно на просторах Інтернету з'явилися так звані "калькулятори фьюзов", це спеціальні програми, що покликані допомогти в конфігурації мікроконтролера. Додаток інтуїтивно зрозуміле, думаю розберетеся, у списку контролерів вибираємо потрібний нам МК, далі вибираємо необхідні функції, а нижче виставляються галочки фьюзов, все дуже просто.

Фьюзы мікроконтролерів AVR - як і з чим їх їдять

Дані програми дуже зручні, т. к. наприклад останнім часом дуже часто автори своїх проектів значення фьюзов пишуть незрозумілими літерами або цифрами, або ж словами, новачкові не зрозуміло, що це означає і які фьюзы при цьому потрібно виставляти (часто можна зустріти коментар до статті "а які фьюзы виставляти?"). Калькулятор фьюзов нам у цьому плані дуже сильно допомагає.

Фьюзы мікроконтролерів AVR - як і з чим їх їдять

Думаю що тепер, якщо у вас спитають "що таке фьюзы, і навіщо вони потрібні?", ви зможете пояснити людині їх призначення, а поки, на цьому все!

Tags

Коментарі до новини