Atmel studio 6

У неї є один істотний недолік, який не дозволяє скористатися цією програмою на відносно слабких машинах. Це програма дуже ресурсномістка і вона буде сильно гальмувати на слабких комп'ютерах з двоядерним процесором молодших моделей і 2 гігабайтами оперативної пам'яті. Відразу скажу, власники старих моделей комп'ютерів не будуть забуті і для них будуть випущені огляди за програмами WinAVR і AVR Studio 4, щоб вони не відчували себе в чомусь ущемленими. Ці програми дуже слабо навантажують процесор і вимагають набагато менше пам'яті для роботи.

Отже, перейдемо до справи. Дана програма є повністю безкоштовною і завантажити її можна як з офіційного сайту Atmel, так і з торрент трекера, наприклад Rutracker.org. Після установки і запуску програми відкривається вікно привітання і майстри створення проектів. Вікно вітання та майстер створення проектів ми закриваємо. У роботі ця функція зовсім марна.

В результаті залишається одна робоча область (клікніть для збільшення картинки):

Для того, щоб створити прошивку, тобто той самий HEX файл, ми повинні написати код, скомпілювати його і "зібрати" проект. Після цього у нас в папці з проектом, з'явиться потрібний нам файл з розширенням * .HEX. Давайте розберемо, як це робиться на практиці. Погнали!

Для створення проекту ми натискаємо в лівому верхньому кутку кнопки File => New => Project.

І бачимо наступне вікно:

Тут нам потрібно вибрати С \ С ++ і GCC C Executable Project:

Не поспішайте натискати "ОК" і закривати вікно. У графі "Name" ми бачимо, що програма підставила нам ім'я проекту автоматом. В даному випадку це GccApplication1. Також ми можемо вибрати папку, в яку ми зберігаємо проект:

Так як ім'я файлу мені не подобається, то міняємо його на Studio_6_Lesson_ 1. Шлях для збереження проекту я залишив за замовчуванням. В даному випадку в папці 6.2 у нас створиться папка з назвою Studio_6_Lesson_ 1. В ній і будуть перебувати всі необхідні нам файли, що мають відношення до нашого проекту:

Ну а тепер тиснемо ОК. Що ми бачимо далі? А далі відкривається наступне вікно:

Так як ми з вами домовилися використовувати МК Tiny 2313, то нам потрібно вибрати саме цю модель. Для цього вибираємо сімейство Tiny, 8-bit.

Ну а потім вибираємо наш МК Attiny 2313:

Тут же можна коротко ознайомитися з характеристиками на дану модель МК, дізнатися обсяг Flash пам'яті, ОЗУ, і EEPROM пам'яті. Також тут можна скачати даташіте на дану модель МК і ознайомитися з усіма характеристиками цього мікроконтролера.

Після того як вибрали, тиснемо ОК. Перед нами відкривається робоче вікно програми (для збільшення клікніть мишкою)

А ось і найголовніше вікно:

Як ми бачимо, тут вже автоматично щось вже згенерованого. Перейдемо безпосередньо до коду.

Що ж ми бачимо тут?

Що ж ми бачимо? Дивимося рядок під номером 9. З неї починається сама програма:

Тут я хочу зробити невеличкий відступ і розібрати відмінності Atmel Studio 6.2 від тієї ж WinAVR. У шостий студії є дуже зручна функція. Називається вона автоподставленія команд. Проявляється це в тому, що як тільки ми почали набирати команду відому Студії, вона сама запропонує нам всі можливі варіанти команд на вибір, які тільки є в її пам'яті за кількома першими літерами.

Нам досить натиснути лише клавіші ТАВ або ENTER і команда у нас підставить автоматично.

Розбираємо рядок №10

Цією рядком ми оголошено бібліотеку затримок

#define F_CPU 8000000UL // Встановлюємо частоту для компілятора

Йдемо далі. Дивимося рядок №11:

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

Йдемо далі. Ми бачимо рядок int main (void) // Основне тіло програми під рядком №13:

Після неї, власне, і починається наша основна програма. Ми бачимо в рядку 14 фігурну дужку, що відкриває місце під програму, і таку ж, тільки повернуту в інший бік дужку, що закриває місце під програму вже в рядку 19. Ці дужки призначені для основного тіла програми. Також ми бачимо що сполучає їх вертикальну риску, що показує нам, що вони одне ціле.

Також можна побачити і фігурні дужки для while. Відкриває дужка знаходиться в рядку 16, а закриває в рядку 18.

Давайте напишемо програму для миготіння одним світлодіодом. Для цього додаємо рядки:

PORTB = 0b0000000 0; // Притягуємо все 8 висновків порту В до 0

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

DDRB = 0b11111111; // Конфігуріруем все висновки порту В на вихід

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

Далі йде власне програма (клікніть для збільшення):

PORTB = 0b0000000 1; // Подаємо на порт В0 логічну одиницю (запалюємо світлодіод)

Отже ми бачимо, що крайня праворуч у нас стоїть одиничка. Як ми пам'ятаємо з вище сказаного, це означає що ми на порт В0 вивели 1, або інакше кажучи, на цьому висновку у нас зараз +5 вольт.

_delay_ms (500); // Чекаємо 500 мілісекунд (0.5 секунди)

Ця команда означає, що процесор повинен крутити у нас холостий цикл, протягом пів секунди, або інакше кажучи, як би зависнути на півсекунди для нас.

Що означають нижче наведені два рядки коду, ви напевно вже здогадалися самі:

PORTB = 0b0000000 0; // Подаємо на порт В0 логічний нуль (гасимо світлодіод)

_delay_ms (500); // Чекаємо 500 мілісекунд (0.5 секунди) Ми подаємо нуль на ніжку В0 і потім чекаємо пів секунди.

Але така програма у нас тривала б всього секунду, а що потім? А потім нам потрібно повернутися до початку нашої нескінченного циклу, який ми оголошуємо командою While:

Одиниця в дужках як раз і означає, що ми будемо крутити цей цикл нескінченно. Іншими словами, ми повторюємо програму, закладену між фігурними дужками While нескінченну кількість разів.

> // Повертаємося до початку виконуваного тіла програми, до рядка 13

ОФФ)) ... програма начебто написана, але як згодувати цей код микроконтроллеру. Він же не розуміє код, написаний в зрозумілих нам словах і командах? А для цього нам потрібно спочатку скомпілювати прошивку. Робиться це в такий спосіб.
Кількома Build => Compile і прошивка у нас буде скомпільована.

Тиснемо Build => Build Studio_6_Lesson_ 1 і вважаємо кількість помилок)), а вони при самостійному написанні першої програми швидше за все будуть у початківців кодеров.

Внизу під вікном для написання коду є віконце. У ньому біжать якісь незрозумілі для вас слова і рядки. В даний момент нам це не так важливо. Важлива тільки остання підсумкова рядок:

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

Отже де ж - де ж наш довгоочікуваний HEX файл, який нам вже не терпиться прошити в наш мікроконтролер)? Найпростіше відкрити папку з нашим проектом, в якій і буде перебувати наша прошивка. Тиснемо File => Open => File і потрапляємо в папку з нашим проектом.

У тій папці, де лежить проект, у нас знаходиться исходник на СІ

Все, тепер цей файл можна згодовувати як будь-якій программатору для МК AVR, так і програмі Proteus, якщо ви раптом захочете перед складанням конкретного пристрою подивитися, як це буде виглядати в емуляторі. Роботу в емуляторі Proteus можна прочитати в цій статті.

Прікпреляю до проекту файл Студії, HEX-файл, а також схему в протеус. Завантажити можна тут.