Програмування мікроконтролерів з нуля
Привіт дівчаток і хлопчиків. Сподіваюся, ви не забули свої чарівні палички, бо вони вам знадобляться. Сьогодні я розповім вам як написати просту утиліту для програмування мікроконтролера і подивитися як вона працює без метушні з програматорами, травленням та паянням плат. Програма збільшує/зменшує на одиницю значення на індикаторі натискання кнопки.
Для початку нам знадобиться середовище розробки. Для програмування мікроконтролерів використовую MPLAB IDE версії 7.20 (на мою цю прожку безкоштовна). Далі нам знадобиться компілятор - HI-TECH C PRO для мікроконтролерів PIC16. Цей звір має повну ознайомлювальну версію на деякий час, а потім звалюється в демо режим. Відмінність демо режиму від звичайного тільки в розмірі одержуваних програм (нам на це по барабану, для початку цілком зійде і демо версія). І, нарешті, необхідне середовище для моделювання роботи нашого пристрою. Нехай це буде Proteus 7.4, тому що це єдина мені відома програма, що дозволяє моделювати роботу мікроконтролера та електричної схеми. У мене є ліцензійна версія цієї програми.
Отже приступимо. Для початку створимо проект у MP LAB. Project->New. У діалоговому вікні вказуємо Ім'я проекту та шлях до нього. Шлях не повинен містити українських літер та папок з довгими іменами (до речі, забув вас попередити, що при встановленні MP LAB шлях до нього також не повинен містити українських літер, прогалин і не бути занадто довгим).
Далі необхідно причепити файл із кодом до проекту Project -> Додати файли до проекту. Згодовуємо йому цей txt файлик, не забувши змінити розширення на *.c:
В ідеалі це має працювати так - при натисканні на кнопку число на індикаторі збільшується на одиницю. У тому піку, який вибрав я два порти-порт A (8ліній або 8 ніжок у мікросхемі) та порт B (8 ліній). Через будь-яку лінію можна вводити інформацію в мікроконтролер так і виводити її. За налаштування портів відповідають 2 системні регістри TRISA і TRISB. Запис TRISA=0000010 b означає, що всі лінії порту A налаштовані виведення даних з мікроконтролера крім першої. У нашому випадку потрібно написати TRISA=00000011 b або якщо не морочитися з бінарними кодами TRISA=0xff(усі лінії порту А на введення). Рахувати інформацію з порту або подати на вихід можна використовуючи біти RA0..RA3 і RB0..RB7. Це і використовується в програмі при опитуванні кнопок, підключених до RA0 і RA1 (до речі, при натисканні кнопки, на ніжці буде сигнал логічного нуля, а при відпусканні лог. од.). Щоб скомпілювати, натисніть F10. Перевірте в папці проекту повинен з'явиться файл з розширенням *.hex. Далі перевіримо, чи працює наша програма. для цього необхідно зібрати у протеусі схему нашого пристрою.
Клацніть на кнопці P (на малюнку позначено цифрою 1). Це щось на кшталт бібліотеки. Елемент можна знайти вбиванням у полі keywords його назви. Нам знадобляться: pic16f628a, індикатор 7seg-com-cathode (червоного кольору, ми ж справжні сітхи), резистори chipres10K, кнопки button, батарейки cell і заземлення, яке можна знайти клацнувши по кнопці terminals mode (на малюнку позначена цифрою список ground. Елементи в міру вивужування з бібліотеки поступово накопичуються у списку component mode. Далі перетягуємо все, що нам потрібно на основне поле і збираємо схему. Змінюємо номінали опорів і батарейок на потрібні-праве клацання мишею по компоненту-Edit properties. Далі завантажимо програму в мікроконтролер-праве клацання мишею по мікроконтроллеру->Edit properties->Program file і вказуємо шлях до файлика нашої програми зрозширенням *.hex (пам'ятаєте він з'являвся в пакеті проекту після компіляції). Запустити/зупинити моделювання можна кнопками старт/стоп(дякую КЕП), вони на малюнку позначені як 3 та 4.
Вуаля вона працює.