- Необходими материали:
- Флаш памет:
- ICSP (In Circuit Serial Programming):
- Схема и хардуер:
- Изгаряне на кода с помощта на MPLAB IPE:
В предишните ни два урока обсъдихме Как да започнем с PIC с помощта на MPLABX и XC8 компилатор, ние също направихме нашата първа LED мигаща програма с PIC и я проверихме чрез симулация. Сега е време да се докоснем до хардуера. В този урок ще изградим малка верига на Perf Board за мигане на светодиода с помощта на PIC. Ще изпратим програмата към нашия микроконтролер PIC и ще проверим мигащия светодиод. За програмиране на PIC MCU ще използваме MPLAB IPE.
Необходими материали:
Както беше обсъдено в нашия предишен урок, ще са ни необходими следните материали:
- PicKit 3
- PIC16F877A IC
- 40 - ПИН държач
- Перфектна дъска
- 20 MHz Crystal OSC
- Женски и мъжки щифтове Bergstick
- 33pf кондензатор - 2Nos, 100uf и 10uf капачка.
- 680 ома, 10K и 560ohm резистор
- LED от всякакъв цвят
- 1 Комплект за запояване
- IC 7805
- 12V адаптер
Какво се случва, когато "изгорим" микроконтролер !!
Обичайна практика е да качите кода в MCU и да го накарате да работи вътре в MCU.
За да разберем това, нека разгледаме нашата програма
Както виждаме, този код е написан на C-Language и няма смисъл за нашия MCU. Тук влиза частта от нашия компилатор; а Compiler е един, който превръща този код в електронен вид машина. Този машинно четим формуляр се нарича HEX код, всеки проект, който създаваме, ще има HEX код, който ще бъде в следната директория
** Вашето местоположение ** \ Blink \ Blink.X \ dist \ default \ production \ Blink.X.production.hex
Ако сте толкова заинтересовани да знаете как изглежда този HEX код, просто го отворете с помощта на бележника. За нашата програма Blink кодът HEX ще изглежда по следния начин:
: 060000000A128A11FC2F18: 100FAA008316031386018312031386018312031324: 100FBA0086150D30F200AF30F100C130F000F00BB1: 100FCA00E42FF10BE42FF20BE42F0000831203133A: 100FDA0086110D30F200AF30F100C130F000F00B95: 100FEA00F42FF10BF42FF20BF42F0000DB2F830107: 060FFA000A128A11D52F36: 02400E007A3FF7: 00000001FF
Има начини как да прочетете това и как да го разберете и обърнете обратно на асемблерен език, но това е напълно извън обхвата на този урок. Така че, просто да го сложа накратко; HEX е крайният софтуерен резултат от нашето кодиране и това е, което ще бъде изпратено от MPLAB IPE за изгаряне на MCU.
Флаш памет:
В кода HEX се съхранява в MCU на място, наречено Flash памет. Флаш паметта е мястото, където нашата програма ще се съхранява в MCU и ще се изпълнява от там. След като компилираме програмата в нашия MPLABX, щяхме да получим следната информация за типа памет на изходната конзола
Тъй като току-що сме съставили малка LED мигаща програма, резюмето на паметта показва, че току-що сме изразходвали 0,5% от наличното програмно пространство и 1,4% от пространството за данни.
Паметта на микроконтролера PIC16F877 основно е разделена на 3 вида:
Памет на програмата: Тази памет съдържа програмата (която бяхме написали), след като я изгорим. За напомняне, броячът на програми изпълнява команди, съхранени в паметта на програмата, една след друга. Тъй като сме написали много малка програма, сме погълнали само 0,5% от общото пространство. Това е енергонезависима памет, означава, че съхранените данни няма да бъдат загубени след изключване на захранването.
Памет за данни: Това е тип RAM памет, която съдържа специални регистри като SFR (Special Function Register), който включва Watchdog timer, Brown out Reset и др. И GPR (General Purpose Register), който включва TRIS и PORT и т.н. Променливите, които се съхраняват в паметта за данни по време на програмата се изтриват, след като изключим MCU. Всяка променлива, декларирана в програмата, ще бъде в паметта на данните. Това също е нестабилна памет.
Данни EEPROM (Електрически изтриваема програмируема памет само за четене): Памет, която позволява съхраняване на променливите в резултат на изгаряне на написаната програма. Например, ако зададем променлива "a", за да запазим стойност 5 в нея и я съхраним в EEPROM, тези данни няма да бъдат загубени, дори ако захранването е изключено. Това е енергонезависима памет.
Паметта на програмата и EEPROM са енергонезависими памет и се наричат Flash памет или EEPROM.
ICSP (In Circuit Serial Programming):
Ще програмираме нашия PIC16F877A, използвайки опцията ICSP, която е налична в нашия MCU.
Сега, какво е ICSP?
ICSP е прост начин, който ни помага да програмираме MCU, дори след като е поставен в нашата платка на проекта. Не е необходимо да имаме отделна платка за програмиране, за да програмираме MCU, всичко, от което се нуждаем, е 6 връзки от програмиста PicKit3 към нашата платка, както следва:
1 |
VPP (или MCLRn) |
За да влезете в режим на програмиране. |
2 |
Vcc |
Захранващ щифт 11 или 32 |
3 |
GND |
Заземен ПИН 12 или 31 |
4 |
PGD - Данни |
RB7. ПИН40 |
5 |
PGC - Часовник |
RB6. ПИН 39 |
6 |
PGM - LVP активиране |
RB3 / RB4. Не е задължително |
ICSP е подходящ за всички PIC пакети; всичко, от което се нуждаем, е да извадим тези пет щифта (6-тия PGM не е задължителен) от MCU до Pickit3, както е показано на снимката по-долу.
Схема и хардуер:
Сега сме подготвили нашия HEX код и също така знаем как да свържем PicKit 3 с нашия PIC MCU с помощта на ICSP. И така, нека продължим да спояваме веригата с помощта на схемите по-долу:
В горната схема съм използвал 7805 за регулиране на изхода 5V към моя PIC MCU. Този регулатор ще се захранва от 12V адаптер за стена. ЧЕРВЕНОТО LED се използва, за да покаже дали PIC се захранва. Конекторът J1 се използва за програмиране на ICSP. Щифтовете са свързани, както е обсъдено в горната таблица.
Първият пинов MCLR трябва да се държи високо с помощта на 10k по подразбиране. Това ще попречи на нулирането на MCU. За да нулирате MCU, щифтът MCLR трябва да се държи на земята, което може да се направи с помощта на превключвател SW1.
Светодиодът е свързан към щифта RB3 чрез резистор на стойност 560 ома (виж калкулатора на LED резистори). Ако всичко е правилно, след като програмата ни бъде качена, този светодиод трябва да мига според програмата. Цялата верига е изградена върху Perfboard чрез запояване на всички компоненти върху нея, както можете да видите на изображението в горната част.
Изгаряне на кода с помощта на MPLAB IPE:
За да запишете кода, следвайте стъпките по-долу:
- Стартирайте MPLAB IPE.
- Свържете единия край на вашия PicKit 3 към вашия компютър, а другия край към вашите ICSP щифтове на перфектната платка.
- Свържете се с вашето PIC устройство, като кликнете върху бутона за свързване.
- Потърсете Blink HEX файла и щракнете върху Програма.
Ако всичко върви по план, трябва да получите съобщението за успех на екрана. Проверете кода и видеото по-долу за пълна демонстрация и използвайте раздела за коментари, ако имате някакви съмнения.
Благодаря ти!!!
Нека се срещнем в следващия урок, където ще играем с повече светодиоди и превключвател.