Короткі інструкції для програмування мікроконтролера pic12f629 675 Особливості роботи EasyPIC5 із мікроконтролерами PIC12F629

Багато радіоаматорів початківців на початку своєї справи бояться починати роботу з мікроконтролером. схема простого програматора для мікроконтролера PIC.Дивимося,збираємо,питуємо на офіційному форумі та залишаємо відгуки якщо у вас вийшло

Починати свою роботу я радив би спочатку з загальних відомостейпро мікроконтролери.

Програматор ExtraCheap

В інтернеті багато різних схем програматорів.Але більшість їх дуже складні,і рідко коли можна побачити фотографії,що б підтверджувало його працездатність.

Але потрібний програматор багатьма запитами знайшли.

Для передачі даних використовується порт COM. Схема живиться від 5 вольт, які можна взяти від портів USB або PS/2.

Ще одна фотографія цього пристрою:

Для роботи з програматором рекомендується використовувати програму IC-Prog

Налаштування IC-Prog

Качаємо з оф сайту останню версію програми IC-Prog Software, NT/2000 driver, Helpfile in Russian language і розпаковуємо їх в одну і ту ж директорію.

Тепер необхідно встановити драйвер програматора, для чого запускаємо icprog.exe (якщо з'являться повідомлення про помилки, просто ігноруємо їх) і вибираємо пункт «Options» в меню «Settings». Відкриваємо вкладку «Programming» та встановлюємо галочку навпроти пункту «Verify during programming». Далі у розділі "Misc" потрібно активувати опцію "Enable NT/2000/XP Driver", зберегти налаштування натиснувши на кнопку "ОК" і перезапустити програму.

Змінити мову інтерфейсу можна у розділі «Language». Для того, щоб вказати програмі тип нашого програматора, натискаємо F3, у вікні вибираємо «JDM Programmer» і вказуємо COM порт, до якого підключено пристрій.

На цьому попереднє налаштуванняПрограми можна вважати закінченою.

Прошивка МК

IC-Prog дозволяє працювати з великою кількістю МК, але нам потрібен тільки PIC12F629 - вибираємо його у списку, розташованому в правому верхньому куткупрограми.
Для читання прошивки з МК виконуємо команду "Читати мікросхему" (значок із зеленою стрілочкою або F8).

Після закінчення процесу читання, у вікні програмного кодувідобразиться прошивка МК у шістнадцятковому вигляді. Слід звернути увагу на останній осередок пам'яті за адресою 03F8 - там зберігається значення константи OSCCAL , яке встановлює виробник під час калібрування чіпа. У кожного МК воно своє, так що непогано було б його кудись переписати (я, наприклад, дряпаю його голкою на звороті PIC"а) для полегшення процесу відновлення (хоча це не обов'язково ), якщо під час прошивки ця константа була випадково перезаписана.


Для того, щоб «залити» прошивку з файлу *.hex в МК, її необхідно відкрити в програмі («Файл»->«Відкрити Файл...» або Ctrl+O) і виконати команду «Програмувати мікросхему» (значок з жовтою блискавкою або F5). Відповідаємо "Yes" на перше запитання.


А ось на наступне запитання необхідно відповісти «Ні», інакше перезапишеться константа OSCCAL, про яку йшлося раніше.


Після цього розпочнеться процес прошивки. Після закінчення програма виведе інформаційне повідомлення про його результати.

На цьому хотілося б підвести топік до кінця. Сподіваюся дана інформаціядопоможе новачкам розібратися в основах програмування PICмікроконтролерів.

Мікроконтролер PIC 12F 629від MicroChip відрізняється малою кількістю висновків та обсягом пам'яті програм в 1 К слів. Максимально можна використовувати 6 ліній вводу/виводу (3 пін працює лише на введення). Незважаючи на вельми скромні характеристики, у деяких випадках застосування цього мікроконтролера повністю виправдане. Для роботи з PIC12F629 та його розширеного варіанту з АЦП PIC12F675 можна скористатися платою EasyPIC5та середовищем microPascal.

Налаштування плати EasyPIC5

Для складання схеми на PIC12F629 потрібно встановити МК відповідне гніздо на платі. При цьому всі інші контролери мають бути видалені.

Другим процесом має стати перестановка перемичок ліній програмування Socket Selection.

Також необхідно визначити спосіб генерації тактової частоти. У разі використання зовнішнього генератора потрібно встановити кварцовий резонатор в гніздо OSC2. Мікроконтролер PIC 12F 629 може працювати від внутрішнього генератора частоти. У цьому випадку встановлюються перемички OSC2, положення I/O підключає виходу мікроконтролера до елементів плати. На цьому підготовку до роботи закінчено.

Особливості програмування

PIC 12F 629 має лише один порт вводу/виводу під назвою GPIO. На платі лінії цього порту підключені до роз'єму PORTA/PORTGP та інших елементів, пов'язаних з ним. Це дозволяє проводити розробку пристроїв та налагодження програм, так само як і для інших МК. Вихід температурного датчика DS18B20, що має можливість підключення до лінії RA 5 з гніздом PIC 12F 629 не пов'язаний.

При запуску середовища розробки відкривається проект, де в першу чергу необхідно встановити тип генератора частоти, що використовується. Найбільш затребуваним варіантом для цього кристала буде використання внутрішнього генератора. Це дозволяє використовувати лінії GP4 та GP5 для введення/виведення. Внутрішній генератор має позначення INTR_OSC_NOCLOCKOUT. Також встановлюються інші біти зміни, залежно вимог схеми. За необхідності встановлення калібрувальної константи, зробити це можна після запуску програми програматора microICD.

Написання програми мало відрізняється від цієї дії для інших контролерів при врахуванні особливостей PIC 12F 629. Головна – назва порту вводу/виводу. У IDE MicroPascal його глобальне визначення GPIO, а регістр конфігурації позначається TRISIO. Додатково при ініціалізації слід визначити призначення висновків GP 0 і GP 1. За замовчуванням вони є входами аналогового компаратора. При використанні як цифрових лінійпотрібно виконати команду CMCON:=7. З її допомогою дані виведення налаштовуються як лінії дискретного вводу/виводу. Та й не варто забувати, що висновок GP 3 працює тільки як вхід. В іншому програмування PIC 12F 629 нічим не відрізняється від інших контролерів PIC micro.

Приклад робочої програми

Як приклад нижче наведено вихідний текст мовою MicroPascal, що миготить світлодіодом, підключеним до порту GP0.

Program PIC12F629Start;
const i=500;
begin // Початок програми
GPIO: = 0;
CMCON: = 7; // gp0, gp1 – дискретні лінії
TRISIO: = %00001000; // Усі лінії на висновок крім gp3
while TRUE do // Основний цикл
begin
setbit(gpio,0);
Delay_ms(i);
clearbit(gpio,0);
Delay_ms(i);
end;
end.

You have no rights до post comments

PIC-контролери залишаються популярними у тих випадках, коли потрібно створити недорогу компактну систему з низьким енергоспоживанням, яка не висуває високих вимог щодо її керування. Ці контролери дозволяють замінити апаратну логіку гнучкими програмними засобами, які взаємодіють з зовнішніми пристроямичерез добрі порти.

Мініатюрні PIC контролери хороші для побудови перетворювачів інтерфейсів послідовної передачі даних, для реалізації функцій «прийом – обробка – передача даних» та нескладних регуляторів систем автоматичного керування.

Компанія Microchip поширює MPLAB - безкоштовне інтегроване середовище редагування та налагодження програм, яке записує бінарні файлиу мікроконтролери PIC через програматори.

Взаємодія MPLAB та Matlab/Simulink дозволяє розробляти програми для PIC-контролерів у середовищі Simulink – графічного моделювання та аналізу динамічних систем. У цій роботі розглядаються засоби програмування PIC контролерів: MPLAB, Matlab/Simulink та програматор PIC-KIT3 у наступних розділах.

Характеристики мініатюрного PIC контролера PIC12F629
Інтегроване середовище розробки MPLAB IDE
Підключення Matlab/Simulink до MPLAB
Підключення програматора PIC-KIT3

Характеристики мініатюрного PIC-контролера

Сімейство РIС12ххх містить контролери в мініатюрному 8-вивідному корпусі з вбудованим тактовим генератором. Контролери мають RISC-архітектуру та забезпечують виконання більшості команд процесора за один машинний цикл.

Наприклад, нижче дані характеристики недорогого компактного 8-розрядного контролера PIC12F629 з багатофункціональними портами, малим споживанням і широким діапазоном живлення.

Архітектура: RISC
Напруга живлення VDD: від 2,0 до 5,5В (< 6,5В)
Споживання:
- <1,0 мА @ 5,5В, 4МГц
- 20 мкА (тип) @ 32 кГц, 2,0В
- <1,0 мкА (тип) в режиме SLEEP@2,0В
Потужність, що розсіюється: 0,8Вт
Багатофункціональні канали введення/виводу: 6/5
Максимальний вихідний струм портів GPIO: 125мА
Струм через програмовані внутрішні підтягуючі резистори портів: ≥50 (250) ≤400 мкА @ 5,0В
Розрядність контролера: 8
Тактова частота зовнішнього генератора: 20 МГц
Тривалість машинного циклу: 200 нс
Тактова частота внутрішнього RC генератора: 4 МГц ±1%
Тривалість машинного циклу: 1мкс
FLASH пам'ять програм: 1К
Число циклів стирання/запис: ≥1000
ОЗУ пам'ять даних: 64
EEPROM пам'ять даних: 128
Число циклів стирання/запис: ≥10K (-40оС ≤TA≤ +125 оС)
Апаратні регістри спеціального призначення: 16
Список команд: 35 інструкцій, усі команди виконуються за один машинний цикл,
крім команд переходу, що виконуються за 2 цикли
Апаратний стек: 8 рівнів
Таймер/лічильник ТМR0: 8-розрядний
Таймер/лічильник ТМR1: 16-розрядний

Додаткові особливості:
Скидання живлення (POR)
Таймер скидання (PWRTтаймер очікування запуску генератора (OST
Скидання зниження напруги живлення (BOD)
Сторожовий таймер WDT
Мультиплексований висновок -MCLR
Система переривань щодо зміни рівня сигналу на входах
Індивідуально програмовані для кожного входу резистори, що підтягують.
Програмований захист входу
Режим зниженого споживання енергії SLEEP
Вибір режиму роботи тактового генератора
Внутрішньосхемне програмування ICSP із використанням двох висновків
Чотири користувацькі ID комірки

Гранична робоча температура для виконання Е (розширений діапазон) від -40оС до +125 оС;
Температура зберігання від -65оС до +150оС.

КМОП технологія контролера забезпечує повністю статичний режим роботи, у якому зупинка тактового генератора не призводить до втрати логічних станів внутрішніх вузлів.
Мікроконтролер PIC12F629 має 6-розрядний порт введення/виведення GPIO. Один висновок GP3 порту GPIO працює лише на вхід, решту висновків можна налаштувати для роботи як на вхід так і на вихід. Кожен висновок GPIO має індивідуальний біт дозволу переривань зі зміни рівня сигналу на входах і біт включення внутрішнього резистора, що підтягує.

Інтегроване середовище розробки MPLAB IDE

MPLAB IDE - безкоштовне інтегроване середовище розробки програмного забезпечення для мікроконтролерів PIC включає засоби для створення, редагування, налагодження, трансляції та компонування програм, запису машинного коду в мікроконтролери через програматори.

Безкоштовні версії MPLAB (включно з MPLAB 8.92) зберігаються на сайті компанії Microchip у розділі «DOWNLOAD ARCHIVE».

Створення проекту

Приклад створення проекту програм PIC контролера серед MPLAB включає наступні кроки .

1. Виклик менеджера проекту.

2. Вибір типу PIC мікроконтролера.


3. Вибір компілятора, наприклад Microchip MPASM для асемблера.


4. Вибір шляху до каталогу проекту (клавіша Browse...) та введення імені проекту.

5. Підключення файлів до проекту у вікні Project Wizard → Step Four можна не виконувати. Це можна зробити пізніше, усередині активного проекту. Клавіша Next відкриває наступне вікно.

6. Завершення створення проекту (клавіша Finish).

В результаті створення проекту FirstPrMPLAB інтерфейс MPLAB набуває вигляду, показаного на Рис. 1.


Мал. 1. Інтерфейс середовища MPLAB v8.92 та шаблон проекту.

Створення файлу програми
Програму можна створити за допомогою текстового редактора. MPLAB має вбудований редактор, який забезпечує ряд переваг, наприклад, оперативний лексичний аналіз вихідного тексту, в результаті якого в тексті кольором виділяються зарезервовані слова, константи, коментарі, імена, визначені користувачем.

Створення програми в MPLAB можна виконати у наступній послідовності.

1. Відкрити редактор програм: меню → File → New. Спочатку програмі надано ім'я Untitled.

2. Набрати або скопіювати програму, наприклад, на асемблері.


Мал. 2. Приклад найпростішої програми (на асемблері) виведення сигналів через порти контролера GP0, GP1, GP2, GP4, GP5 на максимальній частоті.

Запис '1' у розряді регістру TRISIO переводить відповідний вихідний буфер в 3-е стан, у разі порт GP може працювати лише з вхід. Встановлення нуля у TRISIO налаштовує роботу порту GP на вихід.

Примітка. За специфікацією PIC12F629 порт GP3 мікроконтролера працює тільки на вхід (відповідний біт регістру TRISIO не скидається завжди знаходиться в '1').

Регістри TRISIO та GPIO знаходяться у різних банках області пам'яті. Перемикання банків виконується 5-м бітом регістру STATUS.

Будь-яка програма на асемблері починається директивою org і закінчується директивою end. Перехід goto Metka забезпечує циклічне виконання програми.

У програмі (Мал. 2) використовуються такі позначення.

Директива LIST – призначення типу контролера
Директива __CONFIG - встановлення значень бітів конфігурації контролера
Директива equ - присвоєння числового значення
Директива org 0 – початок виконання програми з адреси 0
Команда bsf - встановлює біт зазначеного регістру 1
Команда bсf - скидає біт зазначеного регістру 0
Команда movlw - записує константу в регістр W
Команда movwf - копіює вміст регістру W у вказаний регістр
Команда goto - забезпечує перехід без умови на рядок із міткою
Директива end – кінець програми

Встановлення необхідної конфігурації мікроконтролера
Конфігурація мікроконтролера PIC12F629 залежить від налаштувань слова конфігурації (2007h), які можна встановити в програмі через директиву __CONFIG.

Безпосередньо чи через вікно MPLAB: меню → Configure → Configuration Bits:

Де:

Біт 2-0- FOSC2: FOSC0. Вибір тактового генератора
111 – Зовнішній RC генератор. Підключається до виводу GP5. GP4 працює як CLKOUT
110 – Зовнішній RC генератор. Підключається до виводу GP5. GP4 працює як введення/виведення
101 – Внутрішній RC генератор 4МГц. GP5 працює як введення/виведення. GP4 - як CLKOUT
100 – Внутрішній RC генератор 4МГц. GP5 та GP4 працюють як введення/виведення
011 – EC генератор. GP4 працює як введення/виведення. GP5 - як CLKIN
010 – HC генератор. Резонатор підключається до GP4 та GP5
001 – XT генератор. Резонатор підключається до GP4 та GP5
000 – LP генератор. Резонатор підключається до GP4 та GP5

Біт 3- WDTE: налаштування сторожового таймера (Watchdog Timer)
1 - WDTE включений
0 - WDTE вимкнено

Сторожовий таймер захищає мікроконтролер від зависання – перезапускає програму через певний інтервал часу, якщо таймер не був скинутий. Період таймера встановлюється у регістрі OPTION_REG. Обнулення сторожового таймера викликається командою CLRWDT.

Біт 4- PWRTE: Дозвіл роботи таймера живлення:
1 - PWRT вимкнено
0 - PWRT включений

Таймер затримує мікроконтролер у стані скидання під час подачі живлення VDD.

Біт 5- MCLR: Вибір режиму виведення GP3/-MCLR
1 - працює як -MCLR
0 - працює як порт введення-виведення GP3

Біт 6- BODEN: Дозвіл скидання щодо зниження напруги живлення (як правило< 2.0В)
1 - дозволено скидання BOR
0 - заборонено скидання BOR автоматично вмикається таймер

При дозволі скидання BOR автоматично вмикається таймер PWRT

Біт 7- .CP: Біт захисту пам'яті програм від читання програматором
1 Захист вимкнено
0 Захист увімкнено

При вимиканні захисту вся пам'ять програм стирається

Біт 8- .CPD: Біт захисту EPROM пам'яті даних
1 Захист вимкнено
0 Захист увімкнено

Після вимкнення захисту вся інформація буде стерта

Біт 11-9- Не використовуються: Читається як '1'.

Біт 13-12- BG1: BG0. Біти калібрування скидання зі зниження харчування
00 - нижня межа калібрування
11 - верхня межа калібрування


Додавання програми до проекту

Приклад додавання програми до проекту показано на (Мал. 3).


Мал. 3. Додавання програми FirstPrMPLAB.asm до проекту FirstPrMPLAB.mcp

Компіляція

Щоб створити бінарний файл з розширенням hex для прошивки мікроконтролера, необхідно відкомпілювати проект. Запуск компіляції виконується командою меню → Project → Build All. Результати компіляції можна побачити у вікні Output (Мал. 1). Якщо в програмі немає помилок, компілятор видає повідомлення про успішну компіляцію: BUILD SUCCEEDED, завантажувальний HEX файл можна знайти в робочому каталозі:

Налагодження програми

Налагодження програми у середовищі MPLAB IDE можна виконати за допомогою апаратного емулятора MPLAB REAL ICE або програмного симулятора MPLAB SIM. Запуск останнього виконується як показано на мал. 4.


Мал. 4. Підключення до симулятора MPLAB SIM для налагодження програми.

Після запуску налагоджувача у вікні Output (Мал. 1) з'являється закладка MPLAB SIM, куди MPLAB виводить поточну інформацію відладчика. Команди відладчика (Рис. 5) після запуску стають активними.


Мал. 5. Команди відладчика.

Команди відладчика:

Run - Безперервне виконання програми до точки зупинки (Breakpoint), якщо така встановлена.
Halt - Зупинення програми на поточному етапі виконання.
Animate – Анімація безперервного виконання програми.
Step Into - Виконання кроків (дзвінки Call виконуються за один крок).
Step Over - Виконання кроків, включаючи команди викликів Call.
Reset - Початкове встановлення програми. Перехід покажчика першу команду.
Breakpoints - Відображення списку точок зупинки. Переробка списку.

Під час виконання програми по кроках поточний крок виділяється стрілкою (Мал. 6). Безперервне виконання програми зупиняється командою Halt або досягненням програми точки зупинки. Точка зупинки встановлюється/знімається у рядку програми подвійним клацанням.
Приклад програми на асемблері, яка з максимальною швидкістю змінює стан портів контролера, показаний на Рис. 6 (праворуч). Програма передає в регістр портів GPIO дані b'10101010' та b'01010101'. Оскільки в регістрі GPIO передачу даних порти контролера виконують в повному обсязі розряди, лише 0,1,2,4 і 5, то стан регістра GPIO (Рис. 6, зліва) відрізняється значеннями: b’00100010’ і b’00010101’.


Мал. 6. Стан регістрів спеціального призначення контролера на момент виконання програми (ліворуч) та програма, що виконується по кроках (праворуч).

У процесі налагодження можна спостерігати за станом регістрів, змінних, пам'яті у вікнах, що відкриваються в розділі View основного меню. У процесі налагодження можна вносити зміни до коду програми, вмісту регістрів, пам'яті, змінювати значення змінних. Після зміни коду необхідно перекомпілювати програму. Зміна вмісту регістрів, пам'яті та значення змінних (вікна розділу View: Special Function Register, File Register, EEPROM, Watch) не потребує перекомпіляції.

Вхідні сигнали портів моделі мікроконтолера можна встановити в розділі Debugger → Stimulus. Стані сигналів портів, що встановлюються, прив'язуються до часу (тактам) налагодження.

Іноді результати виконання програми в режимі налагодження не відповідають виконанню цієї програми в реальному контролері, так, наприклад, відладчик програми (Мал. 6) без інструкцій movlw 0x07 і movwf cmcon показує, що виходи GP0 і GP1 регістра GPIO не змінюються - знаходяться в нульовому стані, вміст регістра GPIO поперемінно дорівнює 0x14 і 0х20. Однак, контролер, що виконує програму без зазначених інструкцій, показує на осцилограф циклічну роботу всіх п'яти виходів: 0x15 і 0х22, включаючи GP0 і GP1 (див. Рис. 7).

Осцилограми контролера, який виконує цикли програми Мал. 6 (Metka… goto Metka) показано на Мал. 7.


Мал. 7. Осцилограми виходу GP0 (ліворуч) та GP1 (праворуч) мікроконтролера PIC12F629, що працює від внутрішнього 4МГц RC генератора. Програма (Рис. 6) формує сигнали максимальної частоти всіх виходах контролера. За період сигналів 5.3 мкс виконується 5 команд (6 машинних циклів), амплітуда сигналу GP0 на осцилограмі дорівнює 4.6В, виміряне програматором харчування контролера 4.75В.

Прошивка мікроконтролера

Для запису програми в мікроконтролер (прошивки контролера) необхідно мікроконтролер підключити до інтегрованого середовища MPLAB IDE через програматор. Організацію підключення наведено нижче в розділі «Підключення програматора PIC-KIT3».

Примітка. У контролер PIC12F629 записана заводська калібрувальна константа налаштування частоти внутрішнього тактового генератора. За потреби її можна прочитати та відновити засобами MPLAB з використанням програматора.

Команди для роботи з програматором та зміни його налаштувань знаходяться у меню MPLAB Programmer. Тип програматора в MPLAB вибирається у розділі: меню → Programmer → Select Programmer.


Мал. 8. Вибір програматора для підключення до середовища MPLAB.

Прошивка мікроконтролера через програматор запускається командою: меню → Programmer → Program. Повідомлення про успішну прошивку показано на Мал. 9.


Мал. 9. Запуск прошивки мікроконтролера та вид повідомлення про успішну прошивку.

Примітка:Під час прошивки мікроконтролера у програматора PIC-KIT3 блимає жовтий світлодіод.

Підключення MATLAB/SIMULINK до MPLAB

У системі моделювання динамічних систем Simulink (додаток до Matlab) мовою графічного програмуванняможна розробляти програми сімейства PIC контролерів мають АЦП/ЦАП, лічильники, таймери, ШИМ, DMA, інтерфейси UART, SPI, CAN, I2C та інших.

Приклад Simulink програми PIC контролера показано на Рис. 10.


Мал. 10. Приклад програми мовою графічного програмування для PIC контролера виконаної серед моделювання динамічних систем Simulink.

Взаємодія засобів розробки та компіляції програм для PIC контролерів Simulink показано на Рис. 11 .


Мал. 11. Структура засобів побудови адекватної моделі PIC контролера мовою графічного програмування.

Для побудови середовища розробки необхідні наступні компоненти Matlab:

Simulink
Real-Time Workshop Embedded Coder
Real-Time Workshop

І Cі компілятор компанії Microchip:

C30 для контролерів PIC24, dsPIC30 та PIC33
або C32 для контролерів серії PIC32

Встановлення компонентів Matlab

На сайті є Simulink бібліотеки (dsPIC Toolbox) для PIC контролерів та версій Matlab c R2006a по R2012a:

Для завантаження бібліотеки необхідно зареєструватися. Програми підтримують роботу 100 мікроконтролерів із серій PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Безкоштовні версії працюють з Simulink моделями PIC контролерів, що мають до 7 портів вводу-виводу.

Для встановлення dsPIC Toolbox - бібліотеки блоків PIC контролерів для Matlab/Simulink необхідно:

Завантажити dsPIC Toolbox для потрібної версії Matlab.
Розпакувати zip файл у папці, в якій будуть встановлені блоки Simulink.
Запустити Matlab.
Налаштувати поточний каталог Matlab на папку з розпакованим файлом.
Відкрити та запустити файл install_dsPIC_R2012a.m, наприклад, кнопкою меню або клавішею клавіатури.

Бібліотеки dsPIC і приклади моделей Simulink встановлюються в поточну папку Matlab (Рис. 12). Встановлені блоки для моделювання PIC контролерів доступні у розділі Embedded Target for Microchip dsPIC бібліотеки Simulink (Мал. 13).


Мал. 12. Зміст поточного каталогу після виконання install_dsPIC_R2012a.m.


Мал. 13. Блоки, установленої бібліотеки Embedded Target for Microchip dsPIC.

Для спільної компіляції моделі Simulink засобами Matlab і MPLAB необхідно прописати в змінному оточенні path Matlab з вищим пріоритетом шлях до каталогу MPLAB з файлами MplabOpenModel.m, MplabGetBuildinfo.m і getHardwareConfigs.m:

>>

Установка Сі компілятора MPLAB

Компілятори MPLAB знаходяться на сайті Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для встановлення демонстраційної версії компілятора С30 необхідно завантажити його за посиланням PIC24/dsPIC v3.25 (Рис. 14) і запустити прийнятий файл mplabc30-v3.25-comboUpgrade.exe.


Мал. 14. Версії Сі компілятора (ліворуч) та режими його встановлення (праворуч).

Примітка. Роботу виконано з версією v3.25 компілятора С30 для PIC24/dsPIC. Перевірка показала, що наступна версія v3.30 не підтримує сумісну компіляцію моделей Matlab R2012a (dsPIC Toolbox) без помилок.

Настановний exe файл створює у розділі c:\Program Files (x86)\Microchip\ новий каталог mplabc30 з файлами:


Мал. 15. Каталоги компіляторів C30 MPLAB.

Послідовність програмування Simulink для PIC контролерів

1. Створіть робочий каталог та скопіюйте в нього *.mdl приклади з розділу example (див. мал. 12).
2. Завантажте Matlab. Налаштуйте його на робочий каталог.
3. Увімкніть у змінну оточення path Matlab з вищим пріоритетом шлях до MPLAB - каталог c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path("c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\",path)
Примітка: Використання команди >>path без аргументів призводить до відображення списку шляхів змінної path у вікні команд (Command Window). Видалити шлях зі змінної path можна командою rmpath, наприклад:

>>rmpath(" c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\")
4. Створіть Simulink модель для PIC контролера, використовуючи блоки бібліотеки Embedded Target for Microchip dsPIC (Рис. 13), або завантажте готову модель, наприклад, Servo_ADC.mdl.

Тип контролера, для якого розробляється модель Simulink, вибирається зі списку в блоці Master > PIC (Рис. 16, Рис. 10), який повинен бути включений до складу моделі.


Мал. 16. Вибір типу контролера у блоці Master моделі.

5. Перевірте параметри конфігурації моделі: Меню → Simulation → Configuration Parameters . У рядку введення System target file розділу Code Generation повинен бути вказаний компілятор S-функцій dspic.tlc (Мал. 17). Вибір dspic.tlc налаштовує інші параметри конфігурації моделі, включаючи крок і метод інтегрування.


Мал. 17. Вибір компілятора S-функцій dspic.tlc для моделей PIC-контролерів у розділі «основне меню → Simulation → Configuration Parameters → Code Generation».

6. Відкомпілюйте модель tmp_Servo_ADC.mdl. Запуск компілятора показано на Мал. 18.


Мал. 18. Запуск компілятора моделі Simulink.

В результаті успішної компіляції (повідомлення: ### Successful completion of build procedure for model: Servo_ADC) у поточному каталозі створюються HEX файл для прошивки PIC контролера і MCP проект середовища MPLAB (Мал. 19).


Мал. 19. Результати компіляції моделі.

Запуск моделі Matlab/Simulink виконується у вікні моделі кнопкою, умовний час моделювання встановлюється в рядку:


Управління компіляцією моделей Simulink з середовища MPLAB

Управління компіляцією моделі Simulink можна виконувати командами розділу Matlab/Simulink середовища MPLAB, наприклад, в наступному порядку.

1. Розробте модель PIC контролера в Matlab/Simulink. Збережіть модель.
2. Запустіть MPLAB.
3. Виберіть MPLAB меню → Tools → Matlab/Simulink і новий розділ з'явиться у меню.


4. У розділі Matlab/Simulink відкрийте модель Simulink, наприклад Servo_ADC, командою Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open. Команда Open запускає Matlab та відкриває модель.

5. Відкомпілюйте модель та створіть MCP проект командами Generate Codes або Generate Codes and Import Files. Переклад MDL моделі в MCP проект виконується TLC компілятор Matlab.
В результаті створюється проект MPLAB:

Зі скриптами моделі на мові Сі.

6. Відкрийте проект: меню → Project → Open → Servo_ADC.mcp (Мал. 20).


Мал. 20. Структура MCP проекту Simulink моделі Servo_ADC.mdl у середовищі MPLAB.
Проект Simulink моделі готовий для редагування, налагодження та компіляції в машинні коди контролера засобами MPLAB.

Підключення програматора PIC-KIT3

Дізнатися, які програматори записують бінарний код у конкретний мікроконтролер, можна в розділі меню → Configure → Select Device середовища MPLAB 8.92. Наприклад, програматор PIC-KIT3 не підтримує контролер PIC12C508A (Мал. 21, лівий малюнок), але працює з контролером PIC12F629 (Мал. 21, правий малюнок).


Мал. 21. Список програматорів для прошивки мікроконтролера.

Інформацію про встановленому драйверіпрограматора PIC-KIT3 можна запитати у менеджера пристроїв Windows (Мал. 22).


Мал. 22. Інформація про встановлений драйвер PIC-KIT3.

Схема підключення мікроконтролера PIC12F629 до програматора PIC-KIT3 показана на Рис. 23.


Мал. 23. Схема підключення мікроконтролера PIC12F629 до програматора PIC-KIT3.

Виведення PGM програматора для прошивки контролерів PIC12F629 не використовується. Наявність виведення PGM для різних типів PIC контролерів показано на Мал. 24. Виведення PGM рекомендується «притягувати» до загального дроту (GND) через резистор номіналом 1К .


Мал. 24. Висновки PGM PIC контролерів.

Індикація світлодіодів програматора Olimex PIC-KIT3 показана нижче:

Жовтий - Червоний - Стан програматора
Увімкнено - Вимкнено - Під'єднано до USB лінії
Вкл - Вкл - Взаємодія з MPLAB
Блимає - Включено постійно - Прошивка мікроконтролера

Не слід підключати живлення мікроконтролера VDD (Рис. 23) до програматора, якщо контролер запитує джерело живлення.

При живленні мікроконтролера від програматора на лінії VDD необхідно встановити робочу напругу, наприклад, 5В програмою MPLAB (Menu → Programmer → Settings → Power), як показано на Мал. 25.

Примітка. За відсутності напруги на лінії VDD MPLAB IDE видає повідомлення про помилку: PK3Err0045:


Мал. 25. Установка напруги VDD на програматор PIC-KIT3 програмою MPLAB IDE v8.92.

Якщо програматор не може встановити потрібну напругу, наприклад, 5В при його живленні від USB, в якій напруга менше 5В, MPLAB IDE видає повідомлення про помилку: PK3Err0035: Failed to get Device ID. У цьому випадку спочатку необхідно виміряти напругу програматора - рахувати її в закладці меню → Programmer → Settings → Status, а потім встановити напругу (не більше виміряного) в закладці меню → Programmer → Settings → Power.


Мал. 26. Вимірювання (ліворуч) та встановлення (праворуч) VDD напруги програматора PIC-KIT3 програмою MPLAB IDE v8.92.

Приклад MPLAB повідомлення успішного підключення мікроконтролера до програматора за командою меню → Programmer → Reconnect показано на Мал. 27.


Мал. 27. Повідомлення MPLAB про успішне підключення мікроконтролера до програматора.

Можна програмувати як окремий PIC контролер, а й контролер, що у складі робочого устройства. Для програмування PIC контролера у складі пристрою необхідно передбачити встановлення перемичок та струмообмежувальних резисторів, як показано на Мал. 28 .


Мал. 28. Підключення мікроконтролера у складі електронного пристроюдо програматора.

Висновок

Малорозрядні PIC-контролери мають широкий діапазон живлення, низьке споживання та малі габарити. Вони програмуються мовами низького рівня. Розробка програм мовою графічного програмування Simulink з допомогою численних бібліотек значно скорочує час розробки та налагодження проти програмуванням на рівні асемблера. Розроблені для PIC-контролерів Simulink структури можна використовувати і для комп'ютерного моделюваннядинамічних систем за участю контролерів. Однак, через надмірність коду такий підхід застосовується лише для сімейств PIC контролерів з достатніми ресурсами.
Simulink Додати теги

Мікроконтролери PIC12F629і PIC12F675мають внутрішній генератор 4 МГц, що дозволяє їм працювати без зовнішнього кварцового резонатора або RC-ланцюга. Це звільняє один або два контакти для використання їх як введення/виведення і дозволяє пристрою мати в конструкції мінімальну кількість компонентів.

Внутрішній генератор має бути відкалібрований, це досягається шляхом підбору на заводі значення калібрування та запису його в регістр OSCCAL при ініціалізації пристрою перед запуском робочої програми. Значення калібрування знаходиться в останній адресі пам'яті програм – 0x3FF.

Проблеми виникають якщо випадково значення за адресою 0x3FF стирається під час програмування мікроконтролера. Після калібрування значення є унікальним для кожного окремого мікроконтролера, немає ніякого способу дізнатися, яке воно було, але можна відновити його шляхом порівнюючи з відомою частотою.

Для цього створено цю програму та схему. Завантажте в мікроконтролер код, який знаходиться в архіві і помістіть його в описаний нижче пристрій, і протягом декількох секунд Ви отримаєте нове значення калібрування для роботи внутрішнього генератора частотою 4 МГц і точністю 1%.

Як це працює

Для калібрування внутрішнього генератора потрібна опорна частота. На щастя, нам не потрібні генератори сигналів чи інше вимірювальне обладнання. Насправді точний сигнал можна отримати з електричної мережі змінного струму. У більшості частин світу постачання електроенергії виробляється на частоті 50 чи 60 Гц (багато цифровий годинниккористуються цим, щоб зберегти точність ходу). Використовуючи практично будь-який трансформатор з вихідною напругою від 6 до 12 вольт змінного струму, можна отримати точне джерело для калібрування генератора мікроконтролера.

Частота внутрішнього генератора мікроконтролера залежить від зміни температури та напруги живлення. У разі збільшення напруги живлення частота трохи зменшується. Коли вимикач S1 розімкнуть напругу 5 Вольт подається через два діоди, в результаті близько 3,4 Вольт надходить на контролер. Якщо S1 замкнено, то контролер працює від 5 Вольт. Microchip калібрує партії при 3,5 Вольт та температурі 25°C. У цій схемі є можливість калібрування при напрузі 3,4 Вольт та 5 Вольт, але бажано відкалібрувати контролер із розімкненим S1 (3,4 Вольт).

S1 розімкнуто - калібрування відбувається при 3,4 Вольт

S1 замкнутий - калібрування відбувається за 5 Вольт

S1 не є вимикачем живлення

Два 1N4148 діоди забезпечують падіння напруги, резистор 150R забезпечує стабільну напругу на діодах. 100nF фільтруючий конденсатор повинен бути розміщений якомога ближче до висновків контролера (1 та 8).

Сигнал опорної частоти подається до контролера з використанням транзистора BC548, резистора 10K, діода 1N4148 і трансформатора. Можна використовувати будь-який транзистор NPN, характеристики його не є критичними. Трансформатор також можна використовувати будь-який, але з вихідною напругою від 6 до 12 Вольт змінного струму.

Важливо подавати на вхід транзистора тільки сигнал змінного струму. Не використовувати постійний струмнавіть без фільтруючого конденсатора.

ПРИ РОБІТІ З ВИСОКОЮ НАПРУГОЮ ДОБРАТЬСЯ ТЕХНІКУ БЕЗПЕКИ!

Код для калібрування

Далі необхідно запрограмувати мікроконтролер кодом, що знаходиться в архіві під ім'ям "recal1.hex". Код буде працювати і з PIC12F629 та 12F675. Завантажте цей код перед початком калібрування.

Після того, як Ви успішно виконали калібрування мікроконтролера і вважали нове значення калібрування, можна перепрограмувати контролер використовуючи свій код. Це програмне забезпеченнянеобхідно тільки для розрахунку нового значення калібрування, і не повинно залишатися в пам'яті мікроконтролера згодом. (Хтось запитає повірте!)

Запуск калібрування

1. Встановити перемичку J1, якщо частота електромережі у вашому районі дорівнює 60 Гц і зняти перерву якщо частота 50 Гц. Переконайтеся, що правильність установки перемички J1, т.к. це впливає на правильність калібрування.

J1 знята - частота живлення мережі 50Гц
J1 встановлена ​​– частота живлення мережі 60Гц

2. Сигнал змінного струму повинен бути перед включенням живлення мікроконтролера при калібруванні, необхідно забезпечити стабільний сигнал належного рівня.

3. Вставте мікроконтролер у панельку, розімкніть перемикач S1 і подати напругу 5 Вольт.

4. Коли мікроконтролер запуститься, світлодіоди мигнуть один раз.

5. Якщо сигнал опорної частоти не буде виявлений на GP2 (висновок 5) загориться червоний світлодіод "Помилка" і блиматиме зелений світлодіод "Завершено". (Якщо це станеться, вимкніть живлення схеми та переконайтесь у правильності підключення)

6. Під час процесу калібрування обидва світлодіоди вимкнені. Калібрування триватиме менше 5 секунд.

7. Якщо калібрування завершилося невдало спалахне червоний світлодіод "Помилка", і виконання програми буде зупинено.

8. Якщо калібрування завершилося, успішно загориться зелений світлодіод "Завершено" і на GPIO1 з'явиться тестовий сигнал частотою 5 кHz. Якщо у вас є частотомір, можна перевірити правильність калібрування.

9. Після завершення калібрування, Ви можете вмикати/вимикати перемикач S1 та стежити за тестовим сигналом, щоб побачити зміни частоти сигналу порівняно з напругою живлення.

10. Вимкніть живлення схеми, видаліть мікроконтролер з панелі та підключіть його до програматора. Далі прочитайте дані мікроконтролера та перевірте вміст пам'яті EEPROM

Коли Ви вважаєте EEPROM, там повинні бути одне з трьох пар значень за адресами 0x00 і 0x01:

Якщо EEPROM за адресами 0x00 і 0x01 містить 0xFF, програма відпрацювала неправильно.

Якщо EEPROM за адресами 0x00 і 0x01 містить 0x00, то програма не змогла встановити калібрувальне слово правильно (горів червоний світлодіод "Помилка"). Переконайтеся, що сигнал опорної частоти має правильне значення, J1 встановлено правильно і спробуйте ще раз.

Якщо в EEPROM адреса 0x00 містить значення 0x34 та адреса 0x01 містить 0xNN, де NN є новим значенням калібрування, то програма завершилася успішно (горів зелений світлодіод "Завершено") і OSCCAL був правильно відкалібрований. Використовуйте значення 0xNN за адресою 0x01 для калібрування пам'яті.

Змінена версія прошивки

Деякі програматори або програмне забезпечення підвищують сигнал VDD перед увімкненням VPP. Це дозволяє почати роботу програмі до того, як мікроконтролер увійде в режим програмування попередньо вважавши EEPROM. Якщо зелений світлодіод вказує на успішне завершення калібрування, а прочитавши EEPROM, Ви знайдете в ньому 0xFF за адресами 0x00 і 0x01, то Ваш програматор працює в такому режимі.

Якщо у Вас виникла ця проблема, Ви можете завантажити модифіковану версію оригінальної програми, яка знаходиться в архіві під назвою "recal2.hex". Ця версія не здійснює ініціалізацію EEPROM при запуску, так що дані калібрування не очищаються, коли програматор зчитує дані з мікроконтролера. Використовуйте цю прошивку лише тоді, коли виникає така проблема.


Використання нового значення калібрування

ВАЖЛИВО: Ця схема/програма тільки розраховує правильне значення калібрування та не може зберегти його назад у пам'ять контролера - Ви повинні зробити це вручну за допомогою програматора.

Якщо Ви хочете перевірити калібрувальну константу мікроконтролера, знаючи заводське значення, відновлене цією схемою, значення калібрування може незначно відрізнятися від заводського. Це нормально, тому що є відмінності у напрузі живлення та температурі. Ви можете перевірити значення тестового сигналу на GP1 за допомогою частотоміра після завершення калібрування, ця частота повинна бути не більше 1% від 5 кГц.

Якщо калібрування пройшло успішно, видаліть мікроконтролер та підключіть його до програматора. Вважайте дані з пам'яті EEPROM контролера (це не пам'ять програм), де щойно обчислене значення було збережено. (Див. приклад нижче)

Адреса 0x00 міститиме значення 0x34, а адреса 0x01 міститиме значення калібрування. Саме це значення має записуватися пам'яті програм за адресою 0x3FF. Деякі програматори дозволяють зчитувати значення калібрування і потім записувати його у контролер. Якщо програматор не робить цього, потрібно прописати вручну значення 0xNN за адресою 0x3FF, де «NN» є шістнадцяткове значеннякалібрування зчитане з EEPROM.

Розповісти у:
Своє знайомство з мікроконтролерами з незрозумілої зараз причини я постійно намагався відкласти на потім. Можливо, думка про використання модулів цифрової технікистворювала необґрунтовані страхи у голові новачка, який жодного разу не намагався зазирнути за межі аналогової електроніки. Проте я дуже чітко розумів, які можливості нададуть мені навіть найдешевші мікроконтролери. І ось, одного разу, я все ж таки зважився розібратися в цій на перший погляд складній, але й дуже цікавій темі.

Починати було логічно з вивчення теорії та складання якогось чужого проекту з використанням мікроконтролера (далі МК). Про перше розповідати я думаю не варто - в інтернеті і так повно статей на цю тему. Що ж до другого, то вибір мій упав ось на цей пристрій. Схема його досить проста для повторення і загострювати увагу на складанні так само буде зайвим, тому перейдемо відразу до прошивки МК.

Програматор ExtraCheapПісля нетривалих пошуків в інтернеті було знайдено досить багато схем програматорів, але більшість із них були досить складними пристроями, призначеними для прошивки кількох типів МК. Мені ж хотілося зібрати схему саме для PIC12F629. Витративши ще трохи часу я нарешті знайшов те що шукав-програматор ExtraCheap з проекту WiiFree.

Для передачі даних використовується порт COM. Схема живиться від 5 вольт, які можна взяти від портів USB або PS/2.
Декілька фотографій зібраного пристрою:

Для роботи з програматором рекомендується використовувати програму IC-Prog.

Налаштування IC-ProgСкачуємо з офіційного сайту програми архіви з останніми версії IC-Prog Software, NT/2000 driver, Helpfile in Russian language і розпаковуємо їх в одну і ту ж директорію.
Тепер необхідно встановити драйвер програматора, для чого запускаємо icprog.exe (якщо з'являться повідомлення про помилки, просто ігноруємо їх) і вибираємо пункт «Options» в меню «Settings». Відкриваємо вкладку «Programming» та встановлюємо галочку навпроти пункту «Verify during programming». Далі у розділі "Misc" потрібно активувати опцію "Enable NT/2000/XP Driver", зберегти налаштування натиснувши на кнопку "ОК" і перезапустити програму.

Змінити мову інтерфейсу можна у розділі «Language». Для того, щоб вказати програмі тип нашого програматора, натискаємо F3, у вікні вибираємо «JDM Programmer» і вказуємо COM порт, до якого підключено пристрій.

На цьому попереднє налаштування програми можна вважати закінченим.

Прошивка МКIC-Prog дозволяє працювати з великою кількістю МК, але нам потрібен тільки PIC12F629 - вибираємо його у списку, розташованому в правому верхньому кутку програми.
Для читання прошивки з МК виконуємо команду "Читати мікросхему" (значок із зеленою стрілочкою або F8).

Після закінчення процесу читання, у вікні програмного коду відобразиться прошивка МК у шістнадцятковому вигляді. Слід звернути увагу на останній осередок пам'яті за адресою 03F8 - там зберігається значення константи OSCCAL, яке встановлює виробник калібрування чіпа. У кожного МК воно своє, так що непогано було б його кудись переписати (я, наприклад, дряпаю його голкою на звороті PICа) для полегшення процесу відновлення (хоча це не обов'язково), якщо під час прошивки ця константа була випадково перезаписана.


Для того, щоб «залити» прошивку з файлу *.hex в МК, її необхідно відкрити в програмі («Файл»->«Відкрити Файл...» або Ctrl+O) і виконати команду «Програмувати мікросхему» (значок з жовтою блискавкою або F5). Відповідаємо "Yes" на перше запитання.


А ось на наступне запитання необхідно відповісти «Ні», інакше перезапишеться константа OSCCAL, про яку йшлося раніше.


Після цього розпочнеться процес прошивки. Після закінчення програма виведе інформаційне повідомлення про його результати.

На цьому хотілося б підвести топік до кінця. Сподіваюся, дана інформація допоможе новачкам розібратися в основах програмування PIC мікроконтролерів.
Дякую за увагу.Файл друкованої плати(LAY) Розділ: