Робота в codevisionavr

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

Робота в codevisionavr

У чому ж плюси цієї програми?

CodeVisionAVR - це середовище розробки, яка підтримує всі операції з МК AVR. У ній ми можемо написати заготовку коду, скомпілювати її та за допомогою програматора "залити" в потрібний нам МК. І не треба окремо качати програму-прошіватель, компілятор і інші непотрібні програми. А навіщо, якщо все це є в КодВіжне? Також КодВіжн підтримує майже всі відомі програматори для AVR, будь це китайські клони або оригінальні програматори. Великий плюс КодВіжена в тому, що він сам створює готовий шаблон програми, з якого нам потрібно видалити все зайве, що є безсумнівним плюсом для новачків.

Ось так виглядає програма після її установки (клікніть по картініке, щоб збільшити зображення)

Для того, щоб створити новий проект, натискаємо по значку "шестерня":

Після вилізе ось таке віконце. Ставимо маркер-точку на AT90, Atiny, FPSLIC і натискаємо "ОК".

Потім вилізе ось таке віконце. У червоному прямокутнику я показав, на яку частину віконця треба звернути увагу:

Вибираємо наш МК. В даному випадку я використовую МК Atiny2313, тому з усього списку МК, яка пропонує нам програма, вибираю саме його.

Також можна поміняти частоту "Clock". За умовчанням вона встановлюється на 8 мегагерц.

Далі натискаємо в цьому ж віконці на значок "шестерінки":

Вийшло ось таке віконце. Насамперед ми вибираємо папку, в яку будемо зберігати наш проект. Я створив папку на робочому столі і назвав її MK AVR. Потім написав назву нашого проекту "lesson 1", ну типу "перший урок"). Ну і потім натискаємо кнопку "Зберегти". Зверніть увагу на розширення файлу, яке я обвів фіолетовим кольором:

Потім вийде ще одне таке ж віконце, тільки розширення файлу буде іншим. Чи не губимося, прописуємо також назва файлу, в даному випадку lesson 1, і натискаємо кнопку "Зберегти"

І потім вийде точно таке ж завершальне віконце ;-). Також не губимося, прописуємо назву файлу і знову натискаємо кнопку "Зберегти".

Ну ось ми і готові до створення нашого першого проекту ;-)

КодВіжен для нас приготував шаблон. Тут явно багато зайвого барахла. Насамперед зносимо шапку

Виділяємо, натискаємо Del.

Отже, тепер думаємо над проектом, який будемо хімічити. Моргання одного светодіодик - це вже занадто банально. Тому ми візьмемо цілих ТРИ світлодіода! Наша програма буде по черзі запалювати кожен світлодіод і потім в такому ж порядку їх гасити. У нас буде ось такий алгоритм, тобто порядок дій:

1) При подачі живлення на МК запалити перший світлодіод.

2) Через 1 секунду запалити другий світлодіод, але перший світлодіод при цьому продовжує горіти.

3) Через 1 секунду запалити третій світлодіод, але два попередніх також горять. тобто у нас горять відразу 3 світлодіода.

4) Через 2 секунди гасне третій світлодіод.

5) Через секунду гасне другий світлодіод.

6) Ще через секунду гасне перший світлодіод.

7) Через 2 секунди весь цей цикл повторюється з пункту 1.

Алгоритм ми з вами узгодили. Залишилася справа за малим: написати програму ;-)

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

Includeс англ. - включати, містити, підключати. Include ще називається оператором приєднання зовнішніх файлів.

Тобто ми з вами приєднуємо до нашої програми бібліотеку "tiny 2313.h" для МК Atiny 2313, так як саме на ньому буде працювати наша схема. А також підключаємо бібліотеку "delay.h". Delay - c англ. відкладати, відстрочувати. Тобто грубо кажучи, підключаємо ще і затримку.

Уф, дві строчки коду начебто написали).

Сама програма пишеться після void main (void) між фігурними дужками. Там ми будемо писати нашу програму.

Давайте уважно глянемо на наш МК:

Тут ми бачимо основну назву ніжок, а в дужках їх подвійне призначення. Подвійне призначення нас поки не цікавить. Для нас в даний момент цікаві позначення PA, PB, PD. Їх ще називають портами вводу-виводу. Тобто на них можна щось вводити і з них можна щось виводити). В даному випадку я хочу використовувати ніжки РВ0, РВ1, РВ2 для того, щоб управляти світлодіодами. На кожну з цих ніжок я повішу по одному світлодіоду, разом виходить три. Решта ніжки нас не цікавлять, тому що ми не будемо їх використовувати.

Наша схема буде виглядати ось таким чином:

Отже, я повинен налаштувати ці ніжки для управління світлодіодами.

Отже, в фігурних дужках пишемо:

0b - це бінарна система числення. Налаштовувати в бінарній системі зручно тим, що кожен біт - це одна ніжка МК. Тому рахунок йде справа-наліво. Придивіться до малюнка вище. Тут ми бачимо PORTB і нулі при двійковій ситеме обчислення. Що це означає? А означає це те, що ці висновки при невикористанні їх в програмі будуть притягнуті до нуля, тобто на них буде низький потенціал або нуль Вольт. У разі, якщо ми бачимо одинички встановлені на будь-якому з бітів, то це означає, що на цьому порту при неіпользованіі в програмі у нас буде високий потенціал або плюс 5 вольт, або, кажучи іншими словами, цей висновок у нас буде прийнятий до плюса харчування.

Це означає, що PB0, PB1, PB2 налаштовані на вихід. Вважаємо справа-наліво, якщо ви не забули. А якщо нуль, то значить налаштовані на вхід.

Після кожного рядка не забувайте ставити знак ";". інакше при компіляції (перетворення вашої програми в код, який розуміє МК), будуть помилки.

Тепер розглянемо while (1). Він означає, що шматочок програми, який буде написаний після нього, буде зациклюватися, тобто повторюватися нескінченну кількість разів.

Робота в codevisionavr

Ну і власне можна почати писати саму програму.

Отже, як вона буде виглядати?

Робота в codevisionavr

Дивіться, програма знаходиться між фігурними дужками. Ці дужки належать while (1). Тобто цей шматок програми буде повторюватися безліч разів.

Давайте розберемо саму програму.

PORTB.0 = 1; Це означає, що при подачі живлення на МК, у нас ніжка PB0 матиме логічну одиницю. тобто на виході цієї ніжки буде 5 Вольт, які запалять світлодіод.

delay_ms (1000); Чекаємо 1000 мілісекунд, тобто 1 секунду.

PORTB.1 = 1; Через одну секунду на ніжці PB1 з'являється логічна одиниця, тобто 5 вольт, які і запалять другий світлодіод

delay_ms (1000); Чекаємо ще одну секунду.

PORTB.2 = 1; Як тільки пройшла секунда, у нас на ніжці PB2 з'являється логічна одиниця, і, отже, запалюється третій світлодіод.

Але потім як пройдуть ці дві секунди.

PORTB.2 = 0; На ніжці PB2 з'являється логічний нуль, тобто напруга зникає. Третій світлодіод гасне.

PORTB.1 = 0; Зникає напруга на ніжці PB1. Світлодіод другий теж перестає виділяти світло.

PORTB.0 = 0; І на ніжці PB0 напруга теж стає дорівнює нулю. Перший світлодіод гасне теж.

Ось так виглядає повністю сама програма. Її можна навіть тупо скопіювати і скомпілювати.

void main (void)
PORTB = 0b00000000;
DDRB = 0b00000111;

while (1)
PORTB.0 = 1;
delay_ms (1000);

Ну все, програма написана. Залишилася справа за малим: перетворити нашу писанину в машинний код, щоб його розумів МК. Для цього ми натискаємо на кнопочку "створити всі файли проекту"

Після натискання на цю кнопку, у нас вискакує віконце, в якому йдеться про те, чи успішно пройшла компіляція і тд. Якщо все нормально, то натискаємо ОК.

Якщо щось не так, то відобразяться помилки. Я спеціально прибрав знак ";" після рядка. Лається приблизно якось так, і це не є добре:

Якщо все ОК, то у вас в папці "Exe", там де у вас все проекти лежатиме готовий файлик, в даному випадку "lesson 1. hex".

Тепер цей файлик із задоволенням з'їсть наш МК AVR і буде виконувати програму, яка знаходиться в цьому файлі.

Схожі статті