- Підготовка до програмування:
- Створення нового проекту за допомогою MPLAB-X:
- Ознайомлення з регістрами конфігурації:
- Встановлення бітів конфігурації в MPLAB-X:
- Програмування PIC на блимання світлодіода:
- Принципова схема та моделювання Протея:
Це другий підручник нашої серії навчальних посібників з PIC. У нашому попередньому навчальному посібнику Початок роботи з мікроконтролером PIC: Вступ до PIC та MPLABX ми дізналися основні відомості про наш мікроконтролер PIC, також встановили необхідне програмне забезпечення та придбали новий програміст PicKit 3, який незабаром будемо використовувати. Тепер ми готові розпочати роботу з нашою першою програмою миготіння світлодіодів за допомогою PIC16F877A. У цьому посібнику ми також дізнаємося про регістри конфігурації.
Цей підручник передбачає, що ви встановили необхідне програмне забезпечення на свій комп’ютер, і ви знаєте кілька пристойних основ про PIC MCU. Якщо ні, поверніться до попереднього підручника та почніть звідти.
Підготовка до програмування:
Оскільки ми вирішили використовувати PIC16F877A, з компілятором XC8 давайте почнемо з їх таблицею даних. Я рекомендую всім завантажити таблицю даних PIC16F877A та посібник компілятора XC8, оскільки ми будемо звертатись до них часто під час просування нашого навчального посібника. Завжди є гарною практикою прочитати повну таблицю даних будь-якого MCU перед тим, як насправді почати програмування з ним.
Тепер, перед тим, як ми відкриємо наш MPLAB-X і почнемо програмувати, є декілька основних речей, про які слід пам’ятати. У будь-якому випадку, оскільки це наша перша програма, я не хочу переслідувати вас, люди з великою кількістю теорії, але ми зупинимося тут і там, коли ми програмуємо, і я поясню вам речі як такі. Якщо у вас недостатньо часу, щоб прочитати їх, просто погляньте і перейдіть до відео внизу сторінки.
Створення нового проекту за допомогою MPLAB-X:
Крок 1: Запустіть MPLAB-X IDE, яку ми встановили в попередньому класі, після завантаження вона повинна виглядати приблизно так.
Крок 2: Клацніть на Файли -> Новий проект, або скористайтеся комбінацією клавіш Ctrl + Shift + N. Ви отримаєте наступне спливаюче вікно, з якого вам слід вибрати Автономний проект і натиснути Далі.
Крок 3: Тепер ми повинні вибрати наш Пристрій для проекту. Тож введіть як PIC16F877A у розкривному списку Вибір пристрою . Після цього це має бути так, а потім натисніть кнопку Далі.
Крок 4: Наступна сторінка дозволить нам вибрати інструмент для нашого проекту. Це буде PicKit 3 для нашого проекту. Виберіть PicKit 3 і натисніть далі
Крок 5: На наступній сторінці буде запропоновано вибрати компілятор, вибрати компілятор XC8 і натиснути далі.
Крок 6: На цій сторінці ми повинні назвати наш проект та вибрати місце, де проект повинен бути збережений. Я назвав цей проект Blink і зберег на своєму робочому столі. Ви можете назвати та зберегти його на ваш бажаний спосіб. Наш проект буде збережено у вигляді папки з розширенням .X, яке можна безпосередньо запустити MAPLB-X. Клацніть Готово після закінчення.
Крок 7: Ось і все !!! Наш проект створений. У самому лівому вікні буде показано назву проекту (тут блимає), клацніть на нього, щоб ми могли переглянути всі каталоги всередині нього.
Для того, щоб розпочати програмування, нам потрібно додати головний файл C, всередину каталогу вихідних файлів. Для цього просто клацніть правою кнопкою миші на вихідному файлі та виберіть Створити -> Основний файл C, як показано на малюнку нижче.
Крок 8: З'явиться таке діалогове вікно, в якому має бути вказано ім'я C-файлу. Я знову назвав у Blink, але вибір залишається за вами. Назвіть його у стовпці Ім'я файлу та натисніть на закінчити.
Крок 9: Після створення основного файлу C IDE відкриє його нам із деякими кодами за замовчуванням, як показано нижче.
Крок 10: Ось і все, тепер ми можемо розпочати програмування нашого коду у файлі C-main. Код за замовчуванням не буде використовуватися в наших підручниках. Тож давайте видалимо їх повністю.
Ознайомлення з регістрами конфігурації:
Перш ніж починати програмувати будь-який мікроконтролер, ми повинні знати про його регістри конфігурації.
То що це за регістри конфігурації, як і навіщо ми їх встановлюємо?
Пристрої PIC мають кілька розташувань, які містять біти конфігурації або запобіжники. Ці біти визначають основні дії пристрою, такі як режим генератора, сторожовий таймер, режим програмування та захист коду. Ці біти повинні бути встановлені правильно, щоб запустити код, інакше у нас не працює пристрій . Тому дуже важливо знати про ці конфігураційні регістри ще до того, як ми почнемо з нашої програми Blink.
Для того, щоб використовувати ці регістри конфігурації, ми повинні прочитати таблицю даних і зрозуміти, які різні типи бітів конфігурації доступні та їх функції. Ці біти можна встановити або скинути на основі наших вимог програмування, використовуючи прагму конфігурації.
Прагма має наступні форми.
#pragma config setting = state-value #pragma config register = value
де параметр - це дескриптор налаштування конфігурації, наприклад, WDT, а стан - це текстовий опис бажаного стану, наприклад, OFF. Розглянемо наступні приклади.
#pragma config WDT = ON // увімкнути сторожовий таймер #pragma config WDTPS = 0x1A // вказати значення шкали поштової шкали
РЕЛАКС !!….. РЕЛАКС !!…. РЕЛАКС !!…...
Я знаю, що це надто заглибилося нам у голови, і встановлення цих бітів конфігурації може здатися трохи складним для новачка !! Але це зухвало не з нашим MPLAB-X.
Встановлення бітів конфігурації в MPLAB-X:
Microchip значно полегшив цей процес втоми, використовуючи графічні зображення різних типів бітів конфігурації. Тому зараз, щоб встановити їх, нам просто потрібно виконати наведені нижче дії.
Крок 1: Клацніть на Вікно -> Перегляд пам'яті PIC -> Біти конфігурації. Як показано нижче.
Крок 2: Це має відкрити вікно «Біти конфігурації» внизу нашої IDE, як показано нижче. Це місце, де ми можемо встановити кожен з бітів конфігурації відповідно до наших потреб. Я поясню кожен біт та його мету, коли ми проходимо кроки.
Крок 3: Перший біт - це біт вибору генератора.
PIC16F87XA може працювати в чотирьох різних режимах генератора. Ці чотири режими можна вибрати, програмуючи два біти конфігурації (FOSC1 і FOSC0):
- LP Кристал низької потужності
- Кристал / резонатор XT
- Високошвидкісний кристал / резонатор HS
- RC резистор / конденсатор
Для наших проектів ми використовуємо 20 МГц Osc, тому ми повинні вибрати HS з випадаючого вікна.
Крок 4: Наступним бітом буде наш сторожовий таймер Увімкнути біт.
Watchdog Timer - це вільний, вбудований RC-генератор, який не потребує зовнішніх компонентів. Цей RC-генератор відокремлений від RC-генератора виводу OSC1 / CLKI. Це означає, що WDT буде працювати, навіть якщо годинник на виводах OSC1 / CLKI та OSC2 / CLKO на пристрої зупинено. Під час нормальної роботи тайм-аут WDT генерує скидання пристрою (скидання сторожового таймера). Біт TO в реєстрі стану буде очищений після тайм-ауту сторожового таймера. Якщо таймер не очищений у нашому програмному кодуванні, то вся MCU буде скинута після кожного переповнення таймера WDT. WDT можна назавжди відключити, очистивши біт конфігурації.
Ми не використовуємо WDT у нашій програмі, тому давайте очистимо це, вибравши ВИМК. У спадному вікні.
Крок 5: Наступним бітом буде біт таймера включення.
Таймер включення забезпечує фіксований номінальний тайм-аут у межах 72 мс лише від POR. Таймер живлення працює на внутрішньому RC-генераторі. Мікросхема зберігається в режимі скидання, доки активний PWRT. Часова затримка PWRT дозволяє VDD піднятися до прийнятного рівня. Біт конфігурації надається для ввімкнення або вимкнення PWRT.
Нам не будуть потрібні такі затримки в нашій програмі, тому давайте вимкнемо це також ВИМКНУТИ.
Крок 6: Наступним бітом буде програмування низької напруги.
Біт LVP слова конфігурації дозволяє програмувати ICSP низької напруги. Цей режим дозволяє програмувати мікроконтролер через ICSP за допомогою джерела VDD в діапазоні робочої напруги. Це означає лише, що VPP не потрібно підводити до VIHH, а замість цього можна залишати при нормальній робочій напрузі. У цьому режимі штифт RB3 / PGM призначений для функції програмування і перестає бути штифтом вводу-виводу загального призначення. Під час програмування VDD застосовується до виводу MCLR. Щоб увійти в режим програмування, VDD повинен бути застосований до RB3 / PGM за умови встановлення біту LVP.
Давайте вимкнемо LVP, щоб ми могли використовувати RB3 як вивід вводу-виводу. Щоб зробити це, просто включите цей OFF з допомогою списку.
Крок 7: Наступними бітами будуть EEPROM та біти захисту пам'яті програми. Якщо цей біт увімкнено, після запрограмування MCU ніхто не буде отримувати нашу програму з апаратного забезпечення. Але поки що залишмо всіх трьох вимкненими.
Після того, як налаштування виконано відповідно до вказівок, діалогове вікно має виглядати приблизно так.
Крок 8: Тепер натисніть на Generate Source Code to Output, наш код буде сформовано, тепер просто скопіюйте його разом із заголовком та вставте в наш C-файл Blink.c, як показано нижче.
Це наша робота з налаштування виконана. Ми можемо мати таку конфігурацію для всіх наших проектів. Але якщо вам цікаво, ви можете поспішати з ними пізніше.
Програмування PIC на блимання світлодіода:
У цій програмі ми будемо використовувати наш мікроконтролер PIC, щоб блимати світлодіодом, підключеним до виводу вводу-виводу. Давайте подивимось на різні штифти вводу-виводу, доступні на нашому PIC16F877A.
Як показано вище, PIC16F877 має 5 основних вхідних / вихідних портів. Зазвичай їх позначають PORT A (RA), PORT B (RB), PORT C (RC), PORT D (RD) і PORT E (RE). Ці порти використовуються для взаємодії вводу / виводу. У цьому контролері ширина “PORT A” становить лише 6 бітів (від RA-0 до RA-5), “PORT B”, “PORT C”, “PORT D” - лише 8 бітів (RB-0 до RB-7, Від RC-0 до RC-7, від RD-0 до RD-7), “PORT E” має лише 3-бітову ширину (RE-0 до RE-2).
Всі ці порти двонаправлені. Напрямок порту контролюється за допомогою регістрів TRIS (X) (TRIS A використовується для встановлення напрямку PORT-A, TRIS B використовується для встановлення напрямку для PORT-B тощо). Встановлення біта TRIS (X) '1' встановить відповідний біт PORT (X) як вхідний сигнал. Очищення біта TRIS (X) '0' встановить відповідний біт PORT (X) як вихідний.
Для нашого проекту ми повинні зробити штифт RB3 PORT B як вихід, щоб наш світлодіод можна було підключити до нього. Ось код для блимання світлодіодів за допомогою мікроконтролера PIC:
#включати
Спочатку ми вказали зовнішню частоту кристала, використовуючи #define _XTAL_FREQ 20000000. Потім у функції void main () ми доручили нашому MCU, що ми збираємося використовувати RB3 як вихідний (TRISB = 0X00;) штифт. Тоді, нарешті, нескінченна в той час як цикл використовується так, що світлодіод блимає триває вічно. Щоб блимати світлодіодом, ми повинні просто вмикати та вимикати його із помітною затримкою.
Після завершення кодування побудуйте проект за допомогою команди «Виконати -> Створити головний проект». Це має скомпілювати вашу програму. Якщо все в порядку (як і повинно бути), вихідна консоль внизу екрана покаже повідомлення BUILD SUCCESSFUL, як показано на малюнку нижче.
Принципова схема та моделювання Протея:
Як тільки ми побудуємо проект і, якщо побудова буде успішною, на тлі нашої IDE буде створено шістнадцятковий файл. Цей шістнадцятковий файл можна знайти всередині наведеного нижче каталогу
Це може відрізнятися для вас, якщо ви зберігали в іншому місці.
Тепер давайте швидко відкриємо Proteus, який ми вже встановили раніше, і створимо схеми для цього проекту. Ми не збираємося пояснювати, як це зробити, оскільки це виходить за рамки цього проекту. Але щоб не хвилюватися, це пояснюється у відео нижче. Після того, як ви будете слідувати інструкціям і будувати схеми, це має виглядати приблизно так
Щоб змоделювати вихідні дані, натисніть кнопку відтворення в нижньому лівому куті екрану після завантаження Hex-файлу. Він повинен блимати світлодіодом, підключеним до RB3 MCU. Якщо у вас є якісь проблеми, перегляньте відео, якщо все ще не вирішено, скористайтеся розділом коментарів для допомоги.
Зараз ми створили свій перший проект з мікроконтролером PIC та перевірили результати за допомогою програмного забезпечення для моделювання. Ідіть, налаштовуйте програму і спостерігайте за результатами. Поки ми не зустрінемося з нашим наступним проектом.
О, чекай !!
У нашому наступному проекті ми дізнаємось, як змусити це працювати на реальному обладнанні. Для цього нам знадобляться наступні інструменти, щоб тримати їх готовими. До тих пір ЩАСЛИВО НАВЧАННЯ !!
- PicKit 3
- PIC16F877A IC
- 40-контактний тримач ІС
- Перф дошка
- 20 МГц Crystal OSC
- Жіночі та чоловічі шпильки Bergstick
- Конденсатор 33pf - 2Ні
- Резистор 680 Ом
- Світлодіод будь-якого кольору
- Набір для пайки.