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-файл, а також схему в протеус. Завантажити можна тут.