Методи програмування PIC та AVR мікроконтролерів

Поняття про мікроконтролери, їх класифікація та структура. Структура процесорного ядра та функції основних модулів мікроконтролера. Основні особливості, будова, принцип дії, класифікація та порівняння методів програмування мікроконтролерів PIC і АVR.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 12.12.2013
Размер файла 995,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Найдешевшим способом задавання тактової частоти МК є використання зовнішньої RC-ланки, як показано на Рис. 1.9б. Зовнішня RC-ланка не забезпечує високої точності задавання тактової частоти (розкид частот може доходити до десятків відсотків). Це неприйнятно для багатьох задач, де потрібно точний підрахунок часу. Однак існує маса практичних задач, де точність задавання тактової частоти не має великого значення.

Залежність тактової частоти МК від номіналів RC-ланки залежить від конкретної реалізації внутрішнього генератора і наводиться в посібнику з застосування контролера.

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

Деякі сучасні МК містять вмонтовані RC або кільцеві генератори, які дозволяють контролеру працювати без зовнішніх ланок синхронізації. Робота внутрішнього генератора зазвичай дозволяється шляхом програмування відповідного біта регістра конфігурації МК[6,300].

У більшості моделей МК частота часозадаючого елемента (резонатора або RC-ланки) і частота тактування fBUS жорстко пов'язані коефіцієнтом ділення вмонтованого дільника частоти. Тому змінити частоту програмним шляхом неможливо. Однак ряд останніх сімейств МК (наприклад, HC08 фірми Motorola) мають у своєму складі схему тактування, яка базується на принципі синтезатора частоти з контуром фазового автопідстроювання (PLL - phase loop lock). Така схема працює як множник частоти і дозволяє задавати тактову частоту за допомогою низькочастотного кварцового резонатора, що знижує рівень електромагнітного випромінювання МК. Коефіцієнти ділення контура PLL можуть бути змінені програмними шляхом, що дозволяє знизити тактову частоту (і, відповідно, потужність споживання) у проміжки часу, коли висока швидкодія не потрібна.

У деяких МК сімейства AVR фірми Atmel тактова частота контролера, яка задається внутрішньою RC-ланкою, також може змінюватися програмними засобами.

1.10 Апаратні засоби забезпечення надійної роботи МК

Прикладна програма, записана в пам'ять програм МК, повинна забезпечувати його надійну роботу при будь-яких комбінаціях вхідних сигналів. Однак у результаті електромагнітних завад, коливань напруги живлення й інших зовнішніх факторів передбачений виробником хід виконання програми може бути порушений. З метою забезпечення надійного запуску, контролю роботи МК і відновлення працездатності системи під час відсутності оператора всі сучасні МК забезпечуються апаратними засобами забезпечення надійної роботи. До них відносяться:

· схема формування сигналу ініціалізації МК;

· модуль моніторингу напруги живлення;

· сторожовий таймер.

1.10.1 Схема формування сигналу ініціалізації МК

При увімкненні напруги живлення МК повинен почати виконувати записану в пам'яті програму роботи. На етапі наростання напруги живлення МК примусово переводиться в початковий стан, який називають станом ініціалізації. При цьому встановлюються у вихідний стан внутрішні магістралі МК, сигнали управління і регістри спеціальних функцій. Останні визначають початковий стан периферійних модулів МК, які найчастіше за замовчуванням неактивні.

З метою забезпечення надійного запуску від будь-яких джерел живлення з різною динамікою наростання напруги більшість сучасних МК містять убудований детектор напруги живлення (схема Power-On-Reset - POR), що формує сигнал ініціалізації при наростанні напруги живлення. Зокрема таймер встановлення живлення (PWRT), який входить до складу МК сімейства PIC16, починає відлік часу після того, як напруга живлення перетнула рівень близько 1,2...1,8 В. Після закінчення витримки близько 72 мс. вважається, що напруга досягла номіналу[4,144].

Відразу після виходу зі стану ініціалізації МК виконує наступні дії:

· запускає генератор синхронізації МК. Для стабілізації частоти тактування внутрішніми засобами формується затримка часу;

· зчитує енергонезалежні регістри конфігурації у відповідні регістри ОЗП (якщо це необхідно);

· завантажує в лічильник команд адресу початку робочої програми;

· проводить вибірку першої команди з пам'яті програм і приступає до виконання програми.

Адреса комірки пам'яті, у якій зберігається код першої команди, яка виконується, називають вектором початкового запуску або вектором ініціалізації. У деяких МК ця адреса однозначно визначена і наведена у технічному описі. Про такі МК говорять, що вони мають фіксований вектор ініціалізації. В інших МК вектор ініціалізації може бути довільно визначений користувачем. На етапі програмування МК необхідний вектор початкового запуску записується в комірки з фіксованими адресами, і при виході МК з режиму ініціалізації автоматично завантажується в лічильник команд. Про такі МК говорять, що вони мають вектор ініціалізації, який завантажується. Вектор ініціалізації, який завантажується, мають усі 8-розрядні МК фірми Motorola, виконані за структурою з єдиним адресним простором команд і даних.

Для переведення МК у стан ініціалізації при сталій напрузі живлення досить подати сигнал високого або низького рівня (у відповідності з специфікацією МК) на вхід ініціалізації (RESET). Зазвичай для формування сигналу ініціалізації при ввімкненні напруги живлення і натисканні кнопки ініціалізації використовують RC-ланку. Типові схеми формування сигналу ініціалізації представлені на Рис. 1.10.

Кнопка Кн призначена для "ручної" ініціалізації МК при налагодженні. Діод VD перешкоджає попаданню на вхід RESET негативної напруги при вимиканні живлення. Номінали R і C визначають затримку часу, необхідну для завершення всіх перехідних процесів при ініціалізації (вказуються в технічному описі на МК). Тригер Шмідта на вході допускає подачу сигналу ініціалізації з ненормованою тривалістю фронту. При відсутності тригера Шмідта на вході приходиться застосовувати спеціальну зовнішню схему формувача.

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

Рис. 1.10 Типові схеми формування сигналу зовнішньої ініціалізації для МК із високим активним рівнем сигналу ініціалізації (а) і низьким активним рівнем сигналу ініціалізації (б)

Порядок виходу МК зі станів зовнішньої і внутрішньої ініціалізації в цілому однаковий.

1.10.2 Блок детектування зниженої напруги живлення

У реальних умовах експлуатації може скластися така ситуація, при якій напруга живлення МК опуститься нижче мінімально допустимого, але не досягне порога відпускання схеми POR. У цих умовах МК може "зависнути". При відновленні напруги живлення до номінального значення МК залишиться непрацездатним.

Для відновлення працездатності системи після "осідання" напруги живлення МК необхідно знову проініціалізувати.

Для цієї мети в сучасних МК реалізований додатковий блок детектування зниженої напруги живлення.

Такий модуль використовується в МК сімейства HC08 фірми Motorola, аналогічний модуль є і в складі сімейства PIC17 фірми Microchip.

Розглянутий модуль генерує сигнал внутрішньої ініціалізації при зниженні напруги живлення до рівня трохи нижчого за мінімально допустимий. Рівень спрацьовування блоку детектування зниженої напруги живлення значно перевищує напругу збереження даних в ОЗП МК.

Подія скидання за сигналом блоку зниженої напруги живлення відзначається спеціальним бітом в одному з регістрів МК.

Отже, програмно аналізуючи цей біт після ініціалізації МК, можна встановити, що дані цілі, і продовжити виконання програми[14,223].

1.10.3 Сторожовий таймер

Якщо, незважаючи на усі вжиті заходи, МК усе-таки "завис", то на випадок виходу з цього стану всі сучасні контролери мають вмонтований модуль сторожового таймера. Принцип дії сторожового таймера показаний на Рис. 1.11.

Рис. 1.11 Принцип дії сторожового таймера

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

Для вимкнення ініціалізації за переповненням сторожового таймера робоча програма МК повинна періодично скидати лічильник. Скидання лічильника сторожового таймера здійснюється шляхом виконання спеціальної команди (наприклад, CLRWDT) або за допомогою запису деякого зазначеного коду в один з регістрів спеціальних функцій. Тоді при нормальному, передбаченому виробником, порядку виконання робочої програми переповнення лічильника сторожового таймера не відбувається, і він не робить впливи на роботу МК. Однак, якщо виконання робочої програми було порушене, наприклад, унаслідок "зависання", те велика ймовірність того, що лічильник не буде скинутий вчасно. Тоді відбудеться скидання за переповненням сторожового таймера, і нормальний хід виконання робочої програми буде відновлений.

Модулі сторожових таймерів конкретних МК можуть мати різні особливості:

- у ряді МК вектори зовнішньої ініціалізації та ініціалізації за переповненням сторожового таймера збігаються. Це не дозволяє виявити причину ініціалізації програмним шляхом і затрудняє написання робочої програми. Більш високорівневі МК мають або різні вектори ініціалізації, або відзначають подію ініціалізації за переповненням сторожового таймера встановленням спеціального біта в одному з регістрів спеціальних функцій;

- у деяких МК при переході в один з режимів зниженого енергоспоживання, коли робоча програма не виконується, автоматично припиняється робота сторожового таймера. В інших МК сторожовий таймер має незалежний тактовий генератор, що продовжує функціонувати й у режимі очікування. У цьому випадку необхідно періодично виводити МК зі стану очікування для ініціалізації сторожового таймера. У PIC-контролерах фірми Microchip вироблення таких ініціалізацій може бути заборонене шляхом запису нуля в спеціальний біт конфігурації WDTE[7,222].

Використання сторожового таймера істотно підвищує здатність до самовідновлення системи на основі МК.

1.11 Додаткові модулі МК

Описані вище модулі складають так званий базовий комплект МК і входять до складу будь-якого сучасного контролера. Очевидна необхідність включення до складу МК додаткових модулів, склад і можливості яких визначаються конкретною розв'язуваною задачею. Серед таких додаткових модулів необхідно, насамперед, відзначити:

· модулі послідовного вводу/виводу даних;

· модулі аналогового вводу/виводу.

1.11.1 Модулі послідовного вводу/виводу

Наявність у складі 8-розрядного МК модуля контролера послідовного вводу/виводу стало останнім часом звичайним явищем. Задачі, які розв'язуються засобами модуля контролера послідовного вводу/виводу, можна розділити на три основні групи:

- зв'язок вбудованої мікроконтролерної системи із системою управління верхнього рівня, наприклад, з персональним комп'ютером. Найчастіше для цієї мети використовуються інтерфейси RS-232C і RS-485;

- зв'язок із зовнішніми стосовно МК периферійними ІС, а також з датчиками фізичних величин з послідовним виходом. Для цієї мети використовуються інтерфейси I2C, SPI, а також нестандартні протоколи обміну;

- інтерфейс зв'язку з локальною мережею в мультимікроконтролерних системах. У системах з кількістю МК до п'яти зазвичай використовуються мережі на основі інтерфейсів I2C, RS-232C і RS-485 із власними мережевими протоколами високого рівня. У складніших системах усе популярнішим стає протокол CAN[6,112].

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

Кількість ліній, якими відбувається передача в послідовному коді, зазвичай дорівнює двом (I2C, RS-232C, RS-485) або трьом (SPI, деякі нестандартні протоколи). Дана обставина дозволяє спроектувати модулі контролерів послідовного обміну таким чином, щоб з їх допомогою на апаратному рівні можна було реалізувати кілька типів послідовних інтерфейсів. При цьому режим передачі (синхронний або асинхронний) і формат кадру підтримуються на рівні логічних сигналів, а реальні фізичні рівні сигналів для кожного інтерфейсу одержують за допомогою спеціальних ІС, які називають прийомопередавачами, конверторами, трансиверами.

Серед різних типів вмонтованих контролерів послідовного обміну, які входять до складу тих чи інших 8-розрядних МК, склався стандарт "де-факто" - модуль UART (Universal Asynchronous Receiver and Transmitter). UART - це універсальний асинхронний прийомопередавач. Однак більшість модулів UART, крім асинхронного режиму обміну, здатні також реалізувати режим синхронної передачі даних.

Не усі виробники МК використовують термін UART для позначення типу модуля контролера послідовного обміну. Так, у МК фірми Motorola модуль асинхронної прийомопередачі, що підтримує ті ж режими асинхронного обміну, що і UART, прийнято називати SCI (Serial Communication Interface). Слід зазначити, що модуль типу SCI переважно реалізує тільки режим асинхронного обміну, тобто його функціональні можливості вужчі у порівнянні з модулями типу UART. Однак бувають і винятки: під тим же ім'ям SCI у МК МС68НС705В16 ховається модуль синхронно-асинхронної передачі даних[11,223].

Модулі типу UART в асинхронному режимі роботи дозволяють реалізувати протокол обміну для інтерфейсів RS-232C, RS-422А, RS-485, у синхронному режимі - нестандартні синхронні протоколи обміну, і в деяких моделях - SPI. У МК фірми Motorola традиційно передбачені два модулі послідовного обміну: модуль SCI з можливістю реалізації тільки протоколів асинхронної прийомопередачі для інтерфейсів RS-232C, RS-422A, RS-485 і модуль контролера синхронного інтерфейсу в стандарті SPI.

Протоколи інтерфейсів локальних мереж на основі МК (I2C і CAN) відрізняє більш складна логіка роботи. Тому контролери CAN інтерфейсу завжди виконуються у виді самостійного модуля. Інтерфейс I2C з можливістю роботи як у ведучому, так і веденому режимі, також підтримується спеціальним модулем (модуль послідовного порту в МК 89С52 фірми Philips). Але якщо реалізується тільки в ведений режим I2C, то в МК PIC16 фірми Microchip він успішно поєднується з SPI: настроювання того самого модуля на один із протоколів здійснюється шляхом ініціалізації.

Останнім часом з'явилася велика кількість МК з убудованими модулями контролерів CAN і модулями універсального послідовного інтерфейсу периферійних пристроїв USB (Universal Serial Bus). Кожен з цих інтерфейсів має досить складні протоколи обміну, для ознайомлення з якими варто звернутися до спеціальної літератури.

1.11.2 Модулі аналогового вводу/виводу

Необхідність прийому і формування аналогових сигналів вимагає наявності в МК модулів аналогового вводу/виводу.

Найпростішим пристроєм аналогового вводу в МК є вмонтований компаратор напруги. Компаратор порівнює вхідну аналогову напругу з опорним потенціалом VREF і встановлює на виході логічну "1", якщо вхідна напруга більша за опорну. Компаратори зручніше за усе використовувати для контролю визначеного значення вхідної напруги, наприклад, у термостатах. У комбінації з зовнішнім генератором лінійно-змінної напруги, убудований компаратор дозволяє реалізувати на МК інтегруючий аналого-цифровий перетворювач (АЦП).

Однак ширші можливості для роботи з аналоговими сигналами дає АЦП, вмонтований у МК. Найчастіше він реалізується у вигляді модуля багатоканального АЦП, призначеного для вводу в МК аналогових сигналів з датчиків фізичних величин і перетворення цих сигналів у двійковий код. Структурна схема типового модуля АЦП наведена на Рис. 1.12.

Рис. 1.12 Структура модуля АЦП

Багатоканальний аналоговий комутатор К служить для підключення одного з джерел аналогових сигналів (PTx0...PTx7) до входу АЦП. Вибір джерела сигналу для перетворення здійснюється за допомогою запису номера каналу комутатора у відповідні розряди регістра управління АЦП.

Два виводи модуля АЦП використовуються для задавання опорної напруги Uоп: VREFH - верхня межа Uоп, VREFL - нижня межа. Різниця потенціалів на входах VREFH і VREFL і складає Uоп. Роздільна здатність АЦП складає Uоп/2n, де n - кількість розрядів у слові результату. Максимальне значення опорної напруги, як правило, дорівнює напрузі живлення МК. Якщо вимірювана напруга Uвим > VREFH, то результат перетворення буде дорівнює FF, код 00 відповідає напругам Uвим Ј VREFL. Для досягнення максимальної точності виміру варто вибрати максимально допустиме значення Uоп. У цьому випадку напруга зсуву нуля вхідного буфера і нелінійність передаточної характеристики АЦП будуть вносити відносно малі похибки[16,111].

Власне аналого-цифровий перетворювач виконаний за методом послідовного наближення. Практично у всіх моделях 8-розрядних МК розрядність АЦП також складає 8 розрядів. Відповідно, формат подання результатів виміру АЦП - однобайтовий. Виняток складають тільки модулі АЦП мікроконтролерів для управління перетворювачами частоти для електроприводів, роздільна здатність яких дорівнює 10 розрядам. Два молодших розряди результату одержують за допомогою додаткового ємнісного дільника, не зв'язаного з регістром послідовного наближення.

Тривалість такту перетворення задає генератор синхронізації: один цикл дорівнює двом періодам частоти генератора tADC. Час перетворення для типових модулів АЦП мікроконтролерів складає від одиниць до десятків мікросекунд.

Джерелом синхронізації модуля АЦП може служити вмонтований RC-генератор (Г) або імпульсна послідовність тактування міжмодульних магістралей МК. У першому випадку частота синхронізації АЦП обов'язково виявиться оптимальною, тобто такою, яка рекомендується в технічному описі. В другому випадку обрана з інших причин fBUS може виявитися невідповідною для модуля АЦП. На цей випадок в складі деяких модулів передбачений програмований дільник частоти fBUS.

Момент завершення кожного циклу перетворення відзначається встановленням тригера готовності даних. Якщо переривання від модуля АЦП дозволені, то генерується запит на переривання. Як правило, читання регістра результату скидає тригер готовності [5,269].

Більшість модулів АЦП мають тільки режим програмного запуску: встановлення одного з бітів регістра режиму запускає чергове вимірювання. Найуніверсальніші модулі АЦП мають також режим автоматичного запуску, при якому після завершення одного циклу перетворення негайно починається наступний. Однак дані вимірювання кожного циклу повинні бути зчитані програмним способом.

Цифро-аналогові перетворювачі в складі МК є великою рідкістю. Функція цифро-аналогового перетворювача реалізується засобами модуля програмованого таймера в режимі ШІМ. На одному з виводів МК формується високочастотна імпульсна послідовність з регульованою тривалістю імпульсу. Отриманий сигнал згладжується фільтром нижніх частот на операційному підсилювачі. Роздільна здатність такого ЦАП визначається дискретністю регулювання коефіцієнта заповнення в режимі ШІМ.

2. Основні особливості мікроконтролерів серії PIC

2.1 Склад і призначення сімейств PIC-контролерів

Мікроконтролери сімейств PIC (Peripheral Interface Controller) компанії Microchip поєднують усі передові технології мікроконтролерів: електрично програмовані користувачем ППЗП, мінімальне енергоспоживання, високу продуктивність, добре розвинуту RISC-архітектуру, функціональну закінченість і мінімальні розміри. Широка номенклатура виробів забезпечує використання мікроконтролерів у пристроях, призначених для різноманітних сфер застосування.

Перші мікроконтролери компанії Microchip PIC16C5x з'явилися наприкінці 1980-х років і завдяки своїй високій продуктивності і низької вартості склали серйозну конкуренцію 8-розрядним МК із CISC-архітектурою, які виготовлялися на той час.

Висока швидкість виконання команд у PIC-контролерах досягається за рахунок використання двохшинної гарвардської архітектури замість традиційної одношинної фон-нейманівської. Гарвардська архітектура базується на наборі регістрів з розділеними шинами й адресними просторами для команд і даних. Усі ресурси мікроконтролера, такі як порти вводу/виводу, комірки пам'яті і таймер, являють собою фізично реалізовані апаратні регістри[4,211].

Мікроконтролери PIC містять RISC-процесор із симетричною системою команд, що дозволяє виконувати операції з будь-яким регістром, використовуючи довільний метод адресації. Користувач може зберігати результат операції в самому регістрі-акумуляторі або в другому регістрі, який використовується для операції.

В даний час компанія Microchip випускає п'ять основних сімейств 8-розрядних RISC-мікроконтролерів, сумісних знизу нагору за програмним кодом:

· PIC12CXXX - сімейство мікроконтролерів, що випускаються в мініатюрному 8-вивідному виконанні. Ці мікроконтролери випускаються як з 12-розрядною (33 команди), так і з 14-розрядною (35 команд) системою команд. Містять вмонтований тактовий генератор, таймер/лічильник, сторожовий таймер, схему управління перериваннями. В складі сімейства є мікроконтролери з убудованим 8-розрядним чотирьохканальним АЦП. Здатні працювати при напрузі живлення до 2,5 В;

· PIC16C5Х - базове сімейство мікроконтролерів з 12-розрядними командами (33 команди), що випускається в 18-, 20- і 28-вивідних корпусах. Являють собою прості недорогі мікроконтролери з мінімальною периферією. Здатність працювати при малій напрузі живлення (до 2 В) робить їх зручними для застосування в переносних конструкціях. До складу сімейства входять мікроконтролери підгрупи PIC16HV5XX, здатні працювати безпосередньо від батареї в діапазоні напруг живлення до 15 В;

· PIC16CXXX - сімейство мікроконтролерів середнього рівня з 14-розрядними командами (35 команд). Найбільш численне сімейство, що поєднує мікроконтролери з різноманітними периферійними пристроями, до складу яких входять аналогові компаратори, аналогово-цифрові перетворювачі, контролери послідовних інтерфейсів SPI, USART і I2C, таймери-лічильники, модулі захоплення/порівняння, широтно-імпульсні модулятори, сторожові таймери, супервізорні схеми і так далі;

· PIC17CXXX - сімейство високопродуктивних мікроконтролерів з розширеною системою команд 16-розрядного формату (58 команд), що працюють на частоті до 33 Мгц, з об'ємом пам'яті програм до 16 Кслів. Крім великої периферії, 16-рівневого апаратного стека і векторної система переривань, майже всі мікроконтролери цього сімейства мають вбудований апаратний множник 8х8, що виконує операцію множення за один машинний цикл. Є одними із самих швидкодіючих у класі 8-розрядних мікроконтролерів;

· PIC18CXXX - сімейство високопродуктивних мікроконтролерів з розширеною системою команд 16-розрядного формату (75 команд) і убудованим 10-розрядним АЦП, які працюють на частоті до 40 Мгц. Містять 31-рівневий апаратний стек, вмонтовану пам'ять команд до 32 Кслів і здатні адресувати до 4 Кбайт пам'яті даних і до 2 Мбайт зовнішньої пам'яті програм. Розширене RISC-ядро мікроконтролерів даного сімейства оптимізоване під використання нового Сі-компілятора.

Більшість PIC-контролерів випускаються з однократно програмованою пам'яттю програм (OTP), з можливістю внутрісхемного програмування або масочним ПЗП. Для мети налагодження пропонуються більш дорогі версії з ультрафіолетовим стиранням і Flash-пам'яттю. Повний список модифікацій PIC-контролерів, що випускаються, включає порядку п'ятисот найменувань. Тому продукція компанії перекриває майже весь діапазон застосувань 8-розрядних мікроконтролерів.

З програмних засобів налагодження найбільш відомі і доступні різні версії асемблерів, а також інтегроване програмне середовище MPLAB. Російські виробники програматорів і апаратних відлагоджувальних засобів також приділяють увагу PIC-контролерам. Випускаються як спеціалізовані программатори, такі як PICPROG, що програмують майже весь спектр PIC-мікроконтролерів, так і універсальні: UNIPRO і СТЕРХ, які підтримують найбільш відомі версії PIC-контролерів. [6,178]

Найбільш розповсюдженими сімействами PIC-контролерів є PIC16CXXX і PIC17CXXX.

2.1.1 Мікроконтролери сімейств PIC16CXXX і PIC17CXXX

Основним призначенням мікроконтролерів сімейств PIC16 і PIC17, як випливає з абревіатури PIC (Peripheral Interface Controller), є виконання інтерфейсних функцій. Цим підрозумівається особливості їхньої архітектури:

· RISC-система команд, що характеризується малим набором одноадресних інструкцій (33, 35 або 58), кожна з яких має довжину в одне слово (12, 14 або 16 біт) і більшість виконується за один машинний цикл. У системі команд відсутні складні арифметичні команди (множення, ділення), гранично скорочений набір умовних переходів;

· висока швидкість виконання команд: при тактовій частоті 20 Мгц час машинного циклу складає 200 нс (швидкодія складає 5 млн. операцій/сек);

· наявність потужних драйверів (до 25 ма) на лініях портів вводу/виводу, що дозволяє підключати безпосередньо до них досить потужне навантаження, наприклад, світло діоди;

· низька потужність споживання;

· орієнтація на цінову нішу гранично низької вартості, що визначає використання дешевих корпусів з малою кількістю виводів (8, 14, 18, 28), відмова від зовнішніх шин адреси і даних (крім PIC17C4X), використання спрощеного механізму переривань та апаратного (програмно недоступного) стека.

2.1.2 Особливості архітектури мікроконтролерів сімейства PIC16CXXX

Мікроконтролери сімейства PIC16CXXX, виконані за технологією HCMOS являють собою 8-розрядні мікроконтролери на основі RISC-процесора, виконані за гарвардською архітектурою. Мають вмонтований ПЗП команд об'ємом від 0,5 до 4 Кслів (розрядність слова команд дорівнює 12 - 14 біт). Пам'ять даних PIC-контролерів організована у виді реєстрового файлу об'ємом 32 - 128 байт, у якому від 7 до 16 регістрів відведено для управління системою та обміну даними з зовнішніми пристроями.

Одним з основних переваг цих пристроїв є дуже широкий діапазон напруг живлення (2 - 6 В). Струм споживання на частоті 32768 Гц складає менше 15 мкА, на частоті 4 МГц - 1 - 2 мА, на частоті 20 МГц 5 - 7 мА і у режимі мікроспоживання (режим SLEEP) - 1 - 2 мкА. Випускаються модифікації для роботи в трьох температурних діапазонах: від 0 до +70°С, від -40 до +85°С та від -40 до +125°С.

Кожен з контролерів містить універсальні (від 1 до 3) сторожові таймери, а також надійно збудовану систему ініціалізації при увімкненні живлення. Частота внутрішнього тактового генератора задається або кварцовим резонатором, або RC-ланкою у діапазоні 0 - 25 Мгц. PIC-контролери мають від 12 до 33 ліній цифрового вводу-виводу, причому кожна з них може бути незалежно настроєна на ввід або вивід [9,321].

У пристрій PIC16C64 входить широтно-імпульсний модулятор, за допомогою якого можна реалізувати ЦАП з роздільною здатністю до 16 розрядів. Тут є і послідовний двонапрямлений синхронно-асинхронний порт, що забезпечує можливість організації шини I2C. Прилади PIC16C71 і PIC16C74 містять вмонтований багатоканальний 8-розрядний АЦП із пристроєм вибірки-збереження.

Крім пам'яті програм у PIC передбачено декілька перемичок, що індивідуально пропалюються, за допомогою яких можна на етапі програмування кристалу вибрати тип тактового генератора, відключити сторожовий таймер або систему ініціалізації, увімкнути захист пам'яті програм від копіювання, а також записати серійний номер кристала (16 біт).

З програмної точки зору PIC-контролер це 8-розрядний RISC-процесор з гарвардською архітектурою. Кількість команд невелика - від 33 до 35. Усі команди мають однакову довжину і, крім команд розгалуження, виконуються за чотири періоди тактової частоти (на відмінність, наприклад, від 12 періодів для I87C51). Підтримуються безпосередній, непрямий і відносний методи адресації, можна ефективно керувати окремими бітами в межах усього реєстрового файлу. Стек реалізований апаратно. Його максимальна глибина складає два або вісім рівнів у залежності від типу контролера. Майже у всіх мікросхемах PIC є система переривань, джерелами яких можуть бути таймер і зовнішні сигнали. Система команд практично симетрична і, як наслідок, легка в освоєнні.

Застосування PIC-контролерів доцільне в нескладних приладах з обмеженим струмом споживання (автономні пристрої, прилади з живленням від телефонної лінії і т.п.). Завдяки малій кількості компонентів, використовуваних при побудові таких приладів, їхні розміри зменшуються, а надійність збільшується[11,151].

Типовим представником мікроконтролерів сімейства PIC16CXXX є мікроконтролери підгрупи PIC16F8X.

2.2 Мікроконтролери підгрупи PIC16F8X

2.2.1 Основні характеристики

Мікроконтролери підгрупи PIC16F8X відносяться до сімейства 8-розрядних КМОН мікроконтролерів групи PIC16CXXX, для яких характерні низька вартість, цілком статична КМОН-технологія і висока продуктивність.

До складу підгрупи входять МК PIC16F83, PIC16CR83, PIC16F84 і PIC16CR84. Основні характеристики МК підгрупи PIC16F8X наведені в табл. 2.1.

Усі мікроконтролери підгрупи PIC16F8X використовують гарвардську архітектуру з RISC-процесором, що володіє наступними основними особливостями:

· використовуються тільки 35 простих команд;

· усі команди виконуються за один цикл (400 нс при частоті 10 Мгц), крім команд переходу, які вимагають 2 цикли;

· робоча частота 0 Гц ... 10 Мгц;

· роздільні шини даних (8 біт) і команд (14 біт);

· 512 х 14 або 1024 х 14 пам'ять програм, виконана на ПЗП або електрично перепрограмованій Flash- пам'яті;

· 15 восьмирозрядних регістрів спеціальних функцій (SFR);

· восьмирівневий апаратний стек;

· пряма, непряма і відносна адресація даних і команд;

· 36 або 68 восьмирозрядних регістрів загального призначення (GPR) або ОЗП;

· чотири джерела переривання:

· зовнішній вхід RB0/INT;

· переповнення таймера TMR0;

· зміна сигналів на лініях порту B;

· завершення запису даних у пам'ять EEPROM;

· 64 x 8 електрично перепрограмована EEPROM пам'ять даних з можливістю виконання 1000000 циклів стирання/запису;

· збереження даних у EEPROM протягом як мінімум 40 років.

Табл. 2.1. Основні характеристики МК підгрупи PIC16F8X

Параметр

PIC16F83

PIC16CR8

PIC16F84

PIC16CR84

Максимальна частота, МГц

10

10

10

10

Flash-пам'ять програм, слів

512

-

-

ПЗП програм, слів

-

512

-

Пам'ять даних, байт

36

36

68

68

Пам'ять даних у РПЗП байт 64

64

64

64

Таймери

TMR0

TMR0

TMR0

TMR0

Кількість джерел переривань

4

4

4

4

Кількість ліній вводу/виводу

13

13

13

13

Діапазон напруг живлення В

2,0 - 6,0

2,0 - 6,0

2,0 - 6,0

2,0 - 6,0

Кількість виводів і тип корп.

18 DIP, SOIC

18 DIP, SOIC

18 DIP, SOIC

18 DIP, SOIC

Мікроконтролери підгрупи PIC16F8X мають розвинуті можливості вводу/виводу:

· 13 ліній вводу-виводу з індивідуальним встановленням напрямку обміну;

· високий що втікаючий/витікаючий струми, достатні для керування світлодіодами:

· максимальний струм, що втікає - 25 мА;

· максимальний струм, що витікає - 20 мА;

· 8-бітний таймер/лічильник TMR0 з 8-бітним програмованим попереднім дільником.

Спеціалізовані мікроконтролерні функції включають наступні можливості:

· автоматичне скидання при увімкненні (Power-on-Reset);

· таймер увімкнення при ініціалізації (Power-up Timer);

· таймер запуску генератора (Oscillator Start-up Timer);

· сторожовий (Watchdog) таймер WDT із власним вмонтованим генератором, що забезпечує підвищену надійність;

· EEPROM біт таємності для захисту коду;

· економічний режим SLEEP;

· обирані користувачем біти для встановлення режиму збудження вмонтованого генератора;

· послідовний пристрій програмування Flash/EEPROM пам'яті програм і даних з використанням тільки двох виводів.

КМОН технологія забезпечує МК підгрупи PIC16F8X додаткові переваги:

· статичний принцип роботи;

· широкий діапазон напруг живлення: 2,0...6,0 В;

· низьке енергоспоживання:

· менше 2 мА при 5В та 4Мгц;

· порядку 15 мкА при 2В и 32Кгц;

· менше 1 мкА для SLEEP-режиму при 2В.

Мікроконтролери підгрупи PIC16F8X відрізняються між собою тільки об'ємом ОЗП даних, а також об'ємом і типом пам'яті програм.

Наявність у складі підгрупи МК із Flash-пам'яттю програм полегшує створення і налагодження прототипів промислових зразків виробів.

Рис. 2.1. Структурна схема МК підгрупи PIC16F8X

Архітектура базується на концепції роздільних шин і областей пам'яті для даних і для команд (гарвардська архітектура). Шина даних і пам'ять даних (ОЗП) - мають ширину 8 біт, а програмна шина і програмна пам'ять (ПЗП) мають ширину 14 біт. Така концепція забезпечує просту, але потужну систему команд, розроблену так, що бітові, байтові і реєстрові операції працюють з високою швидкістю і з перекриттям за часом вибірок команд і циклів виконання. 14-бітова ширина програмної пам'яті забезпечує вибірку 14-бітової команди в один цикл. Двоступінчастий конвеєр забезпечує одночасну вибірку і виконання команди. Усі команди виконуються за один цикл, крім команд переходів [14,231].

Мікроконтролери PIC16F83 і PIC16CR83 адресують 512х14 пам'яті програм, а PIC16F84 і PIC16CR84 - 1Кх14 пам'яті програм. Уся пам'ять програм є внутрішньою.

Мікроконтролер може прямо або побічно звертатися до регістрів або пам'яті даних. Усі регістри спеціальних функцій, включаючи лічильник команд, відображаються на пам'ять даних. Ортогональна (симетрична) система команд дозволяє виконувати будь-яку команду над будь-яким регістром з використанням довільного методу адресації. Ортогональна архітектура і відсутність спеціальних винятків робить програмування МК групи PIC16F8X простим і ефективним[15,198].

2.2.2 Порти вводу/виводу

Контролери підгрупи PIC16F8X мають два порти: PORTA (5 біт) і PORTB (8 біт) з побітовим індивідуальним настроюванням на ввід або на вивід.

Порт А (PORTA) являє собою 5-бітовий фіксатор, що відповідає виводам контролера RA. Лінія RA4 має вхід тригера Шмідта і вихід з відкритим стоком. Всі інші лінії порту мають ТТЛ вхідні рівні і КМОН вихідні буфери. Адреса регістра порту А - 05h.

Кожній лінії порту поставлений у відповідність біт напрямку передачі даних, що зберігається в керуючому регістрі TRISA, розташованому за адресою 85h. Якщо біт керуючого TRISA регістра має значення 1, то відповідна лінія буде встановлюватися на ввід. Нуль перемикає лінію на вивід і одночасно виводить на неї уміст відповідного регістра-фіксатора порту. При увімкненні живлення всі лінії порту за замовчуванням настроюються на ввід.

На Рис. 2.2. дано схему ліній RA<3:0> порту А.

Рис. 2.2. Схема ліній RA<3:0> порту А. Виводи порту мають захисні діоди до Vdd і Vss

Операція читання порту А зчитує стан виводів порту, у той час як запис у нього змінює стан тригерів порту. Всі операції з портом є операціями типу "читання-модифікація-запис". Тому запис у порт припускає, що стан виводів порту спочатку зчитується, потім модифікується і записується в тригер-фіксатор.

Вивід RA4 мультиплексований з тактовим входом таймера TMR0. Схема лінії RA4 порта А наведена на Рис. 2.3.

Порт B (PORTB) - це двонапрямлений 8-бітовий порт, що відповідає виводам RB<7:0> контролера і розташований за адресою 06h. Керуючий регістр, який відноситься до цього порту TRISB розташований на першій сторінці регістрів за адресою 86h. Якщо біт керуючого TRISB регістра має значення 1, то відповідна лінія буде встановлюватися на ввід. Нуль перемикає лінію на вивід і одночасно виводить на неї уміст відповідного регістра. При увімкненні живлення всі лінії порту за замовчуванням настроюються на ввід.

Рис. 2.3. Схема лінії RA4 порти А. Вивід порту має захисний діод тільки до Vss

У кожної ніжки порту В є невелике активне навантаження (близько 100мкА) на лінію живлення (pull-up). Вона автоматично відключається, якщо ця ніжка запрограмована як вивід. Більше того, керуючий біт /RBPU регістра OPTION<7> може відключити (при RBPU=1) усі навантаження. Ініціалізація при увімкненні живлення також відключає всі навантаження[12,246].

Чотири лінії порту В (RB<7:4>) можуть викликати переривання при зміні значення сигналу на кожній з них. Якщо ці лінії настроєні на ввід, то вони опитуються і замикаються в циклі читання Q1. Нова величина вхідного сигналу порівнюється з старою в кожному командному циклі. При розбіжності значення сигналу на ніжці й у фіксаторі генерується високий рівень. Виходи детекторів "розбіжностей" RB4, RB5, RB6, RB7 з'єднуються за схемою АБО і генерують переривання RBIF (запам'ятовується в регістрі INTCON<0>). Будь-яка лінія, настроєна як вивід, у цьому порівнянні участі не бере. Переривання може вивести кристал з режиму SLEEP. У підпрограмі обробки переривання варто скинути запит переривання одним з наступних способів:

- прочитати (або записати в) порт В. Це завершить стан порівняння;

- обнулити біт RBIF регістра INTCON <0>.

При цьому необхідно мати на увазі, що умова "розбіжності" буде продовжувати встановлювати ознаку RBIF. Тільки читання порту В може усунути "розбіжність" і дозволить обнулити біт RBIF.

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

Схеми ліній порту B наведені на Рис. 2.4. і 2.5.

Рис. 2.4.Схема ліній RB<7:4> порту B. Виводи порту мають захисні діоди до Vdd і Vss

Рис. 2.5. Схема ліній RB<3:0> порту B. Виводи порту мають захисні діоди до Vdd і Vss

При організації двонапрямлених портів необхідно враховувати особливості організації вводу/виводу даних МК. Будь-яка команда, що здійснює запис, виконує її усередині як "читання-модифікація-запис". Наприклад, команди BCF і BSF зчитують порт цілком, модифікують один біт і виводять результат назад. Тут необхідна обережність. Зокрема, команда BSF PORTB, 5 (установити в одиницю біт 5 порту B) спочатку зчитує всі реальні значення сигналів, що є присутніми у даний момент на виводах порту. Потім виконуються дії над бітом 5, і нове значення байта цілком записується у вихідні фіксатори. Якщо інший біт регістра PORTB використовується як двонапрямлений порт вводу/виводу (скажемо, біт 0), і в даний момент він визначений як вхідний, то вхідний сигнал на цьому виводі буде зчитаний і записаний назад у вихідний тригер-фіксатор цього ж виводу, стираючи попередній стан. Доти, поки ця ніжка залишається в режимі вводу, ніяких проблем не виникає. Однак якщо пізніше лінія 0 переключиться в режим виводу, її стан буде невизначеним[13,147].

На ніжку, що працює в режимі виводу, не повинні навантажуватися зовнішні джерела струмів ("монтажне І", "монтажне АБО"). Великі результуючі струми можуть пошкодити кристал.

Необхідно витримувати визначену послідовність звертання до портів вводу/виводу. Запис у порт виводу відбувається наприкінці командного циклу. Але при читанні дані повинні бути стабільні на початку командного циклу. Будьте уважні в операціях читання, що слідують відразу за записом у той же порт. Тут треба враховувати інерційність встановлення напруги на виводах. Може знадобитися програмна затримка, щоб напруга на ніжці (яка залежить від навантаження) встигла стабілізуватися до початку виконання наступної команди читання.

2.3 Система команд мікроконтролерів підгрупи PIC16F8X

2.3.1 Перелік і формати команд

Мікроконтролери підгрупи PIC16F8X мають просту й ефективну систему команд, що складає усього з 35 команд.

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

Табл. 2.2. Описи полів команд МК сімейства PIC16CXXX

Поле

Опис

f

Адреса регістра

w

Робочий регістр

b

Номер біта в 8-розрядному регістрі

k

Константа

x

Не використовується. Асемблер формує код з х=0

d

Регістр призначення:

d=0 - результат у регістрі w

d=1 - результат у регістрі f

За замовчуванням d=1

label

Ім'я мітки

TOS

Beршина стека

PC

Лічильник команд

PCLATH

Регістр PCLATH

GIE

Біт дозволу всіх переривань

WDT

Сторожовий таймер

/TO

Тайм-аут

/PD

Вимикання живлення

dest

Регістр призначення: робочий регістр w або регістр, заданий у команді

[ ]

Необов'язкові параметри

( )

Зміст

®

Присвоєння

< >

Поле номера біта

О

З набору

Для команд роботи з байтами f позначає регістр, з яким відбувається дія; d - біт, що визначає, куди покласти результат. Якщо d =0, то результат буде поміщений у регістр w, при d=1 результат буде поміщений у регістр "f", згаданий у команді.

Для команд роботи з бітами b позначає номер біта, що бере участь у команді, а f - це регістр, у якому даний біт розташований.

Для команд передачі управління й операцій з константами, k позначає восьми- або одиннадцатибітну константу.

Майже всі команди виконуються протягом одного командного циклу. У двох випадках виконання команди займає два командних цикли:

· перевірка умови і перехід;

· зміна програмного лічильника як результат виконання команди.

Один командний цикл складається з чотирьох періодів генератора. Таким чином, для генератора з частотою 4 Мгц час виконання командного циклу буде 1 мкс.

Основні формати команд МК зображені на Рис. 2.6.

Система команд МК підгрупи PIC16F8X наведена в таб. 2.3.

Рис. 2.6. Основні формати команд

Табл. 2.3. Система команд МК підгрупи PIC16F8X

Мнемоніка

Опис команди

Цикли

Біти стану

Прим.

ADDWF f, d

Додавання W з f

1

С,DC,Z

1,2

ANDWF f, d

Логічне І W і f

1

Z

1,2

CLRF f

Ініціалізація регістра f

1

Z

2

CLRW

Очищення регістра W

1

Z

COMF f, d

Інверсія регістра f

1

Z

1,2

DECF f, d

Декремент регістра f

1

Z

1,2

DECFSZ f, d

Декремент f, пропустити команду, якщо 0 1(2)

1,2,3

INCF f, d

Інкремент регістра f

1

Z

1,2

INCFSZ f, d

Інкремент f, пропустити команду, якщо 0 1(2)

1,2,3

IORWF f, d

Логічне АБО W і f

1

Z

1,2

MOVF f, d

Пересилання регістра f

1

Z

1,2

MOVWF f

Пересилання W у f

1

NOP -

Холоста команда

1

RLF f, d

Зсув f уліво через перенос

1

C

1,2

RRF f, d

Зсув f вправо через перенос

1

C

1,2

SUBWF f, d

Віднімання W з f

1

C,DC,Z

1,2

SWAPF f, d

Обмін місцями тетрад у f

1

1,2

XORWF f, d

Виключаюче АБО W і f

1

Z

1,2

BCF f, b

Очищення біта в регістрі f

1

1,2

BSF f, b

Встановлення біта в регістрі f

1

1,2

BTFSC f, b

Пропустити команду, якщо біт у f дорівнює нулю

1(2)

3

BTFSS f, b

Пропустити команду, якщо біт у f дорівнює одиниці

1(2)

3

ADDLW k

Додавання константи та W

1

С,DC,Z

ANDLW k

Логічне І константи та W

1

Z

CALL k

Виклик підпрограми

2

CLRWDT -

Ініціалізація сторожового таймера WDT

1

/TO,/P

GOTO k

Перехід за адресою

2

IORLW k

Логічне АБО константи та W

1

Z

MOVLW k

Пересилання константи в W

1

RETFIE -

Повернення з переривання

2

RETLW k

Повернення з підпрограми з завантаженням константи в W

2

RETURN -

Повернення з підпрограми

2

SLEEP -

Перехід у режим SLEEP

1

/TO,/P

SUBLW k

Віднімання W з константи

1

С,DC,Z

XORLW k

Виключаюче АБО константи та W

1

Z

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

Аналіз архітектури мікроконтролерів PIC з погляду їхнього програмування і налагодження систем дозволяє зробити наступні висновки:

· RISC-система команд забезпечує високу швидкість виконання інструкцій, але викликає утруднення і зниження продуктивності при програмуванні нетривіальних алгоритмів. Оскільки всі інструкції в системі команд є одноадресними, завантаження константи в кожній з регістрів вимагають двох інструкцій. Спочатку потрібно завантажити константу в робочий регістр w, а потім переслати його вміст у потрібну комірку пам'яті даних:

- movlw k

- movwf f

· Аналогічно, усі бінарні арифметико-логічні операції приходиться виконувати з залученням робочого регістра w;

· висока швидкодія досягається в значній мірі за рахунок застосування конвеєра команд. Інструкції розгалуження, що змінюють лічильник команд (безумовний перехід, що обчислює перехід), не використовують інструкцію з черги, тому виконуються за два машинних цикли і знижують темп виконання програми. Крім того, сам аналіз умов в архітектурі PIC вимагає виконання "зайвих" команд;

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

· апаратний стек глибиною 8 слів не має ознаки переповнення й обмежує вкладеність процедур. За тим, щоб він не переповнювався, програміст повинен стежити самостійно;

· пам'ять даних складається з банків, для визначення поточного банку використовуються біти регістрів STATUS (для PIC16) або BSR (для PIC17). На етапі трансляції приналежність зазначеного регістра поточному активному банку перевірити неможливо, для цього потрібно моделювання ходу виконання програми;

· пам'ять програм розбита на сторінки розміром 2К слів. Для переходу на потрібну адресу за допомогою команд CALL і GOTO повинні бути правильно встановлені біти вибору поточної сторінки в регістрі PCLATH. На етапі трансляції неможливо перевірити коректність передачі управління під час виконання, для цього також потрібно моделювання виконання програми;

· обмеженість ресурсів МК серії PIC робить проблематичним їхнє програмування на мовах високого рівня.

Зазначені особливості архітектури мікроконтролерів PIC компенсуються надзвичайно низькою ціною, тому такі вироби (особливо сімейства PIC16) дуже популярні. В даний час їх використовують навіть замість логічних ІС середнього ступеня інтеграції. Але реалізувати всі переваги цих МК можна тільки при наявності засобів програмування і налагодження, адекватних за ціною і функціональними можливостями розв'язуваним задачам. Найважливіші вимоги до інструментальних засобів для МК, які орієнтовані на виконання функцій вводу/виводу, можна сформулювати в такий спосіб:

· основним призначенням цих засобів є підтримка програмування мовою асемблер і перенос програми на плату системи управління;

· потужні драйвери портів вводу/виводу, стан яких однозначно описується значеннями в регістрах управління, спрощують функцію заміщення електрофізичних параметрів прототипної ВІС, тому такі порти можна імітувати за допомогою ВІС програмованої логіки;

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

3. Основні характеристики сімейства мікроконтролерів АVR

Однокристальні AVR-мікроконтролери представляють 8-розрядні високопродуктивні RISC-контролери загального призначення.

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

Так, наприклад, в номенклатуру групи AT90S входять прилади з ПЗП об'ємом від 1 до 8 Кбайт, з самими різними наборами периферії і в корпусах з кількістю виводів від 8 до 48. Зараз в серійному виробництві знаходяться три сімейства AVR -- Tiny, Classic і Mega. Мікроконтролери Tiny -- найбільш дешеві і прості, Mega -- найбільш потужні, а Classic займають проміжне місце між ними[2,351].

3.1 Основні характеристики AVR-контролерів

Classic - основна лінія контролерів з продуктивністю до 16 MIPS, пам'ять програм FASH ROM 2-8Кбайт, пам'ять даних EEPROM 64-512 байт, пам'ять даних SRAM 128-512 байт.

Tiny - мікроконтролери низької вартості у 8-вивідному виконанні, мають вбудовану систему контролю напруги живлення.

Mega - продуктивність 4-6 MIPS, пам'ять програм FASH ROM 64-128Кбайт, пам'ять даних EEPROM 64-4096 байт, пам'ять даних SRAM 1-4 Kбайт, вбудований 10-розрядний 8-канальний АЦП, апаратний помножувач.

В принципі, всі мікроконтролери побудовані за однією схемою.

Система управління, що складається з лічильника команд і схеми декодування, бере на себе зчитування та декодування команд з пам'яті програм, а операційний пристрій відповідає за виконання арифметичних і логічних операцій; інтерфейс вводу / виводу дозволяє обмінюватися даними з періферійними пристроями, і, нарешті, необхідно мати запам'ятовуючий пристрій для зберігання програм і даних (рис.3.1).

Рис.3.1 Базова структура мікроконтролера

Операційний пристрій, як правило, складається з арифметико-логічного пристрою (АЛП), нагромаджуючого суматора і декількох допоміжних регістрів. У класичній програмі майже половина всіх команд - це команди пересилання (move) для передачі даних від допоміжних регістрів до накопичення сумматору і назад. У сімействі мікроконтролерів AVR накопичувальний суматор, що представляє собою "тонке місце", стає не настільки критично важливим, завдяки застосуванню 32-х робочих регістрів, пов'язаних з блоком АЛП. В результаті арифметичні і логічні операції можуть бути виконані протягом єдиного такту[7,159].

3.2 Арифметико-логічний пристрій

Операції АЛП можна розділити на три основні категорії: арифметичні, логічні і порозрядного. Кожній з цих категорій відповідають потужні команди. Деякі (нові) мікроконтролери сімейства AVR мають теж апаратні помножувачі в арифметичному блоці АЛП.

3.3 Структура команд

Незважаючи на RISC-архітектуру, запас команд не так вже і обмежений: як ні як, AT90S8515, базової серії, має 118 команд, у вищій мірі оптимізованих з точки зору доцільності та ефективності, а самий "слабкий" представник сімейства - AT90S1200 - чи сильно "відстає від лідера" зі своїми 89 командами. У мікроконтролерах AVR базової серії всі команди мають однакову ширину слова 16 біт (тобто, 2 байти). Виключенням є тільки дві команди для прямої адресації статичної пам'яті даних Ids і sts, що складаються з двох слів і, відповідно, з 4 байт.

За небагатьма винятками (команда переходу, операції з безпосередньою адресацією і пересилання в пам'ять / з пам'яті) всі команди обробляються протягом одного такту системної синхронізації.


Подобные документы

  • Аналіз роботи обчислювальних пристроїв, побудованих за RISC-архітектурою. Центральний процесор і внутрішня пам'ять мікроконтролерів AVR компанії Atmel. Принцип побудови AVR-контролера ATtiny2313: складові частини; програмування пам'ятi мовою Асемблер.

    курсовая работа [1,1 M], добавлен 27.07.2015

  • Програма-симулятор для прийома та передачи даних з портів мікроконтролера, з попереднім їх налаштуванням на введення, виведення даних, встановлення переривань та управління часовими затримками. Розробка програмної схеми для реалізації функції світлофора.

    курсовая работа [1,8 M], добавлен 23.04.2014

  • Короткий опис мікроконтролера ATmega6450, його особливості та опис виводів. Розробка принципової схеми стенду. Написання програми на мові СІ при використанні програмного середовища CodeVisionAVR. Перепрограмування мікроконтролера ATmega6450 сімейства AVR.

    курсовая работа [491,2 K], добавлен 15.05.2013

  • Огляд засобів створення програмного забезпечення сучасних мікроконтролерів. Аналіз методів та налаштувань контролерів. Засоби генерації коду налаштувань. Детальний опис розробки програми генератора налаштувань ядра Cortex M4 та методики її тестування.

    курсовая работа [1,3 M], добавлен 20.05.2015

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Сутність і структурні елементи бінарного дерева, характеристика методів його обходу (в прямому, симетричному та зворотному порядку). Вибір мови програмування, середовища розробки та технічних засобів. Структура даних і модулів системи, порядок її роботи.

    дипломная работа [1,4 M], добавлен 12.07.2013

  • Мoвa прoгрaмувaння як систeма пoзначень, що служить для точного опису програм або алгоритмів для ЕOM. Вимоги до мов програмування, класифікація за їх особливостям. Загальна характеристика найбільш поширених мов програмування: Сі, Паскаль, Delphi, Бейсік.

    реферат [24,4 K], добавлен 10.11.2012

  • Використання мови програмуванння Java при виконанні "задачі лінійного програмування": її лексична структура і типи даних. Методи розв’язання задачі. Особливості логічної структури програми, побудова її зручного інтерфейсу за допомогою симплекс методу.

    курсовая работа [437,9 K], добавлен 24.01.2011

  • Характеристика методів та етапів створення простих програм на мові програмування С++. Особливості структури та порядку запуску програми. Функції вводу і виводу та маніпулятори мови С++. Робота з одновимірними масивами. Символьна інформація та рядки.

    дипломная работа [91,2 K], добавлен 19.06.2010

  • Особливості редагування за допомогою текстового редактора NotePad вхідного файлу. C++ як універсальна мова програмування, знайомство с функціями. Характеристика графічних засобів мови С. Аналіз основних понять об’єктно-орієнтованого програмування.

    курсовая работа [123,3 K], добавлен 14.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.