Мікроконтролер - пристрій, мікросхема, призначена для управління іншими пристроями. Мікроконтролер містить в собі процесор, пам'ять, а так само периферійні пристрої. Фактично, контролер "смикає ніжками" - посилає імпульси різної тривалості на ноги.
atmega8 в DIP - корпусіІ це дуже важливо зрозуміти для початку вивчення мікроконтролерів.
Список периферійних пристроїв контролера дуже великий.
- універсальні цифрові порти - мають настроюється режим роботи як на введення, так і виведення;
- інші інтерфейси введення-виведення, такі як UART, USB, IEEE 1394, Ethernet;
- аналого-цифрові і цифро-аналогові перетворювачі;
- компаратори;
- широтно-імпульсні модулятори;
- таймери;
- масиви вбудованої флеш-пам'яті;
- вбудований тактовий генератор і / wp-admin / post.php? post = 119action = edit сторожовий таймер.
У нотатках розглянемо принцип роботи з мікроконтролерами Atmel (Avr)
Для початку достатньо розібратися з універсальними цифровими портами.
Кожен контролер від Atmel має порти, з назвами PORTA, PORTB. в залежності від типу мікроконтролера. Порти не обов'язково починаються з PORTA - наприклад, в DIP Atmega8 його немає. Залежно від типу контролера, порти мають різну розрядність (8, 16, 32 і т.д. біт). Розрядність порту може фігурувати в назві контролера. Наприклад, той же Atmega8, Atmega16, Atmega32. А може і не фігурувати (Attiny2313 як варіант - але він теж 8-бітний). Сподіваюся, інтуїтивно зрозуміло, що розрядність порту визначає, скільки біт інформації одночасно передається - а, значить, скільки ніжок має порт.
Розглянемо роботу з мікро контролером на мові C.
Для початку треба налаштувати порт на введення або на висновок. Це можна зробити за допомогою регістра DDRx, де х - порт (A, B, C і т.д.) 1 - порт налаштований на вихід, 0 - на введення.
Нумерація ніжок порту:
Наприклад, настроєм перший біт (1 ніжку) порту А на висновок:
0b на початку означає, що число представлених в двійковій січтеме обчислення. Ви можете представляти числа у будь-якій зручній для вас формі. Але прийнято використовувати 2 форми - двійкову (бінарну) і шестнадцатиричную. У двійковій системі простіше розуміти (0 - низький логічний рівень на ніжці, 1 - високий), в шестнадцатиричной більш компактна запис. Що використовувати - вирішувати вам.
Зрозуміло, такий запис не дуже зручна (але сама зрозуміла і швидка), як правило, для таких і подібних дій використовують побітові операції, але їх детально розглянемо (в застосуванні до мікроконтролерів) в одній з следущих заміток.
Тепер можемо передати значення на порт (на ту ж 1 ніжку):
Ну і. Фактично все для ознайомлення! Цих елементарних знань плюс трохи фантазії плюс трохи базового досвіду в програмуванні досить для того, щоб, наприклад, створити якусь світлодіодну мигалку (наприклад, як тут: Подарунок дівчині своїми руками (на attiny2313)).
Наприклад, під gcc-avr просто програма має наступний вигляд:
І так ми можемо запалити / спалити светодіодик =)