- Необхідні матеріали:
- Флеш-пам'ять:
- ICSP (в схемі послідовного програмування):
- Схема та обладнання:
- Запис коду за допомогою MPLAB IPE:
У попередніх двох навчальних посібниках ми обговорювали, як розпочати роботу з PIC за допомогою компілятора MPLABX та XC8, ми також створили нашу першу програму миготіння світлодіодів з PIC та перевірили її за допомогою моделювання. Тепер нам пора взяти до рук обладнання. У цьому підручнику ми побудуємо невелику схему на платі Perf для блимання світлодіода за допомогою PIC. Ми передамо програму на наш мікроконтролер PIC і перевіримо світлодіодне блимання. Для програмування PIC MCU ми будемо використовувати MPLAB IPE.
Необхідні матеріали:
Як обговорювалось у нашому попередньому підручнику, нам знадобляться такі матеріали:
- PicKit 3
- PIC16F877A IC
- 40 - тримач мікросхеми штифта
- Перф дошка
- 20 МГц Crystal OSC
- Жіночі та чоловічі шпильки Bergstick
- Конденсатор 33pf - 2Nos, 100uf та 10uf cap.
- Резистор 680 Ом, 10 К і 560 Ом
- Світлодіод будь-якого кольору
- 1Паяльний комплект
- IC 7805
- Адаптер 12 В
Що станеться, коли ми "спалимо" мікроконтролер !!
Це звичайна практика завантажувати код в MCU і змусити його працювати всередині MCU.
Щоб зрозуміти це, давайте подивимось на нашу програму
Як ми бачимо, цей код написаний мовою C, і це не матиме сенсу для нашого MCU. Тут входить частина нашого компілятора; компілятор це один, який перетворює цей код в читається вигляд машини. Ця машиночитана форма називається HEX-кодом, кожен проект, який ми створюємо, матиме HEX-код, який буде в наступному каталозі
** Ваше місцезнаходження ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Якщо вам так цікаво дізнатись, як виглядає цей шістнадцятковий код, просто відкрийте його за допомогою блокнота. Для нашої програми Blink код HEX буде виглядати наступним чином:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Є способи, як це прочитати та як зрозуміти та повернути назад на мову асамблеї, але це повністю виходить за межі цього підручника. Отже, якщо просто сказати це в двох словах; HEX - це кінцевий результат програмного забезпечення нашого кодування, і це те, що буде надіслано MPLAB IPE для спалення MCU.
Флеш-пам'ять:
Код HEX зберігається в MCU у місці, яке називається флеш-пам'яттю. Флеш-пам’ять - це місце, де наша програма буде зберігатися всередині MCU і виконуватись звідти. Як тільки ми скомпілюємо програму в нашому MPLABX, ми отримали б наступну інформацію про тип пам'яті на вихідній консолі
Оскільки ми щойно склали невелику програму, яка блимає світлодіодами, підсумок пам'яті показує, що ми щойно витратили 0,5% доступного програмного простору та 1,4% простору даних.
Пам'ять мікроконтролера PIC16F877 в основному поділяється на 3 типи:
Пам'ять програм: Ця пам'ять містить програму (яку ми написали) після того, як ми її записали. Нагадуємо, що програма Counter виконує команди, що зберігаються в пам'яті програми, одну за одною. Оскільки ми написали дуже маленьку програму, ми зайняли лише 0,5% загальної площі. Це енергонезалежна пам’ять, означає, що збережені дані не будуть втрачені після вимкнення живлення.
Пам'ять даних: Це тип пам’яті RAM, який містить спеціальні регістри, такі як SFR (Реєстр спеціальних функцій), який включає таймер сторожового контролю, скидання коричневого кольору тощо та GPR (Реєстр загального призначення), що включає TRIS та PORT тощо. Змінні, що зберігаються в пам'яті даних під час програми видаляються після того, як ми вимкнемо MCU. Будь-яка змінна, оголошена в програмі, буде знаходитися всередині пам'яті даних. Це також нестабільна пам’ять.
Дані EEPROM (Електрично стирається програмована пам'ять, доступна лише для читання): пам'ять, яка дозволяє зберігати змінні в результаті запису записаної програми. Наприклад, якщо ми призначимо змінну "a", щоб зберегти в ній значення 5 і зберегти її в EEPROM, ці дані не будуть втрачені, навіть якщо живлення вимкнено. Це енергонезалежна пам’ять.
Пам'ять програм та EEPROM - це енергонезалежні спогади, які називаються флеш-пам'яттю або EEPROM.
ICSP (в схемі послідовного програмування):
Ми будемо програмувати наш PIC16F877A, використовуючи опцію ICSP, яка доступна в нашому MCU.
Що ж таке ICSP?
ICSP - це простий спосіб, який допомагає нам програмувати MCU навіть після того, як він розміщений у нашій платі проекту. Для програмування MCU немає необхідності мати окрему плату програміста, нам потрібно лише 6 підключень від програміста PicKit3 до нашої плати наступним чином:
1 |
VPP (або MCLRn) |
Для переходу в режим програмування. |
2 |
Vcc |
Висновок живлення 11 або 32 |
3 |
GND |
Заземлений PIN-код 12 або 31 |
4 |
PGD - Дані |
RB7. PIN40 |
5 |
PGC - Годинник |
RB6. PIN 39 |
6 |
PGM - LVP увімкнути |
RB3 / RB4. Не є обов’язковим |
ICSP підходить для всіх пакетів PIC; все, що нам потрібно, це витягнути ці п’ять штифтів (6-контактний PGM не є обов’язковим) з мікроконтролера до Pickit3, як показано на малюнку нижче.
Схема та обладнання:
Тепер у нас є наш шестигранний код, і ми також знаємо, як підключити PicKit 3 до нашого мікроконтролера PIC за допомогою ICSP. Отже, давайте впаюємо схему за допомогою наведених нижче схем:
У наведеній вище схемі я використовував 7805 для регулювання вихідної напруги 5 В на мій мікроконтроллер PIC. Цей регулятор буде харчування від стіни вітрини адаптера 1. ЧЕРВОНИЙ світлодіод використовується, щоб вказати, чи живиться PIC. З'єднувач J1 використовується для програмування ICSP. Виводи з'єднуються, як обговорювалося у наведеній вище таблиці.
Перший штифт MCLR за замовчуванням повинен бути високим за допомогою 10k. Це не дозволить MCU скинути налаштування. Для скидання MCU штифт MCLR повинен бути прикріплений до землі, що можна зробити за допомогою перемикача SW1.
Світлодіод підключений до виводу RB3 через резистор величиною 560 Ом (Див. Калькулятор світлодіодного резистора). Якщо після завантаження нашої програми все правильно, цей світлодіод повинен блимати залежно від програми. Вся схема побудована на Perfboard шляхом пайки всіх компонентів на ній, як ви можете бачити на зображенні вгорі.
Запис коду за допомогою MPLAB IPE:
Щоб записати код, виконайте наступні кроки:
- Запустіть MPLAB IPE.
- Підключіть один кінець вашого PicKit 3 до ПК, а інший кінець до ваших штифтів ICSP на платі перф.
- Підключіться до свого пристрою PIC, натиснувши кнопку підключення.
- Знайдіть файл Blink HEX та натисніть Програма.
Якщо все відбувається за планом, ви повинні отримати повідомлення про успіх на екрані. Перевірте код і відео нижче для повної демонстрації та скористайтеся розділом коментарів, якщо у вас є сумніви.
Дякую!!!
Давайте зустрінемось у наступному уроці, де ми будемо грати з більшою кількістю світлодіодів та перемикачем.