Початок роботи з avr studio 4 (урок 1)
Для роботи з AVR Studio 4 необхідно саме собою її встановити. Якщо вона вже встановлена, то можете пропустити цей крок.
установка:
створюєш каталог c: / avr / - тут будуть лежати робочі програми.
створюєш каталог наприклад c: / works / - тут будуть лежати твої роботи.
треба щоб були короткі шляхи, що б не було проблем з ними.
Далі, качаешь і встановлюєш в каталог c: / avr /
WinVR
AVRStudio4_SP3
Є взагалі AVRStudio5 але і AVRStudio4 поки цілком вистачає.
Вся робота буде проходити в AVRStudio4, WinAVR потрібна тільки через бібліотеки AVR-GCC (Для того, що б можна було писати на Сі)
АЛЕ! першим треба встановити саме WinAVR. інакше бібліотека AVR-GCC НЕ підчепити.
Далі запускаєш AVRStudio4 і створюєш проект.
Тут думаю розберешся.
AVR-GCC для того, що б писати на Сі
Atmel Avr Assembler відповідно для асемблера.
Починати розбиратися з МК краще з нуля. А це значить з Ассемблера, значить створюєш той, який Atmel AVR Assembler.

Потім вибирай мікроконтролер Atmega8.

коли створиться проект, буде великий, білий, чистий аркуш. тут буде код.
трохи про вміст цього листа
команди записуються в кожному рядку. тобто одна команда - одна строчка.
допустимо є команди з двома "параметрами", з одним, або без нічого
З цим все ясно. далі складніше. Кожна команда, має розмір 1, 2 або 3 байти.
Бачите зв'язок розміру команди з параметрами?
У кожного мікроконтролера свій асемблер, хоча мнімоніка у них схожа, тобто команда MOV у мк однієї серії буде виглядати в машинному коді допустимо 0x12 а в іншого 0x55.
що б при компіляції, скомпілювати в потрібному нам коді ми повинні сказати компілятору, для якого мк у нас пишеться програма.
це взагалі вибирається при створенні проекту.
З цього ми вибрали мікроконтролер Atmega8.
Але і тут не все. для полегшення нашого життя, в AVRStudio4 є набір констант, які іменуються ніби як "макроассемблера".
Для тог, щоб їх довантажити потрібно на початку коду вставити рядок
на самому початку коду, ставиться таблиця переривань. Що це таке і як це працює, поясню в іншій замітці. Але а поки, будемо писати її так:
Після цього йде вже сам код
Але тут є одна (точніше не одна, а багато) особливостей.
Для зручності написання коду, для його зрозумілості та для полегшення відносних переходів, нам подарували маркери, як вони виглядають? "RESET:" і "MAIN:" це маркери, в їх іменах можуть міститися майже будь-які символи латинського алфавіту і цифри. Маркери не можуть мати імена функцій і команд, припустимо "NOP".
Як до них переходить? Припустимо командою RJMP.
Так само, з маркерів, можна зробити підпрограму (процедуру), по завершенню якої, ми повернемося туди, від куди її викликали. Для виклику її, використовуємо команду "RCALL (підпрограма)", а що б повернутися з Підпрограми (процедури), потрібно закінчити її командою "RET". У нас повинен вийти такий код:
Що б нам працювати з нашим мк, потрібно його форматувати. тому мк, цей пристрій універсальне, в ньому є багато портів введення / виводу, і периферійних пристроїв. таких як УСАПП, ШІМ, ЦАП, АЦП і т.д. Насамперед в ініціалізації мк потрібно вказати початок "стека". Ініціалізацію ми проводимо після маркера "RESET:".
Якби ми не вводили команду .include "m8def.inc" на початку коду, то нам довелося б писати так:
Різниця суттєва, на мій погляд.
СТЕК, це пам'ять магазинного типу: (останній увійшов, виходить першим).
Магазинного типу - це не супермаркет, а ріжок від автомата. сподіваюся все представили як в нього заряджаються патрони і як вони потім звідти витягуються.
Потрібно приділяти дуже велику увагу пам'яті СТЕК, тому що будь-яка незначна помилка в роботі з ним, може привести до зриву стека. Це на стільки важлива тема, що я вирішив присвятити їй цілу тему і напишу її в окремій замітці.
Таким чином у нас вийшов такий код:
На даному етапі, можна скомпілювати проект і запустити його для налагодження, але по скільки код у нас нічого не робить, можна буде виявити тільки синтаксичні помилки в коді.
Для правильного процесу налагодження, необхідно задати емулятора частоту, з якою буде працювати МК, це робиться тільки після компіляції і запуску налагодження,
значить знаходимо в панелі меню "Build", розкриваємо її і бачимо "Build and Run", після чого, ми побачимо жовту стрілочку на проти першої команди в нашому лістингу коду. Тепер ми шукаємо в панелі меню "Debug" і натискаємо "AVR Simulator Options", відкривається таке вікно:

В якому ми можемо поміняти МК і його частоту, так само, на панелі з права, ми бачимо деяку інформацію про наш МК: його максимальну частоту, обсяги пам'яті (EEPROM, RAM, FLASH). Тепер відкриваємо даташит на Atmega8, на сторінці 203 (загальний список регістрів) і 205 (загальний список команд) і приступай до написання своєї програми.
І запам'ятай, не бійся експериментувати з симулятором, він від цього не зламається!