Новини високих технологій
» » AVR-програмування. Програмування мікроконтролерів AVR для початківців

AVR-програмування. Програмування мікроконтролерів AVR для початківців

13-09-2017, 16:45
2 653
Мікроконтролери є невеликими, але одночасно дуже зручними пристроями для тих, хто бажає створювати різні дивовижні роботизовані або автоматизовані речі у себе вдома. У рамках цієї статті буде розглянуто програмування AVR для початківців, різні аспекти і нюанси цього процесу.

Загальна інформація

AVR-програмування. Програмування мікроконтролерів AVR для початківців
Мікроконтролери можна зустріти скрізь. Вони є в холодильниках, пральних машинах, пристроях, верстатах на виробництві, розумних будинках і ще у безлічі різних технічних пристроїв. Їх повсюдне застосування обумовлено можливістю заміни більш складних і масштабних аналогових схем пристроїв. Програмування МК AVR дозволяє забезпечити автономне керування електронними пристроями. Ці мікроконтролери можна представити як найпростіший комп'ютер, що може взаємодіяти із зовнішнім технікою. Так, їм під силу відкривати/закривати транзистори, отримувати дані з датчиків і виводити їх на екрани. Також мікроконтролери можуть здійснювати різну обробку вхідної інформації подібно до персонального комп'ютера. Якщо освоїти програмування AVR з нуля і дійти до рівня професіонала, то відкриються практично безмежні можливості для управління різними пристроями за допомогою портів вводу/виводу, а також зміни їх коду.


Трохи про AVR

В рамках статті буде розглянуто сімейство мікроконтролерів, що випускаються фірмою Atmel. Вони мають досить непогану продуктивність, що дозволяє використовувати їх у багатьох аматорських пристроях. Широко застосовуються в промисловості. Можна зустріти в такій техніці: Побутовий. Пральні машини, холодильники, мікрохвильові печі та інше. Мобільного. Роботи, засоби зв'язку і так далі. Обчислювальної. Системи управління периферійними пристроями, материнські плати. Розважальною. Прикраси та дитячі іграшки. Транспорт. Системи безпеки і керування двигуном автомобіля. Промислове обладнання. Системи керування верстатами. Це, звичайно ж, не всі сфери. Вони застосовуються там, де вигідно використовувати не набір керуючих мікросхем, а один мікроконтролер. Це можливо завдяки низькому енергоспоживанню і спрощеного виробництва. Для написання програм використовуються мови З і Assembler, трохи змінені під сімейство мікроконтролерів. Такі зміни необхідні з-за слабких обчислювальних можливостей, які обчислюються, як правило, в десятки кілобайт. AVR-програмування без вивчення цих мов не представляється можливим.


Як отримати свій перший мікроконтролер?

AVR-програмування вимагає: Наявності необхідної середовища розробки. Власне самих мікроконтролерів. Другий пункт розглянемо докладніше. Існує три можливості обзавестися необхідним пристроєм: Купити безпосередньо сам мікроконтролер. Обзавестися пристроєм у складі конструктора (наприклад – Arduino). Зібрати мікроконтролер самостійно. У першому пункті нічого складного немає, тому відразу перейдемо до другого і третього.

Обзавестися пристроєм у складі конструктора

В якості прикладу буде обраний відомий Arduino. Це електронний конструктор, за сумісництвом зручна платформа для швидкої і якісної розробки різних електронних пристроїв. Плата Arduino включає в себе певний набір компонентів для роботи (існують різні конфігурації). У неї обов'язково входить AVR-контролер. Цей підхід дозволяє швидко почати розробку пристрою, не вимагає спеціальних умінь та навичок, має значні можливості в плані підключення додаткових плат, а також в інтернеті можна знайти багато інформації на запитання. Але не обійшлося і без мінусів. Купуючи Arduino, людина позбавляє себе можливості більш глибоко зануритися в AVR-програмування, краще дізнатися мікроконтролер, специфіку його роботи. Також негативу додає і відносно вузька лінійка моделей, з-за чого часто доводиться купувати плати під конкретні завдання. Особливістю також є і те, що програмування "СІ" тут відрізняється досить сильно від стандартної форми. Незважаючи на всі свої недоліки, Arduino підходить для вивчення новачкам. Але зловживати не варто.

Самостійна збірка

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

Як працювати?

Отже, припустимо, що питання з мікроконтролером зважився. Далі буде вважатися, що він був придбаний або ж куплений самостійно. Що ще потрібно, щоб освоїти AVR-програмування? Для цієї мети потрібна середовище розробки (в якості базису підійде і звичайний блокнот, але рекомендую зупинитися на Notepad++). Хоча існують і інші програми для програмування AVR, наведене забезпечення зможе впоратися з усіма вимогами. Також необхідний програматор. Його можна придбати в найближчому магазині, замовити по інтернету або зібрати самостійно. Не завадить і друкована плата. Вона не обов'язкова, але її використання дозволяє заощадити свої нерви і час. Також купується/створюється самостійно. І останнє – це джерело живлення. Для AVR необхідно забезпечити надходження напруги на 5В.

Де і як вчитися?

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

Порти введення/виводу

Це надзвичайно важлива тема. Без розуміння того, як працюють порти введення/виводу, не представляється можливим внутрішньосхемного програмування AVR взагалі. Адже взаємодія мікроконтролера із зовнішніми пристроями здійснюється саме за їх посередництвом. На перший погляд новачка може здатися, що порт – це досить заплутаний механізм. Щоб уникнути такого враження, не будемо детально розглядати схему його роботи, а тільки отримаємо загальне уявлення про це. Розглянемо програмну реалізацію. В якості прикладу пристрою був вибраний мікроконтролер AtMega8 - один з найпопулярніших зі всього сімейства AVR. Порт вводу/виводу являє собою три регістра, які відповідають за його роботу. На фізичному рівні вони реалізовуються як ніжки. Кожній з них відповідає певний біт керуючого реєстрі. Кожна ніжка може працювати як для введення інформації, так і для її виведення. Наприклад, на неї можна повісити функцію запалювання світлодіода або обробку натискання кнопки. До речі, три регістри, про яких говорилося, це: PORTx, PINx і DDRx. Кожен з них є восьмиразрядным (не забуваємо, що ми розглядаємо AtMega8). Тобто один біт займається певною ніжкою.

Робота регістрів

Найбільш вагомим в плані орієнтації є керуючий DDRx. Він також є восьмиразрядным. Значення для нього можуть бути записані 0 або 1. Як змінюється робота контролера при використанні нулі й одиниці? Якщо в певному бите виставити 0 то відповідна йому ніжка буде переключена в режим входу. І з неї можна буде зчитувати дані, що йдуть з зовнішніх пристроїв. Якщо встановити 1 то мікроконтролер зможе керувати чимось (наприклад, дати наказ транзистору пропустити напруга і запалити світлодіод). Другим за важливістю є PORTx. Він займається управлінням стану ніжки. Давайте розглянемо приклад. Припустимо, у нас є порт виводу. Якщо ми встановлюємо логічну одиницю в PORTx, то надсилається сигнал від мікроконтролера керуючому пристрою почати роботу. Наприклад, запалити світлодіод. При встановленні нуля він буде гаситися. Тобто працювати з керуючим регістром DDRx постійно, немає потреби. І наостанок давайте про PINx. Цей регістр відповідає за відображення стану ніжки контролера, коли вона налаштована на стан вводу. Слід зазначити, що PINx може працювати виключно в режимі читання. Записати в нього нічого не вийде. Але от прочитати поточний стан ніжки – це без проблем.

Робота з аналогами

AVR не є єдиними мікроконтролерами. Цей ринок поділений між кількома великими виробниками, а також між численними китайськими імітують пристроями та саморобками. Багато в чому вони подібні. Приміром, програмування PIC/AVR сильно не відрізняється. І якщо є розуміння чогось одного, то зрозуміти все інше буде легко. Але починати шлях рекомендуємо все ж з AVR завдяки його грамотної структурі, доброзичливості до розробника та наявності великої кількості допоміжних матеріалів, з-за чого процес розробки можна значно прискорити.

Техніка безпеки

Коли буде вестися програмування мікроконтролерів AVR на "СІ" або на "Асемблері", то необхідно працювати дуже обережно. Справа в тому, що виставивши певну комбінацію регістрів і змінивши внутрішні установки, можна спокійно заблокувати мікроконтролер. Особливо це стосується фьюзов. Якщо немає впевненості у правильності своїх дій, то краще відмовитися від їх використання. Це ж відноситься і до программаторам. Якщо купувати заводську апаратуру, то вона буде прошивати мікроконтролери без проблем. При складанні своїми руками може виникнути сумна ситуація, при якій програматор заблокує пристрій. Це може статися як через помилки в програмному коді, так і через неполадки в ньому самому. До речі, про ще одну (на цей раз позитивному) моменті, який раніше побіжно згадувався, але так і не був розкритий повністю. Зараз практично всі сучасні мікроконтролери мають функцію внутрішньосхемного програмування. Що це означає? Припустимо, що пристрій було запаяна на платі. І щоб змінити його прошивку, зараз не потрібно його поїти, адже таке втручання може пошкодити сам мікроконтролер. Досить підключитися до відповідних висновків і перепрограмувати його при їх посередництві.

Яку модель обрати?

В рамках статті була розглянута AtMega8. Це досить посередній за своїми характеристиками мікроконтролер, якого, тим не менш, вистачає для більшості виробів. Якщо є бажання створити щось масштабне, то можна брати вже своєрідних монстрів на зразок Atmega128. Але вони розраховані на більш досвідчених розробників. Тому, якщо немає достатньої кількості досвіду, то краще починати з невеликих і простих пристроїв. До того ж вони і значно дешевше. Погодьтеся, одна справа випадково заблокувати мікроконтролер за сто рублів, а зовсім інше – за півтисячі. Краще набити собі руку і розібратися в різних аспектах функціонування, щоб в подальшому не втрачати значні суми. Спочатку можна почати з AtMega8 а потім вже орієнтуватися по своїм потребам.

Висновок

Ось і була розглянута тема програмування AVR в самих загальних рисах. Звичайно, ще багато можна розповідати. Так, приміром, не було розглянуто маркування мікроконтролерів. А воно може багато про що сказати. Так, в основному мікроконтролери працюють на напругу 5В. Тоді як наявність, наприклад, літери L може сказати про те, що для роботи пристрою досить лише 27 Ст. Як бачите, часом знання про маркування можуть зіграти дуже важливу роль в плані коректної і довговічної роботи пристроїв. Час функціонування мікроконтролерів – це теж цікава тема. Кожне пристрій розрахований на певний період. Так, деякі можуть відпрацювати тисячу годин. Інші ж мають гарантійний запас в 10000!
Цікаво по темі
Мікроконтролери - це що таке?
Мікроконтролери - це що таке?
В наші дні мікроконтролери можна зустріти практично в кожному примірнику побутової техніки та електроніки. Наприклад, якщо в мікрохвильовій печі є
Помилка встановлення з'єднання з базою даних: причина, виправлення
Помилка встановлення з'єднання з базою даних: причина, виправлення
Займаючись розробкою власного сайту, ми часто стикаємося з помилками встановлення з'єднання з базою даних, внутрішніми неполадками сервера і т. д.
Мікроконтролер Atmega8. Програмування Atmega8 для початківців
Мікроконтролер Atmega8. Програмування Atmega8 для початківців
Мікроконтролер Atmega8 є найпопулярнішими представниками свого сімейства. Багато в чому вони цим зобов'язані, з одного боку, простоті роботи і
Що таке програмування? Мови програмування. Комп'ютерне програмування
Що таке програмування? Мови програмування. Комп'ютерне програмування
В період появи перших комп'ютерних систем гостро постало питання того, як «навчити» машину сприймати ...