Найбільш популярною безкоштовною програмою для програмування мікроконтролерів фірми Microchip (і не тільки мікроконтролерів) є програма ic-prog. Сайт цієї програми www.ic-prog.com
На цьому сайті Ви знайдете не тільки дану програму, але і величезну кількість принципових схем програматорів. Найбільш прийнятним програматором є Propic II. Проте, його схему важко назвати простою. Найбільш популярною зв'язкою є програма IC-PROG + «залізо» ProPic II.
Внутрішньосхемний відладчик (дебаггер) служить для внутрішньосхемної відладки мікроконтролерів. Відладка здійснюється на штатному серійному мікроконтролері, при цьому відладжувана програма записується в штатну FLASH програмну пам'ять мікроконтролера. Для того, щоб функціонував режим внутрішньосхемної відладки, в серійні зразки мікро контролерів вбудовують спеціальний механізм – ICD (In_Circuit Debugger). Для відладки цей механізм включається, а для серійних виробів жорстко вимкнений в конфігураційному слові мікроконтролера.
Принцип роботи механізму наступний: під час роботи мікроконтролера досягши точки останову або при покроковій відладці відпрацьовується технологічне немасковане переривання і управління передається підпрограмі відладчика (вона непомітно для користувача дописується в останні елементи програмної пам'яті).
Ця підпрограма виконує функцію передачі через дебаггер в комп'ютер стан елементів пам'яті мікроконтролера, а так само змінює їх стан і перемикає режими роботи по команді з комп'ютера. В результаті частина комірок пам‘яті програм і регістрів ОЗП стає недоступною для відладжуваної програми і резервується для роботи підпрограми відладчика.
Крім цього, при відладці так само стають недоступними:
– 2 рівні стека (з 31);
– біти порту RB6 і RB7 (для програмування мікроконтролера і управлінням режимами відладки);
– виведення MCLR/Vpp (використовується для програмування) – режим Low Voltage ICSP Programming примусово вимикається.
Слід зазначити, що обмеження вносяться лише при включеному режимі відладки. Якщо ж програма дуже велика, в цьому випадку можна порекомендувати відладжувати програму частинами, а потім відключити режим відладки і повністю запрограмувати використовуваний мікроконтролер. При цьому знімаються всі обмеження, що накладаються, MPLAB_ICD2, він працює в режимі звичайного програматора.
Таким чином, за допомогою MPLAB_ICD2 можна не тільки написати програму, відладити її на демонстраційній платі або ж пристрої, що розробляється, але і використовувати ICD2 як серійного програматора (у тому числі і внутрішньосхемного). А невисока вартість дебаггера робить його вельми привабливим багатофункціональним налагоджувальним засобом.
Працює MPLAB ICD2 під управлінням безкоштовного універсального середовища розробника MPLAB IDE, яке періодично оновлюється для підтримки нових мікроконтролерів і перевидається на CD_ROM, а так само доступна на сайті www.microchip.com. Причому ICD2 працює як із старими 16_битными версіями MPLAB IDE 5.xx (підтримується робота тільки через RS_232), так і з новими 32_bit версіями MPLAB IDE 6.xx (підтримується як RS_232, так і USB).
Підтримується установка точок останову, перегляд і зміна пам'яті даних і EEPROM. Крім того, ICD2 можна використовувати як внутрішньосхемний програматор, при цьому вбудований захист від перевантажень по струму і напрузі, є діагностичні світлодіоди контролю стану.
Якщо дебаггер підключається до комп'ютера через USB, то немає необхідності використовувати додаткове джерело живлення. Зрозуміло, що для живлення відладжуваної плати він все-таки необхідний. Від відладжуваної схеми дебаггер живитися не може. У разі живлення дебаггера від зовнішнього джерела живлення (підключення через RS_232 або USB) дебаггер здатний видавати на вихід 5В 150мА, що дозволяє живити малопотужні відладжувані схеми.
4.7 Демонстраційно – відладочна плата PICDEM 2 Plus.
Дуже часто основним чинником, що впливає на успіх розробки, є швидкість виходу виробу на ринок. Тому так важливо почати розробку програми якомога раніше, ще до того, як буде розроблене і виготовлене «залізо» макетного зразка. Так само на початку проектування деколи буває неясно, який варіант реалізації того або іншого вузла буде кращім, якому інтерфейсу передачі даних віддати перевгу, і т.п. У цих і інших подібних ситуаціях на допомогу програмістові мікроконтролерних систем приходять налагоджувальні плати. Це вироби, що містять всі необхідні компоненти для роботи мікроконтролера (кола живлення, скидання, тактового генератора). Крім того, на платі містяться периферійні схеми і пристрої (ЖКІ індикатор, світлодіоди, клавіатура, годинник реального часу, периферійні мікросхеми (CAN, RS_232, I2C, SPI і т.д.)), а так само макетне поле, де при необхідності можна спаяти свою частину схеми. Іншими словами, маючи таку плату, програміст має все необхідне для початку розробки і внутрішньосхемної відладки програми.
Налагоджувальна плата PICDEM 2 Plus, демонстраційна плата від Microchip, має ICD_роз‘єм, ЖКІ індикатор, звуковий випромінювач і температурний датчик. PICDEM 2 Plus дозволяє розробникові швидко приступити до створення і відладки програм для 18-, 28- і 40 pin FLASHмікроконтролерів PICmicro.
Електрична схема плати PICDEM 2 Plus приведена в додатку Г.
При програмуванні за допомогою MPLAB ICD2 порядок дій такий:
1. Вибираємо програматор MPLAB ICD2, після чого з‘явиться меню:
Призначення кнопок наступне: програмування мікроконтролера, читання, перевірка, стирання, перевірка «чистий?», зв'язок з MPLAB ICD2.
2. З'єднання з MPLAB ICD2 відбувається автоматично, проте якщо воно не відбулося, необхідно натиснути кнопку, MPLAB ICD2.
Клацаємо мишею по першій кнопці і завантажуємо програму, що відкомпілювалася, у відладжуваний контролер. Можливо, потрібно буде на вкладці параметрів програмування поміняти значення бітів конфігурації (WDT, CP, і ін.). Після успішного запису і звірки можна кликнути по іконі скидання, при цьому на початковому тексті програми з'явиться сіра смужка покажчика поточної команди. Тепер можна запустити покрокову відладку, виконання в реальному часі, спробувати змінити вміст ОЗП/EEPROM, встановити точки останову.
Отже, Ви записали програму в контроллер, але у Вас взагалі нічого не працює або працює з перебоями? Що робити?
1. Можливо, Ви десь допустили помилку в програмному коді.
2. Можливо, Ви допустили помилку в слові конфігурації. Це найбільш типова помилка. Перевірте правильність установки виду тактового генератора (HS, XT, RC). Також, якщо Ви не передбачали використання WDT, відключите його і в слові конфігурації. Перша ознака включеного WDT – постійний перезапуск мікроконтролера.
Декілька коротких рекомендацій:
– Якщо дебаггер успішно програмує кристал, але при спробі скидання і покрокової відладки видає помилку зв'язку, перевірте відповідність типу генератора в конфігураційному слові (HS,XT, RC і тд) реально використовуваному на відладжуваній платі;
– Швидкість роботи покрокової відладки можна збільшити, обмеживши кількість оновлюваних регістрів ОЗП при відладці;
– Якщо Ваша програма невелика, є сенс змінити кінцеву адресу програмної пам'яті на вкладці опцій програмування ICD2. В цьому випадку кожного разу при зміні програми переписуватиметься не вся програмна пам'ять, а лише її частина, що зменшить час програмування мікросхеми.
5 ЛАБОРАТОРНИЙ ПРАКТИКУМ
Лабораторна робота 1
На прикладі мікроконтролера PIC16F877 вивчити режими роботи портів введення/виводу, способи й особливості їх ініціалізації. Розглянути введення/вивід дискретних сигналів. Набути практичні уміння роботи з пакетом MPLAB, засвоїти способи задання зовнішніх впливів на виводи портів мікроконтролера.
1) Ініціалізація портів введення/виводу.
Настроїти порт A на вивід (регістр TRISA).Настроїти порт B на введення (регістр TRISB).
Ввід інформації з датчиків дискретних сигналів.
Увести через порт B число M, відповідно до варіанта завдання.
Записати введене число в комірку пам'яті даних з адресою A, відповідно до варіанта завдання.
2) Вивід дискретних сигналів із мікроконтролера.
Вивести молодшу тетраду введеного числа в порт A. Вивести старшу тетраду введеного числа в порт A.Варіант | Номер у журналі групи | ||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ||
1 | M | 121 | 80 | 54 | 112 | 98 | 100 | 34 | 135 | 211 | 240 | 167 | 99 | 56 | 63 | 73 | 23 | 231 | 35 |
A | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | |
2 | M | 151 | 57 | 213 | 89 | 81 | 190 | 119 | 78 | 83 | 67 | 34 | 144 | 132 | 139 | 21 | 141 | 252 | 84 |
A | 29 | 30 | 31 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | |
3 | M | 50 | 93 | 43 | 140 | 248 | 97 | 75 | 52 | 69 | 61 | 80 | 139 | 169 | 232 | 210 | 109 | 204 | 45 |
A | 26 | 27 | 28 | 29 | 30 | 31 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
4 | M | 37 | 65 | 93 | 86 | 180 | 34 | 48 | 201 | 74 | 80 | 207 | 176 | 18 | 55 | 156 | 238 | 49 | 50 |
A | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
Приклад програми. Виконання конфігурації розрядів 7 – 4 порту B на вивід, а розрядів 3 – 0 – на введення інформації.