русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Апаратні засоби мікроконтролерів

1.2.1. Запуск мікроконтролера

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

Скидання в початковий стан.

На рис. 1.2. зображена схема скидання. Цю схему найкраще використовувати у випадках, коли гарантовано підтримка напруги живлення в робочому діапазоні. Кнопка RESET використовується в процесі розробки пристроїв для скидання МК в початковий стан. (Див. мал. 1.2. )

Рис. 1.2. Схема RESET.

 

1.2.2. Тактування і командні цикли

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

Рис. 1.3. Командний цикл і машинні такти.

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

 

1.2.3. Програмний лічильник і АЛУ

Програмний лічильник (Program Counter) або лічильник команд (СК) використовується для вказівки наступної команди виконуваної програми. Реалізація цієї функції значно ускладнюється, коли необхідно зберегти вміст СК при натисненні підпрограм і обробці запитів переривання або забезпечити розгалуження програми. СК являє собою лічильник з паралельним введенням/виведенням. У процесорах з Прінстонської архітектурою вміст СК надходить оп шині даних в схему керування пам'яттю, вказуючи адреса зчитується команди. Часто СК входить до складу схеми управління пам'яттю - це дозволяє уникнути передачі адреси з внутрішньої шини даних. Важливі особливості функціонування СК - паралельна завантаження нового вмісту, що надходить з шини даних, можливість скидання (повернення до адресою першої команди програми), реалізація инкремента. У 8-розрядних МК розрядність СК зазвичай більше, ніж 8 біт. При завантаження в СК нової адреси, він надходить по шині даних частинами по 8-біт, що вимагає виконання додаткових машинних циклів. Щоб скоротити час завантаження СК, деякі МК мають команди розгалуження, при яких завантажується тільки 8 молодших розрядів адреси, а старші розряди залишаються без зміни. При виконанні такої команди досить передати по шині даних тільки один байт, тоді як для завантаження повного 16 розрядного адреси потрібно пересилання двох байт.
Після читання черговий команди вміст СК збільшується (інкрементіруется), щоб забезпечити перехід до адресою наступної команди. Якщо виконується виклик підпрограми або відбувається переривання, то адреса повернення (поточний стан СК) може бути збережений в стеку без виконання додаткових тактів для инкремента вмісту СК. У роботі з МК необхідно стежити, щоб значення СК не вийшло за межі пам'яті програм. Так як це може призвести до виконання невизначених команд і непередбачуваного результату.
Арифметико-логічний пристрій (АЛУ) процесора використовується для виконання математичних операцій у програмі. Це операції включають додавання, віднімання, логічне І, логічне АБО, зсув вмісту регістрів і установку вмісту регістра стану згідно з отриманими результатами. АЛУ не використовується при читанні або запису даних або команд, воно служить тільки для обробки даних.
АЛУ можна представити як апаратний блок, який обробляє два слова даних (операнди) і зберігає отриманий результат (див. мал. 1.4). Як вводяться операнди в АЛУ й куди надходить результат - залежить від конкретного типу МК. У цьому полягає одна з основних відмінностей між різними типами процесорів і системами команд. Деякі МК вибирають один операнд з регістра-акумулятора і зберігають результат також в акумуляторі. Інші МК дозволяють використовувати різні джерела операндів і місця розміщення результатів.

 

Рис. 1.4. Структура АЛУ.

 

АЛУ зазвичай працює тільки з цілими числами. Однак при виконанні віднімання виходять негативні числа, якщо що віднімається більше зменшуваного. Для представлення негативних чисел використовується додатковий код - «двійкове доповнення». Це необхідно враховувати при знайомстві з роботою АЛУ.
Замість віднімання одного числа з іншого, відбувається додавання від'ємного числа:
А - В = А + (-В),
де від'ємне значення (-В) видається в додатковому коді. Щоб отримати додатковий код негативного двійкового числа, необхідно інвертувати значення кожного біта, а потім додати одиницю:
- = (^0хff ) + 1, де ^ - операція «виключне або».
Складність АЛУ багато в чому визначає складність всього МК в цілому. Часто над створенням АЛУ працює група розробників, порівнянна за складом з тією, яка працює над іншою частиною мікропроцесора або мікроконтролера. Від того, як працює АЛУ, залежить функціонування процесора, що входить до складу МК, а значить і всього МК в цілому.

 

1.2.4. Підпрограми і функції

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

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

 

Переривання.

Переривання - це запуск спеціальної підпрограми (званої «обробником переривання» або «програмою обслуговування переривань»), який викликається сигналом апаратури. На час виконання цієї підпрограми реалізація поточної програми зупиняється(див. рис.1.5). Термін «запит на переривання» (interrupt request) використовується тому, що іноді програма відмовляється підтвердити переривання і виконати обробник переривання негайно.

 

Рис. 1.5. Виконання переривань.

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

  • Зберегти вміст регістрів контексту.
  • Скинути контролер переривань і устаткування, яке викликало запит.
  • Обробити дані.
  • Відновити вміст регістрів контексту.
  • Назад до перерваної програмі.

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

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

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

При обробці переривання вміст регістра стану зазвичай (але не завжди) автоматично зберігається разом з вмістом СК перед обробкою переривання. Це позбавляє від необхідності зберігати його в пам'яті програмними засобами за допомогою команди пересилання, а потім відновлювати при поверненні до вихідній програмі. Однак таке автоматичне збереження реалізується не у всіх типах МК.
Якщо вміст регістра стану зберігається перед початком обробки переривання, то по команді повернення проводиться його автоматичне оновлення. Якщо вміст інших регістрів змінюється при виконанні обслуговування переривання, то воно також має бути збережена в пам'яті до зміни і відновлено перед поверненням в основну програму.
«Вектор переривань» - це адреса, який завантажується в СК при переході до сценарію обробки переривання. Існує кілька типів векторів. Адреса, який завантажується в СК при запуску МК (RESET) називається «вектор скидання». Для різних переривань можуть бути різні вектора. Але іноді різних переривань призначається один вектор. Це не повинно викликати проблеми при роботі з МК, оскільки найчастіше він виконує одну єдину програму. У МК, де апаратна частина добре відома, не повинно виникнути жодних проблем при спільному використанні векторів переривань.

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

 

Таймери.

Таймери в мікропроцесорних системах використовуються не тільки для забезпечення заданої затримки, але і для вирішення набагато більш широкого кола завдань. Зазвичай для перемикання таймера використовують тактові імпульси процесора. Завантаживши в таймер початкове значення, можна відзначити певні інтервали часу, фіксуючи закінчення інтервалу з моменту переповнення таймера. Часто перед таймером включають попередній дільник тактової частоти, щоб мати можливість відраховувати більш довгі інтервали часу. Дільник забезпечує інкремент вмісту таймера після надходження певного числа тактових імпульсів.
Їх можна використовувати для точного формування часових інтервалів, підрахунку імпульсів на виходах МК, формування послідовність імпульсів, тактірованія прийомопередавача послідовного каналу зв'язку. Таймери/лічильники здатні виробляти запити переривань, перемикаючи ЦП на їх обслуговування по подіям і звільняючи його від необхідності періодичного опитування станів таймерів. Оскільки основне застосування МК знаходять в системах реального часу, таймери/лічильники є обов'язковим елементом. У деяких модифікаціях число таймерів досягає 32.

 

1.2.5. Ввід/вивід даних

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

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

Коли на шину необхідно вивести «0» або «1», то спочатку записують відповідне значення в тригер даних, а потім за допомогою тригера управління на виході встановлюється необхідний рівень потенціалу. Тригер управління дозволяє висновок даних на шину. У сучасних МК забезпечується індивідуальний доступ до триггерам даних і управління за допомогою адресної шини.
Зовнішній висновок може бути також використаний для подачі запиту переривання. Це зазвичай реалізується, коли висновок працює в режимі вводу.

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

 

Аналоговий компаратор.

Часто в МК вбудовується аналоговий компаратор напруг. Компаратор являє собою просту схему, яка, яка порівнює два напруги. Зазвичай один сигнал називають вхідним, а інший опорним.[7] На виході встановлюється «1», якщо вхідна напруга більше, ніж опорне (див. мал. 1.6). цей спосіб найбільш зручно використовувати в таких пристроях, як термостати, де необхідно контролювати досягнення певного рівня вимірюваної величини, яка визначається значенням вхідної напруги.
 

Рис. 1.6. Сигнали на вході і виході аналогового компаратора.

 

Програмування пристроїв

Програмування пристроїв, у тому числі і мікроконтролерів зазвичай відбувається наступним чином. В регістр програматора завантажується значення, яке необхідно розмістити за певною адресою, потім включається схема, яка пересилає вміст цього регістра по заданому адресою, проходить якийсь час очікування, поки завершиться процес програмування обраної комірки пам'яті і, нарешті, виконується перевірка, тобто перевіряється правильність записаного значення. Програмування всього пристрою може зайняти від декількох секунд до декількох хвилин в залежності від розміру пам'яті і алгоритму програмування.
Часто устаткування для програмування виявляється занадто дорогим, особливо для радіоаматорів і підприємств малого бізнесу. Але в деяких випадках для програмування потрібно досить просте і доступне обладнання. Приміром, деякі моделі PIC і мікроконтролерів AVR програмуються дуже легко. Існує також пристрої, які не вимагають устаткування для програмування, наприклад, МК Basic STAMP, або мають вбудований апаратно-програмний блок, що рятує від необхідності використання зовнішнього обладнання, крім джерела підвищеної напруги для програмування, як МК 68НС05.
пдуже важливий аспект, що стосується програмування пристроїв, полягає в тому, що може чи пристрій бути запрограмоване в системі. Це називається внутрішньосистемне програмування (ВСП) - від англійського In-System Programming (ISP). Якщо МК допускає можливість такого програмування, то це означає, що він може бути змонтований на плату з порожньою пам'яттю програм, яка потім може бути запрограмована без будь-якого впливу на інші компоненти схеми. Це може стати важливою обставиною при виборі МК. Використання ВСП позбавляє МК від необхідність купувати спеціальний программатор, дає можливість оновлювати програмне забезпечення без зміни розташованих на платі апаратних засобів і дозволяє виробникам створювати запас готових виробів, які можуть легко модифікуватися згідно з вступниками замовленнями.

 

Безпека пам'яті програм

Для багатьох додатків бажано захистити програмний код, записаний в МК. Щоб забезпечити таку можливість багато МК містять спеціальні засоби для запобігання зчитування що зберігаються в них програм. Часто така можливість реалізується шляхом встановлення певного значення конфігураційного біта в процесі програмування. Зазвичай значення цього біта можна змінити тільки в процесі перепрограмування вмісту пам'яті МК, наприклад при УФ стиранні вмісту EPROM.
пВстроенная захист не може запобігти всі можливості зчитування програмного коду. Таке зчитування можна зробити в багатьох лабораторіях, які виконують аналіз причин відмов мікросхем, причому за дуже короткий час. Щоб ускладнити і зробити операцію зчитування менш ефективною, деякі компанії зашифровують записані програми шляхом перемішування команд і включають спеціальні апаратні блоки, які перетворять перемішані дані в потік команд процесора. І все ж, установка біта захисту не може гарантувати абсолютну захист програмного коду завантаженого в МК.

Переглядів: 9218

Повернутися в зміст: Архітектура мікроконтролерів




Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн