Міністерство освіти і науки України Технікум Кіровоградського Національного Технічного Університету Методичний збірник для допомоги студентам у вивченні самостійних тем для самостійного опрацювання з предмету «Мікропроцесорні системи» спеціальність 5.091504 " Обслуговування комп’ютерних систем та мереж" Розробив викладач: Розглянуто на засіданні предметної комісії обслуговування комп’ютерних систем та мереж Протокол № 2 від 12.09.2007 р. Голова комісії Л.М. Приходько Кіровоград – 200 р В.В. Смоквина Тема: Базова структура 32-розрядної ПЕОМ на прикладі Compaq Deskpro. 1. Різноманітність структур моделей ПЕОМ/386. 2. Процесорна підсистема. 3. Функції КУШ. Незважаючи на різноманітність структур моделей ПЕОМ/386, архітектурно вони практично однакові: програмно сумісні, базуються на архітектурі процесора І386, використовують функціонально подібні ОС-MS DOS, мають у своєму складі практично однакові комплекти ВІС оточення: контролер переривання, контролер ПДП, таймер, задавальний генератор, паралельний і послідовний порти вводу/виводу і т. п. Специфіка визначається типами системних інтерфейсів, конкретними типами мікросхем оточення, типом оперативної пам'яті (швидкодія, способи кешування, об'єм), додатковою до базової периферією і т. п. Розглянемо особливості структури ПЕОМ-32 на прикладі Compaq Deskpro 386/16. Головною особливістю структури є системна шина, що складається з двох сегментів — центрального та периферійного. Сегменти зв'язані через конвертер-узгоджувач шин (КУШ), що виконує функцію узгодження 8/16-розрядної шини периферійних пристроїв, що працюють на тактовій частоті 8 МГц, з 32-розрядною локальною шиною (ЛШ) ядра ЕОМ, що працює на частоті 16 МГц. КУШ є програмне «прозорим» пристроєм. Системна плата ПЕОМ Compaq Deskpro-386/16 являє собою багатошарову друкарську плату з внутрішніми шарами розводки живлення, що призначається для встановлення основних компонентів ПЕОМ. Процесорна підсистема До складу цієї підсистеми входять: – центральний процесор; – один із співпроцесорів (і287-4/8 або і387-16); – допоміжні елементи оточення процесора. МП i386 синхронізується одним синхросигналом, який виробляється генератором 32 МГц. У процесорі частота вхідного сигналу ділиться на 2. Математичний співпроцесор призначений для виконання обчислення з числами у формі з плаваючою точкою. В архітектурі, що розглядається, можливе встановлення співпроцесора і287-4/8. Співпроцесор сприймається -2- процесором як зовнішній пристрій, для якого він здійснює вибір команд та даних, а також розміщує результати обчислень в пам'яті. Взаємозв'язок зі співпроцесором забезпечується швидкодіючою 32-розрядною локальною шиною. Конвертер-узгоджувач шин До складу КУШ входять: – конвертер шини даних; – буферні підсилювачі та регістр адреси; – блок керування локальною шиною, АТ-шиною та Х-шиною. КУШ виконує узгодження алгоритмів роботи, частот та форматів даних 32-розрядної ЛШ (робоча частота 16 МГц), 8/16-розрядної АТ-шини (8 МГц) та її 8-розрядного відгалуження (Х-шини), до якого підключена системна периферія. Функції КУШ: – виявлення факту звертання до системної периферії та пристрою АТшини; – синхронізація циклів ЛШ та АТ-шини, зокрема, — синхронізація обміну з пристроями, що працюють за принципом «запит-відповідь»; – ініціювання послідовності циклів АТ-шини для обміну інформацією між 8- та 16-розрядними пристроями, підключеними до АТ-шини та 32розрядної ЛШ; – взаємна комутація байтових тактів АТ-шини та ЛШ, запам'ятовування байтів та (або) слів на час перетворення подвійного слова. За допомогою блока керування КУШ здійснюється доступ мікропроцесора до системної периферії, яка містить елементи, що розширюють інтерфейсні можливості МП та ряд системних периферійних пристроїв, розташованих на системній платі, які входять до складу базової конфігурації: – контролер прямого доступу до пам'яті; – контролер переривань, що програмується; – контролер клавіатури; – контролер регенерації динамічної пам'яті; – таймери; – годинник реального часу (RTS); – системні порти вводу/виводу. Вказані пристрої підключаються до буферизованого відгалуження АТшини (Х-шини). Селекція конкретного пристрою здійснюється дешифратором -3- адреси системної периферії. Для адресації до пристрою вводу/виводу використовується 16 адресних ліній. Адреси пристроїв на системній платі від 00h до FFh, а на платах адаптерів від 100h до FFFh. Лінія адреси А31 містить ознаку адресації до портів вводу/виводу співпроцесора (адреси від 800000F8h до 800000FFh). Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Основні технічні характеристики системної плати 32-розрядної ПЕОМ 1. Продуктивність ПЕОМ з процесором і386. 2. Характеристики високошвидкісної локальної шини. 3. Обладнання системної плати. Основна обчислювальна продуктивність ПЕОМ забезпечується базовим процесором і386 (32-розрядним, з робочою тактовою частотою 16 МГц) та співпроцесором і387. На системній платі є: – розетка для підключення співпроцесора і287 (16-роз-рядний, тактова частота 4/8 МГц – настройка апаратна); – розетка для підключення співпроцесора і387 (32-роз-рядний, тактова частота 16 МГц). Характеристики високошвидкісної локальної шини визначають час вибірки кодів з пам'яті та включають: – тип протоколу – синхронний; – робоча частота – 16 МГц; – режим використання ЛШ процесором – монопольний; – адресний простір оперативної пам'яті – 16 Мбайт (використовується 24-розрядна адресна шина); – підтримує конвеєрний режим процесора та поза-процесорне звертання зі сторони АТ-шини; – забезпечує узгодження роботи модулів основної пам'яті різної швидкодії за рахунок введення допоміжних станів очікування мікропроцесора; – забезпечує можливість підключення одного модуля пам'яті з розмірами АТ-адаптера. Потужність, що споживається системною платою, складає 10 Вт (+5В; 2 А). Для підвищення ступеня ремонтопридатності та можливості модернізації найбільш відповідальні мікросхеми встановлюються в -4- перехідні колодки. Обладнання СП забезпечує: 7 каналів ПДП; 15 каналів маскованих переривань; 3 канали таймера; годинник реального часу з автономним джерелом живлення; підключення IBM-сумісної клавіатури. Рис. 1. Структура ПЕОМ Compaq Deskpro 386/16 Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Устрій системного контролера і82380 1. Багатофункціональні ВІС. 2. Склад контролера І82380. 3. Режими роботи контролера І82380. -5- Продуктивність обчислювальної системи на базі високошвидкісних процесорів значною мірою залежить від швидкісних характеристик оточення процесора. Підвищення продуктивності мікросхем оточення за рахунок підвищення тактової частоти обмежується значною територіальною розподільністю на системній платі. Значним кроком у розв'язанні цієї проблеми було розроблення багатофункціональних ВІС, на одному кристалі яких розміщують практично всі основні елементи оточення процесора. Такою мікросхемою є багатофункціональний контролер І82380. До складу цього пристрою входять: – восьмиканальний контролер ПДП; – логічні схеми системного скидання; – 20-ти рівневий програмований контролер переривання (функціональне розширення каскадно ввімкнених і82С59А); – чотириканальний 16-розрядний таймер; – програмований генератор зі станом очікування; – контролер регенерації динамічного ОЗП; – схеми арбітражу внутрішньої шини. Структурна схема багатофункціонального контролера наведена на рис. 2 Для забезпечення сумісності з існуючими програмними продуктами в структурі контролера є побайтно доступні регістри. Рис. 2 Структура контролера і82380 Рис. 2. Структурна схема багатофункціонального контролера Якщо внутрішнім логічним схемам необхідна деяка затримка, контролер автоматично вставить до циклу звертання до процесора необхідні -6- такти очікування. У структурі контролера передбачені елементи, що забезпечують як програмне, так і апаратне скидання МП і386. Контролер і82380 може працювати як у режимі ведучого пристрою, так і в підпорядкованому режимі. Оскільки після системного скидання контролер ПДП переходить у підпорядкований ж, то для системи він уявляється як пристрій вводу/виводу. У підпорядкованому режимі контролер відстежує стан мікропроцесора і відпрацьовує кожну команду у встановленому порядку. Виконуючи функцію керування ПДП, контролер слідкує за станом потоку адрес для пристрою, до якого здійснюється звертання, та добавляє необхідне число тактів очікування до циклу звертання. При виконанні операцій передачі з ПДП контролер працює в привілейованому режимі як ведучий пристрій на шині. Контролер і82380 підключається безпосередньо до локальної шини процесора і386, тому призначення його керуючих сигналів таке саме, як у МП. Контролер відстежує поточний стан МП як за його сигналами стану, так і за сигналами на своїх виводах. Для організації внутрішньої синхронізації елементів i82380 та циклів МП частота вхідного сигналу CLK2 як і в процесора ділиться на два. Контролер і82380 може керувати доступом до 8-розрядних периферійних пристроїв, що забезпечують сумісність з існуючими архітектурами систем та програмними продуктами. У підпорядкованому режимі і82380 контролює лінії стану та керування процесора, обробляючи логіку шини мікропроцесора та добавляючи необхідне число тактів очікування. У режимі ведучого робота контролера і82380 узгоджується з роботою процесора PC. Це значить, що для іншої частини системи та будь-якого підключеного периферійного пристрою механізм звертання залишається таким самим, як і в процесора. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Будова пристроїв які входять до і82380 1. Контролер ПДП. 2. Обмін даними. 3. Контролер регенерації динамічного ОЗП. -7- За допомогою контролера ПДП можна адресувати повний простір, що покривається 32-розрядними фізичними адресами, а також збільшувати та зменшувати адреси як операндів-джерел, так і операндів призначення. За допомогою внутрішнього допоміжного 32-розрядного регістра можна виконати складання та розбирання даних різної розрядності, а також організовувати обмін даними між пристроями, що мають різну ширину тракту даних. Під час роботи контролера і82380 на частоті 20 МГц і при передачі даних однакової розрядності може бути досягнута швидкість обміну між пам'яттю та пристроями вводу/виводу 25.6 Мбайт/с. У порядку обслуговування як програмних, так і апаратних запитів ПДП контролер може підтримувати обмін даними таких типів: – порт вводу/виводу – порт вводу/виводу; – пам'ять – пам'ять; – порт вводу/виводу – пам'ять; – пам'ять – порт вводу/виводу. Кожний з восьми каналів контролера ПДП функціонує незалежно та може бути запрограмований для роботи в будь-якому з допустимих режимів. Для кожного каналу програміст може вибирати дисципліну обслуговування з циклічними або фіксованими пріоритетами. Циклічний пріоритет передбачає розділення шини серед кількох периферійних пристроїв, тоді як дисципліна з фіксованими пріоритетами базується на визначених фіксованих параметрах, пов'язаних з апаратними та іншими особливостями. Канали контролера розділені на дві групи по чотири канали. Канали від нульового до третього і від четвертого до сьомого працюють так, ніби два окремі контролери ввімкнені за каскадною схемою. Така організація роботи дозволяє одній групі присвоювати фіксовані пріоритети, а іншій – циклічні, причому в різних комбінаціях. За замовчанням канали контролера мають фіксовані пріоритети. Програмований контролер переривань Функціонально контролер переривань у складі і82380 ідентичний до своїх попередніх моделей і8259А та і82С59А, за винятком програмування векторів переривань. У контролері і82380 об'єднані ресурси трьох контролерів типу і82С59А. Каскадуючи п'ятнадцать входів запитів переривань контролерів і82С59А, що є в розпорядженні програміста, можна організувати до 120 каналів запитів зовнішніх переривань. -8- У контролері переривань і82380 є більш широкі можливості з використання механізму векторів переривань, оскільки кожний вхід запиту може окремо програмуватися, це значить, що кожному запиту переривань може бути приписаний свій власний вектор переривання; крім того, системні програми за замовчанням можуть присвоїти контролеру переривань певний вектор. Цей вектор використовується в циклі підтвердження переривань, про які немає запиту, або переривань, викликаних помилковим запитом, з метою попередження системи про хибні переривання. За допомогою переривання система також інформується про те, що була здійснена спроба запрограмувати вектори контролера і82380 за методом контролера і82С59А. Ця особливість гарантує сумісність існуючих програмних продуктів з програмним забезпеченням, написаним для і82380. До інших вдосконалень контролера переривань і82380 відноситься – можливість каскадного підключення зовнішніх контролерів переривань, а також те, що квітирування встановлення зв'язку між ведучим та веденим пристроями винесено зі спеціалізованих каскадних ліній на шину даних. Програмовані інтервальні таймери За принципом функціонування всі таймери ідентичні своєму попереднику і82С54. Кожний з чотирьох таймерів може працювати в одному з шести режимів. Процесор обчислювальної системи може встановлювати та зчитувати поточний вміст лічильників таймера в будь-який момент часу незалежно від режиму роботи. У зв'язку з тим, що нульовий канал таймера використовується контролером переривань, цей канал не має виходу з контролера і82380. Канал 1 таймера використовується для задання періоду регенерації динамічного ОЗП. Канали 2 та 3 використовуються для різних системних цілей конкретної ПЕОМ. Контролер регенерації динамічного ОЗП У складі контролера і82380 передбачено контролер регенерації динамічного ОЗП. Задатчиком циклу регенерації служить перший канал таймера. За сигналом запиту контролер регенерації виставляє запит доступу до системної шини за допомогою сигналу HOLD. Цей запит має вищий пріоритет, а отже, він може переривати будь-який активний процес, що відбувається з використанням контролера ПДП. Така організація роботи дозволяє контролеру ПДП передавати великі блоки даних, не впливаючи на функції з регенерації пам'яті. Це досягається тим, що контролер регенерації динамічного ОЗП не -9- цілком захоплює керування шиною, а ніби «вклинюється» в цикли шини процесу ПДП. Призначення та принципи функціонування інших блоків контролера і82380 зрозумілі з їх назви. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Встановлення даних для читання і82385 1. Час встановлення даних для читання. 2. Якщо зчитувані дані відсутні в кеші. 3. Типовий мінімальний час встановлення даних. Для мікропроцесора i80386, що працює з тактовою частотою 16 або 20 МГц, час встановлення даних для читання дорівнює 10 нс. Приймачі-передавачі типу 74хх646 дозволяють пропускати дані під час циклів читання на системній шині. Отже, для даної операції повинна враховуватись затримка розповсюдження сигналу через 74хх646. Час виконання читання в системі без кеш-пам'яті, враховуючи час виконання підтвердження переривань та операцій вводу/виводу, дорівнює (мінімальний час встановлення даних для i8036) + (максимальна затримка передавання даних через 74хх646). Наприклад, якщо час затримки для 74хх646 дорівнює 9 нс, то шукане значення часу дорівнює 19 нс. Якщо зчитувані дані відсутні в кеші, то час їх встановлення зростає та залежить від характеристик статичного ОЗП, що застосовується в якості кеша. Тоді мінімальний час встановлення даних обчислюється таким чином: (максимальна затримка передачі даних через 74хх646) + (мінімальний час встановлення даних до завершення читання зі статичного ОЗП) + (мінімальна затримка сигналів 82385 CWEA# для розділеного кеш-банку А або CWEB# для розділеного кеш-банку В) + (тривалість одного періоду CLK2). Типовий мінімальний час встановлення даних дорівнює 36 не, якщо час затримки в 74хх646 складає 9 нс, час звертання до статичного ОЗП – 12 нс, затримка CWEA# при тактовій частоті 20 МГц – 10 нс, тривалість періоду CLK2 при тій самій тактовій частоті – 25 нс. Час встановлення даних може керуватися введенням додаткових тактів очікування в цикли читання даних при - 10 - їх відсутності в кеші або використанням більш швидкодіючих буферів даних та динамічних ОЗП головної пам'яті Питання для контролю вивченого матеріалу 1. Час встановлення даних для читання. 2. Що відбувається якщо зчитувані дані відсутні в кеші. 3. Типовий мінімальний час встановлення даних. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Локальний інтерфейс і82385 Питання: 1. Кеш-пам'ять контролера 82385. 2. Індикатор звертання до локальної шини. 3. Схема декодування. Мета даного розділу полягає в тому, щоб пояснити, як організувати кеш-пам'ять на базі статичних ОЗП по заданому типу конфігурації кеша та тактовій частоті. Порушується також питання декодування операцій доступу до не кешованої пам'яті та звертання до локальної шини мікропроцесора i80386. Кеш-пам'ять контролера 82385 об'ємом 32К може мати двовходову множинну асоціативну організацію або одновходову організацію з прямим відображенням. В конфігурації двовходового множинного асоціативного кеша визначені два банки по 4К подвійних слів. Для їх реалізації потрібно 16 схем статичного ОЗП ємністю 4Кх4. Одно-входовий кеш з прямим відображенням містить один банк ємністю 8К подвійних слів. У цьому випадку потрібно чотири статичні ОЗП ємністю 8Кх8. Для типових схем статичних ОЗП цикл звертання дорівнює 25, 35 або 45 нс, враховуючи час вибору кристала та вибірки адрес. В системах, що працюють з тактовою частотою 20 МГц, для одновходового кеша з прямим відображенням потрібні схеми з циклом, що дорівнює хоча б 35 нс. Для двовходового множинного асоціативного кеша в таких самих системах потрібні 25-нс схеми. В системах, що працюють з тактовою частотою 16 МГц, для обох типів кешів потрібні схеми пам'яті з циклом доступу, що дорівнює відповідно 45 та 35 нс. За сигналами на адресних лініях А2-А31 мікропроцесора i80386 та на лініях визначення типу циклу CW/ R# – індикатор операцій запису/читання, - 11 - D/C# – індикатор даних керування та М/ІО# – індикатор звертання до пам'яті/простору вводу/виводу) виконується декодування сигналів, що поступають на входи декодування локальних операцій контролера 82385 (LBA# – індикатор звертання до локальної шини, NCA# – індикатор адреси не кешованої пам'яті та ХІ6#). Оскільки контролер зчитує ці сигнали в кінці першого такту, коли сигнали стають доступними, час, що відводиться на вказане декодування, обмежений. Незалежно від того, з якою тактовою частотою працює система – 16 або 20 МГц, контролер 82385 має вікно 11 нс для виконання операції декодування ліній типу циклу. При цьому тільки 8 нс відводиться на декодування адресних сигналів, оскільки затримка розповсюдження адреси мікропроцесора i80386 більша від затримок сигналів типу циклу. Схема декодування може бути виконана на базі вентиля 74S64 з логікою ТА (АБО з інверсією), що забезпечує підключення до локальної шини мікропроцесора i80386 як пам'яті, так і простору вводу/виводу, а також, що підтримує локальний сигнал зупинка-відключення мікропроцесора i80386. Питання для контролю вивченого матеріалу 1Поясніть роботу кеш-пам'ять контролера 82385. 2. Індикатор звертання до локальної шини. 3. Схема декодування. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Програмування таймера і8254 Питання: 1. Програмований таймер. 2. Порти, що використовуються для програмування таймера. 3. Операції, що ініціюються сигналами на входах таймера. Таймер для роботи в системі повинен бути запрограмований. Порти, що використовуються для програмування таймера, наведені в табл. 16.1. Після ввімкнення живлення стан таймера невизначений. Режим роботи кожного лічильника визначається при його програмуванні. Кожний лічильник повинен бути запрограмований, перш ніж він буде використовуватись. Не використовувані лічильники не потребують програмування. При програмуванні лічильника спочатку записується керуюче слово, а далі константа рахунку. Формат керуючого слова зображено на рис. 3. - 12 - Запис керуючого слова відбувається при записі в порт 43h (А1, А0=11), а запис констант рахунку в канали 0, 1,2 – при записі в порти 40h, 41h, 42h (Al, A0 = 00, 01, 10 відповідно) при активних сигналах -CS та -WR (CS=0, WR =0). Процедура програмування таймера дуже гнучка. Необхідно запам'ятати два правила: 1) у кожний лічильник керуюче слово має бути записане перед завантаженням коефіцієнта рахунку; 2) лічильник повинен завантажуватись тією кількістю байтів значення рахунку, яка вказана в керуючому слові (молодший байт, старший байт). Таблиця 3.2 Порти, що використовуються для програмування таймера Адреса порту 040h 041h 042h 043h Функція Читання або запис рахунку для лічильника 0 (системний годинник) Читання або запис рахунку для лічильника 1 (запит регенерації) Читання або запис рахунку для лічильника 2 (тональний сигнал гучномовця) Запис керуючого слова, команд «читання на льоту» та «обернене читання» Рис. 3 Формат керуючого слова Так як CWR кожного каналу має свою адресу (SC1, SC0) та завантажуваний в CWR код зберігається до наступного програмування, то не - 13 - потрібно спеціальної послідовності програмування. Прийнятна будь-яка послідовність, що задовольняє наведені вище правила. Наприклад, щоб встановити інтервал генерації, необхідно виконати таку послідовність команд: mov al,54h out 43h,al ;3апис керуючого слова для каналу 1 mov al,OFh out 41h,al ;3апис значення інтервалу генерації (мкс) Нова константа рахунку може бути записана в лічильник у будь-який момент часу та повинна відповідати запрограмованому формату рахунку. Слід пам'ятати, що при записі констант рахунку вони надходять до CR, а безпосередньо в лічильник попадають по вхідному сигналу GATE. Якщо лічильник запрограмований для читання/запису двох байтів рахунку, програма завантаження не повинна передавати керування між записом першого та другого байтів іншій програмі, яка також записує дані в цей лічильник. У табл. 3.3 наведені операції, що виконуються при різних комбінаціях на входах CS, RD, WR, А0, А1 таймера. Таблиця 3.3 Операції, що ініціюються сигналами на входах таймера CS -RD -WR А1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 X X X 0 1 1 X АО Порт Операції 0 40 Запис у лічильник 0 1 41 Запис у лічильник 1 0 42 Запис у лічильник 2 1 43 Запис керуючого слова 0 40 1 41 Читання з лічильника 1 0 42 Читання з лічильника 2 1 43 X - Немає операцій X - Питання для контролю вивченого матеріалу 1. Призначення і робота програмованого таймера. 2. Порти, що використовуються для програмування таймера. 3. Операції, що ініціюються сигналами на входах таймера. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 14 - Тема: Засоби BIOS для роботи з таймером Питання: 1. Робота з таймером. 2. Організація програмної затримки. 3. Формування затримки. Для роботи з таймером (точніше, для роботи з каналом 0 таймера) BIOS має дві функції переривання INT 1Ah. Вони дозволяють прочитати поточний вміст лічильника та змінити його. Функція 00h призначена для читання вмісту лічильника таймера: На вході: На виході: AH = 00h СХ = старше слово лічильника; DX = молодше слово лічильника; AL = 0, якщо з моменту перезапуску таймера пройшло більше 24 годин. Змінити вміст лічильника таймера можна за допомогою функції 01h. На вході: AH = 0lh СХ = старше слово лічильника; DX = молодше слово лічильника; На виході: Не використовуються. Функцію читання таймера можна використовувати для організації програмної затримки. Оскільки робота таймера не залежить від продуктивності процесора, швидкодія системи не буде впливати на затримку, що формується. Але слід враховувати, що точність формування затримки визначається частотою оновлення лічильника таймера (18,2 Гц) та може виявитись недостатньою для деяких додатків. Питання для контролю вивченого матеріалу 1. Робота з таймером. 2. Зміст організації програмної затримки. 3. Формування затримки. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 15 - Тема: Можливі розв'язки BIOS та DOS Питання: 1. Переривання BIOS або DOS. 2. «Приховане» переривання. 3. Обробка переривання. Звичайно, модифікувати переривання BIOS та DOS непросто, оскільки BIOS розміщена в ПЗП, a DOS не забезпечується лістингами програм та обмежена розмірами відведеної для неї оперативної пам'яті. Але користувач може написати процедуру, яка передує та/або слідує за відповідним перериванням, і ця процедура може викликатись при виклику відповідного переривання BIOS або DOS. Наприклад, для вищерозгляненого випадку переривання INT09h Вам потрібно написати процедуру та вказати на неї вектором переривання з номером 09h. Оригінальне значення вектора переривання 09h тим часом переноситься в який-небудь невикористовуваний вектор. Нова процедура просто викликає «приховане» переривання, щоб повернутись до оригінального переривання 09h; тому коли поточна програма викликає переривання 09h, керування передається спочатку Вашій процедурі; далі вона повинна викликати оригінальне переривання 09h, яке по завершенні знову повинне повернути керування Вашій процедурі, а з неї Ви повернетесь у те місце програми, звідки надійшов виклик переривання 09h. Після того, як це зроблено, у новій процедурі може міститись будь-який код як до, так і після виклику «прихованого» переривання. Для реалізації вказаних дій необхідно: – створити нову процедуру, що викликає «приховане» переривання; – переписати (сховати) оригінальний вектор переривання 09h, наприклад під номером 60h; – змінити вектор 09h, щоб він вказував на нову процедуру; – завершити програму, залишаючи її резидентною. Питання для контролю вивченого матеріалу 1. Наведіть переривання BIOS або DOS. 2. «Приховане» переривання. 3. Обробка переривання. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 16 - Тема: Призначення та формати регістрів КМОН-пам'яті Питання: 1. Команди мікропроцесора OUT та IN. 2. Команди читання та запису. 3. Призначення регістрів КМОП-пам'яті. Для запису або читання даних з пам'яті пристрою МС146818, як будьякого пристрою вводу/виводу, використовуються команди мікропроцесора OUT та IN. Порт 70h ділиться між регістром маски переривання NMI та регістром адреси пам'яті конфігурації. Для того, щоб регістр маски NMI був недоступний, потрібно, щоб біт 7 регістра адреси годинника реального часу (RTC) був скинений. Для запису в пам'ять даних про конфігурацію системи використовуються такі команди: – OUT 70h, AL – визначає чарунку пам'яті, в яку будуть записуватись дані; 70h – номер порту; AL – регістр повинен містити адресу чарунки КМОНпам'яті; – OUT 71h, AL — передає дані для вибраної чарунки пам'яті; 71h — номер порту; AL — містить дані. Не слід користуватись командами виводу, що записані словами (наприклад, OUT 70h, AX), які завантажують адресу чарунки пам'яті й дані послідовно, оскільки МС146818 не володіє достатнім часом відновлення. Для читання вмісту чарунки пам'яті використовуються такі команди: – OUT 70h, AL, що визначає чарунку пам'яті, з якої будуть зчитуваться дані; 70h – номер порту в/в; AL повинен містити адресу чарунки пам'яті; – IN AL, 71h — для читання даних, що зберігаються в чарунці пам'яті, що визначена попередньою командою; дані записуються в регістр AL процесора. У табл. 1 наведена інформація, що зберігається в чарунках пам'яті годинника реального часу МС146818. - 17 - Таблиця 1 Призначення регістрів КМОН-пам'яті Регістр 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h, 16h 17h, 18h 19h lAh lBh-2Ch 2Dh 2Eh, 2Fh 30h, 31h 32h 33h 34h-3Eh 3Fh Функція Секунди поточного часу Секунди будильника Хвилини поточного часу Хвилини будильника Години поточного часу Години будильника День тижня Число Місяць Рік Регістр стану А Регістр стану В Регістр стану С Регістр стану D Діагностичний байт Байт коду скидання Тип драйвера НГМД Зарезервовано Тип драйвера НТМД Зарезервовано Інстальовані пристрої Розмір основної пам'яті Інстальована розширена пам"ять Тип драйвера С, якщо є додатковий драйвер Тип драйвера D, якщо є додатковий драйвер Зарезервовано Додаткові прапорці Значення контрольної суми Пам'ять більша 1 Мбайта Століття, частина дати та часу Системна інформація Зарезервовано Не використовується Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 18 - Тема: Прямий доступ до пам'яті в ПЕОМ 1. Передача даних між пристроями вводу/виводу і пам'яттю. 2. Перехоплення керування шиною. 3. Контролер прямого доступу до пам'яті. Передача даних між пристроями вводу/виводу і пам'яттю через процесор ПЕОМ (іх86) забезпечується використанням команд IN та OUT. При цьому кожне слово, що передається, зчитується в процесор у циклі шини вводу, а потім записується в пам'ять у циклі шини запису в пам'ять. При частоті синхронізації процесора 8 МГц швидкість може бути: (8 М тактів/с)*(2 байти/слово) / 4 такти/слово = 4 Мб/с. Для підвищення швидкості передачі необхідно передавати слово не за 2 цикли шини, а за 1. При цьому швидкість буде максимальною – 8 Мб/с. Для практичної реалізації поставленої задачі необхідний прямий канал до пам'яті, який не проходить через процесор. Тобто необхідно перехопити у процесора керування шиною. З цією метою процесор має вхід запиту шини HOLD (захоплення) та вихід підтвердження залиту шини сигнал HLDA (підтвердження захоплення). Сигнал HOLD формує пристрій, який претендує на керування шинами. При цьому процесор закінчує поточний цикл шини, припиняє керування шиною, переводить шини процесора у високоімпедансний стан (відключає їх від системної шини) та видає сигнал HLDA, який повідомляє пристрій, що запит на керування шиною прийнятий. Для повного керування шиною потрібний досить складний пристрій, який називається контролером прямого доступу до пам'яті (КПДП). Як правило, один контролер може обслуговувати кілька пристроїв. Наприклад, КПДП І8237А може обслуговувати 4 пристрої. Призначення КПДП – утворювати потік звертань до пам'яті. Пристрій вводу/виводу відповідає тільки за видачу своїх даних на шину даних (ПІД) та приймання даних з ШД по сигналах каналу. КПДП генерує потрібний потік звертань у процесі виконання канальної програми, яка зчитується з пам'яті. Контролер ПДП має кілька внутрішніх регістрів для ініціалізації передачі даних у режимі ПДП. Процесор завантажує в регістр покажчика команди початкову адресу канальної програми. Після цього програма сповіщає підключений пристрій вводу/виводу про початок передачі. КПДП перерве процесор, коли канальна програма закінчиться. - 19 - Таким чином, контролер ПДП є одним з важливих компонентів ПЕОМ: програмованим системним пристроєм, який забезпечує підтримку не тільки функцій DOS та BIOS, але і багатьох прикладних та системних програм у частині організації швидкодіючого способу доступу до пам'яті. ПДП-контролер обчислювальних систем PC AT реалізований на двох каскадно ввімкнених ВІС і8237А (багатофункціональний контролер прямого доступу), регістра старшої адреси ПДП та регістрів сторінок ПДП. Контролери забезпечують 7 каналів ПДП як по одному байту за цикл ПДП, так і по два байти за цикл, виходячи з можливостей архітектури процесора (двобайтової шини даних). Щоб зберегти наступність підсистеми ПДП в PC AT з аналогічною підсистемою в PC XT, каскадування «байтного» контролера ПДП з розподіленням каналів XT здійснюється через контролер, що забезпечує передачу даних словами (16-розрядні передачі). Ведений контролер передає запит прямого доступу у ведучий контролер, що формує сигнал запиту в арбітр прямого доступу. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Таблиця векторів переривань ПЕОМ 1. Таблиця векторів переривань. 2. Зміщення. 3. Логічна базова адреса сегмента. Для зв'язку початкової адреси програми оброблювача переривань з номером переривання застосовується таблиця векторів переривань, що займає перший кілобайт основної пам'яті (ОП) (логічні адреси [DS : SI] 0000:0000 – 0000:03FF). Таблиця складається з 256 елементів FAR – адрес оброблювачів переривань, кожний з яких займає в таблиці чотири байти. В першому слові елемента таблиці записується зміщення (вміст регістра IP – два байти), а в другому — логічна базова адреса сегмента, в якому зберігається програмаоброблювач переривань (вміст регістра CS – два байти). Наприклад, адреса оброблювача переривання з номером 00h міститься в таблиці векторів переривання за адресою 0000 : 0000, а переривання з номером 01h — 0000 : 0004 і т. п. Номери та призначення векторів переривання наведені в таблиці 1. - 20 - Таблиця 1 - Номери та призначення векторів переривання ПЕОМ Номер вектора 1 00h 0lh 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh Призначення векторів переривань 2 Помилка ділення. Викликається автоматично після виконання команд DIV або IDIV, якщо в результаті ділення відбувається переповнення. DOS звичайно при обробці цього переривання виводить повідомлення про помилку та зупиняє виконання програми Переривання покрокового режиму. Виробляється після виконання кожної машинної команди, якщо в слові прапорів є біт покрокового трасування TF=1. Застосовується для налагодження програм Апаратне немасковане переривання. Звичайно виробляється при помилці за паритетом в оперативній пам'яті та при запиті переривання від співпроцесора Переривання для трасування. Генерується при виконанні однобайтної команди CCh та звичайно застосовується налагоджувачем для встановлення точки переривання в програмі Переповнення. Генерується машинною командою INTO, якщо встановлений прапорець OF. Якщо прапорець не встановлений, то команда INTO виконується як NOP. Застосовується для обробки помилок або виконання арифметичних операцій Друк копії екрана. Генерується при натисканні на клавіатурі клавіші PrtScr. Застосовується для друку зразка екрана. Для процесора і286 генерується при виконанні машинної команди BOUND, якщо значення, що перевіряється, вийшло за межі заданого діапазону Невизначений код операції або довжина команди більша 10-ти байт ( для процесора і286 ) Особливий випадок відсутності співпроцесора IRQ0 – переривання інтервального таймера, виникає 18,2 рази в секунду IRQ1 – переривання від клавіатури. Генерується при натисканні та відтисканні клавіші. Застосовується для читання даних з клавіатури IRQ2 – застосовується для каскадування контролерів апаратних переривань у машинах IBM PC/AT IRQ3 – переривання асинхронного порту COM2 IRQ4 – переривання асинхронного порту СОМІ IRQ5 – переривання від контролера твердого диска для машин XT. У машинах IBM PC/AT зарезервовано IRQ6 – генерується контролером гнучкого диска після завершення операції читання/запису - 21 - 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch IDh lEh IFh 20h-5Fh 60h-67h 68h-6Fh 70h 71h 72h 73h 74h 75h 76h 77h 8h-7Fh 80h-F0h Flh-FFh IRQ7 – переривання принтера. Генерується принтером, коли він готовий до виконання чергової операції. Багато адаптерів принтерів не застосовують це переривання Обслуговування відеоадаптера Визначення конфігурації пристроїв у системі Визначення розміру оперативної пам'яті в системі Обслуговування дискової системи Послідовний ввід/вивід Розширений сервіс для АТ-комп'ютерів Обслуговування клавіатури Обслуговування принтера Запуск BASIC в ПЗП, якщо він є Завантаження операційної системи Обслуговування годинника Оброблювач переривань CTRLBreak Переривання виникає 18,2 рази за секунду, викликається програмне оброблювачем переривань таймера Адреса відеотаблиці для контролера відеоадаптера 6845 Покажчик на таблицю параметрів дискети Покажчик на графічну таблицю для символів з кодами ASCII 128–255 Використовується DOS або зарезервовано для DOS Переривання, зарезервовано для користувачів Не використовується IRQ8 – переривання від годинників реального часу IRQ9 – переривання від контролера EGA IRQ10 – зарезервовано IRQ11 – зарезервовано IRQ12 – зарезервовано IRQ13 – переривання від математичного співпроцесора IRQ14 – переривання від контролера НТМД IRQ15 – зарезервовано Не використовуються Використовується інтерпретатором BASIC Не використовуються Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 22 - Тема: Режим повного вкладення і8259А. 1. Режим фіксованих пріоритетів. 2. Структура пріоритетів. 3. Режим повного вкладення. Режим фіксованих пріоритетів підтримує багаторівневу структуру переривань, в якій усім восьми входам IRQ контролера призначається фіксований порядок пріоритетів від вищого до нижчого. В базовій конфігурації PC AT цей режим використовується як основний. Така структура пріоритетів встановлюється за замовчанням при ініціалізації. При цьому IRQ0 отримує вищий пріоритет, a IRQ7 нижчий. Але режим повного вкладення не обмежується тільки такою структурою задання пріоритетів. Після ініціалізації вищий пріоритет може бути присвоєний і іншим входам IRQ при збереженні багаторівневої структури переривань режиму повного вкладення. Коли по кількох входах IRQ приходять запити, схема пріоритетів вибирає з них найбільш пріоритетний згідно з встановленим статусом та формує сигнал INTR у мікропроцесор. Мікропроцесор, підтверджуючи запит на обслуговування переривання, отримує по шині X вектор переривання по пріоритетному запиту, а і8259А встанавлює відповідний розряд у регістрі ISR, щоб позначити переривання, що обслуговується. Цей розряд ISR залишається незмінним до надходження на і8259А команди закінчення переривання (ЕОІ). У режимі повного вкладення, поки встановлений розряд ISR, всі наступні запити з таким самим або нижчим пріоритетом не викликають вироблення сигналу INTR для мікропроцесора. Але запити вищого пріоритету можуть формувати запит на переривання для мікропроцесора. Переривання в цьому випадку підтверджуються тільки в тому випадку, якщо мікропроцесор перед цим виконав команду STI. Це пояснюється тим, що вивід запиту переривання на мікропроцесорі автоматично забороняється після підтвердження будь-якого переривання. На рис. 1 наведено взаємодію програм оброблювачів переривань з різними рівнями пріоритетів у режимі повного вкладення. - 23 - Рис. 1 Взаємодія програм-оброблювачів переривань з різними рівнями пріоритетів у режимі повного вкладення. Припустимо, що у випадку, зображеному на рис. 1, IRQ0 має вищий пріоритет, a IRQ7 – нижчий, і під час виконання основної програми надходить запит від IRQ3. Оскільки переривання дозволені (командою STI), мікропроцесор переходить до виконання програми оброблювача по IRQ3. Під час виконання цієї програми надходить запит від IRQ1. Оскільки, пріоритет IRQ1 вищий, ніж у IRQ3, контролер формує переривання. Але воно не підтверджується, так як мікропроцесор замаскував свій вхід INTR у відповідь на переривання по IRQ3 (IF=0). Запит на переривання по IRQ1 не підтвердиться, поки не буде виконана команда STI в оброблювачі переривань по IRQ3. Таким чином, програма оброблювача IRQ3 має «захищену» область, в якій не дозволені ніякі переривання (за винятком немаскованих). У сервісній програмі IRQ1 немає такої «захищеної» частини, оскільки її перша команда STI. Зазначимо, що в цьому прикладі запит по IRQ1 повинен залишатись збудженим до його підтвердження. Коли підтверджується переривання по IRQ3, встановлюється розряд 3 ISR. Коли підтверджується переривання по IRQ1, розряди 1 та 3 ISR виявляються встановленими (ні одна з програм оброблювачів не виконана). У цей час тільки IRQ0 може формувати переривання, так як це єдиний вхід з більш високим пріоритетом порівняно з тими, які вже обслуговуються. По закінченні програми оброблювача - 24 - переривання по IRQ1 програма повинна «повідомити» і8259А про завершення своєї роботи шляхом скидання розряду 1 в ISR. Це виконується за допомогою команди ЕОІ. Далі команда IRET у програмі оброблювача переривань по IRQ1 передає керування програмі оброблювача переривань по IRQ3. Тепер запити IRQO-IRQ2 можуть знову переривати програму оброблювача IRQ3. Якщо запитів на переривання більше не надходить, по команді ЕОІ скидається розряд 3 ISR та по команді IRET поновлюється виконання основної програми з місця її переривання. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Режим опитування джерел переривань і8259. 1. Режим опитування. 2. Ініціатор опитування. 3. Обробка переривань. Режим опитування потрібний, коли пристрої мають спільну програму оброблювача переривання, а також при кількості запитів більшій за 64. Ініціатором опитування є програма, що надсилає в контролер команду OCW3, за якою мікропроцесор блокує свій вхід INTR та підготовлює ланцюги в і8259А, необхідні для опитування. Далі в контролер подається команда читання (OUT 20h для MASTER або OUT A0h для SLAVE), за якою відпрацьовується функція, аналогічна послідовності INТА (по пріоритетному запиту встановлюється відповідний розряд ISR та скидається однойменний розряд IRR), і на шину X видається слово опитування переривань, структура якого наведена на рис. 1. Рис. 1. Структура слова опитування переривань За отриманою інформацією програма або перейде на програму оброблювача пріоритетного переривання або ліквідує сліди переривання, що обслуговується в контролері (скидання відповідного розряду ISR за командою - 25 - ЕОІ). При необхідності операція опитування може виконуватися до тих пір, поки розряд І (D7) не буде дорівнювати нулю. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Керування пріоритетами переривань і8259А. 1. Керування пріоритетами переривань. 2. Рівні пріоритету. 3. Статуси рівнів пріоритету. Для керування пріоритетами переривань в i8259А є багато команд і режимів. Всі їх можна запрограмувати, тобто можна змінити динамічно. Ці режими та команди забезпечують для користувача практично необмежені можливості в галузі прикладних програм, керованих за перериваннями. Отримуючи запити від зовнішніх пристроїв, контролер оцінює, який з них має найвищий рівень пріоритету. При цьому рівні пріоритету входів IRQ7IRQ0 заздалегідь задані та знаходяться завжди в строго визначеному співвідношенні, яке прийнято називати статусом рівневого пріоритету. Форма задання статусу рівнів пріоритету є пріоритетним кільцем, положення якого по відношенню до входів IRQ визначає їх рівні пріоритету. Вищий рівень пріоритету має вхід IRQ0 зі статусом 0 (вершиною пріоритетного кільця), а найнижчий – вхід IRQ7 зі статусом 7 (дном пріоритетного кільця). Таким чином, задавши положення дна, можна однозначно визначати рівень пріоритету кожного входу IRQ мікросхеми. Контролер має кілька програмних способів задання пріоритетного кільця, що застосовуються залежно від системних вимог. Таблиця 1. Статуси рівнів пріоритету Вхід мікросхеми Статус рівня пріоритету IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 76543210 07654321 10765432 21076543 3 21 076 54 43210765 54321076 65432107 - 26 - Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Автоматична ротація та рівні пріоритетів і8259А. 1. Автоматична ротація. 2. Методи реалізації автоматичної ротації. 3. Ротація в автоматичному режимі ЕОІ. Автоматична ротація пріоритетів використовується в тих випадках, коли перериваючі пристрої (наприклад, канали зв'язку) мають рівні пріоритети. Ідея полягає в тому, що коли який-небудь пристрій уже обслуговується, інші пристрої повинні отримати можливість обслуговування перед наступним обслуговуванням даного пристрою. Для цього обслуженому пристрою автоматично присвоюється нижчий пріоритет. Отже, в гіршому випадку, цьому пристрою доведеться чекати, поки будуть обслужені всі інші пристрої. Існує два методи реалізації автоматичної ротації: у сполученні зі звичайною ЕОІ (ротація за звичайною командою ЕОІ) та з АЕОІ (ротація в автоматичному режимі ЕОІ). У базовій конфігурації PC AT автоматична ротація пріоритетів не викбристовується. Коли використовується ротація за командою ЕОІ, молодший розряд в ISR скидається, як і при звичайній ЕОІ, а відповідному IRQ присвоюється нижчий пріоритет. Пріоритети інших IRQ зсуваються згідно з режимом повного вкладення. На рис. 1 наведено, як ротація за звичайною командою ЕОІ впливає на пріоритети переривань. Рис. 1 Вплив ротації на пріоритети переривань - 27 - Припустимо, що пріоритети IRQ0-IRQ7 розподілені від вищого пріоритету до нижчого. Обслуговуються переривання по IRQ6 та IRQ4, але жодне ще не завершено. Оскільки IRQ4 має вищий пріоритет, відповідна програма оброблювача обов'язково виконується. Під час виконання програми по IRQ4 здійснюється ротація за звичайною командою ЕОІ. При цьому скидається розряд 4 в ISR. Після цього IRQ4 отримує нижчий пріоритет, а вищий присвоюється IRQ5. У базовій конфігурації PC AT автоматична ротація за звичайною командою ЕОІ не використовується. Ротація в автоматичному режимі ЕОІ Цей випадок нагадує тільки що розглянену ротацію за звичайною командою ЕОІ. Основна його відмінність полягає в тому, що ротація пріоритетів виконується автоматично після другого імпульсу INTA підтвердження запиту переривання. Для входу в цей режим та виходу з нього передбачені відповідні команди: встановлення та скидання тригера ротації, по ЕОІ. Після цього, як і в звичайному автоматичному режимі ЕОІ, ніякі команди не потрібні. Але слід пам'ятати про основні умови використання автоматичного режиму ЕОІ будь-якої форми. Вказівка, наведена для автоматичного режиму ЕОІ, залишається в силі і для ротації в цьому режимі. У базовій конфігурації PC AT ротація в автоматичному режимі ЕОІ не використовується. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Класифікація програм оброблювачів переривання 1. Класифікація програм оброблювачів переривань. 2. Перехоплення переривання. 3. Оброблювачі переривань. За способом організації програми оброблювачів переривання можна класифікувати як два альтернативні типи: що заміщують та перехоплюють вектори переривання. До заміщуючих оброблювачів, наприклад, належить оброблювач INT 23h (Control/Break), який передбачає заміну існуючого вектора без його збереження та поновлення. - 28 - По-іншому реалізується механізм в оброблювачі, побудованому за принципом перехоплювання переривання з наступним його поверненням, при цьому оброблювач зберігає значення перехопленого оригінального вектора. Більшість макропрограм клавіатури належить до цього типу оброблювачів. Вони не заміщують вектор переривання INT 09h, а перехоплюють переривання та далі вже «вирішують», чи буде застосовуватись оригінальний оброблювач BIOS. У будь-якому випадку після виконання процедури обробки переривання керування буде передано тому оброблювачу, чий вектор був перехоплений. Більшість оброблювачів будуються саме за цим принципом. Практика показує, що при написанні оброблювачів переривання необхідно дотримуватись певних правил та прийомів організації програм. Практично в будь-якому оброблювачі можна виділити такі основні розділи: ініціалізація оброблювача, активізація оброблювача, обробка переривання та вихід із оброблювача. Щодо оброблювача переривання можна сказати, що це індивідуальна задача, на якій майже не відображаються вимоги, що накладаються системою. Цього не можна гарантувати відносно інших розділів та компонентів оброблювача. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Типи передач даних мікропроцесорної системи. 1. Обмін данними. 2. Види передачі даних. 3. Передача типу пам'ять-пам'ять. Підсистема ПДП може здійснювати обмін даними між пристроєм вводу/виводу та пам'яттю і між різними масивами самої пам'яті. При передачі даних із пристрою вводу/ виводу до пам'яті контролери ПДП та пристрої вводу/ виводу використовують сигнали DRQx і DAKx для встановлення зв'язку. Коли пристрою вводу/виводу потрібно передати байт або слово даних, він збуджує свою лінію DRQx. Після збудження контролером лінії DAKx та лінії IOR пристрій передає свої дані на шину даних для пам'яті. Коли пристрою вводу/виводу потрібний байт або слово даних з пам'яті, він збуджує свою лінію - 29 - DRQx. Після збудження контролером лінії DAKx та лінії IOW пристрій «забирає» дані пам'яті з шини даних. Передачі даних можуть здійснюватись у вигляді: – одиничної передачі (після кожного циклу передачі контролер звільняє шину процесору, але відразу ж починає перевірку сигналів запиту і, як тільки виявляє активний сигнал запиту, ініціює наступний цикл передачі); – блочної передачі (сигнал запиту вимагається тільки до моменту видавання контролером сигналу DAKx, після чого шина не звільняється аж до завершення передачі всього блока); – передачі за вимогою (передача йде безперервно до тих пір, поки активний сигнал запиту, стан якого перевіряється після кожного циклу передачі; як тільки пристрій не може продовжувати передачу, сигнал запиту скидається і контролер зупиняє роботу; цей тип передачі застосовується для обміну з повільними пристроями, які не дозволяють за своїми часовими характеристиками працювати з КПДП по типу блочної передачі). Передача типу пам'ять-пам'ять призначена для передачі блоків даних з одного адресного простору пам'яті в інший з мінімальними програмними та часовими витратами, але в PC AT не використовується. У даному режимі можуть працювати тільки нульовий та 1-й канали контролера. Ця передача ініціюється програмним встановленням DRQ для каналу 0. Адресу чарунки пам'яті-джерела даних задають в CAR0, а чарунки-приймача – у CAR1. Байт даних, зчитаний з пам'яті, заноситься в тимчасовий регістр (TR) і далі з TR зчитується в чарунку-приймач. Коли значення лічильника слів каналу 1 буде дорівнювати FFFFh, обслуговування закінчиться. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Будова годинника реального часу МС146818 1. Формувач базової частоти. 2. Джерела маскованих переривань. 3. Конфігурація дільника. Блок-схема годинника реального часу МС146818 наведена на рис. 1. - 30 - Рис. 1 Блок-схема годинника реального часу Формувач базової частоти у випадку підключення до нього виводів OSC1 та OSC2 кварцевого резонатора призначений для формування прямокутних імпульсів з частотою вхідного базового сигналу OSC1. Вихід формувача подається на виходи п'яти послідовних каскадів дільника частоти та повторювача базової частоти. Вихідна частота першого каскаду дільника в 4 рази менша від його вхідної частоти; коефіцієнт ділення не залежить від вхідної базової частоти. Всі інші каскади мають максимально можливий коефіцієнт ділення – 32, що при максимальній вхідній базовій частоті 4.194304 МГц дозволяє отримати на виході останнього каскаду потрібну частоту 1 Гц. Якщо вхідна базова частота менша за максимальну (1.048576 МГц або 32.768 КГц), то в другому каскаді дільника треба зменшити коефіцієнт ділення так, щоб вихідна частота останнього каскаду залишилась незмінною (1 Гц). Керування коефіцієнтом ділення, скиданням та режимом роботи дільника виконує блок керування дільника згідно зі станом розрядів 4-6 регістра А – трьох розрядів шини даних дільника DVO-DV2 (DiVider). Мікросхема МС146818 забезпечує три незалежні джерела маскованих переривань роботи процесора, що програмуються: переривання за показниками RTC з частотою від 1 разу за секунду до 1 разу в день, періодичні переривання з частотою від 1 разу за 0.5 секунди до 1 разу за 30.5 мкс та переривання по завершенню циклу корекції (обновлення). - 31 - Таблиця 3.7 Конфігурація дільника Базова опорна частота Стан розрядів Робочий режим регістра А Скидання дільника Обхід перших N розрядів дільника 4.194304 мГц 1.048576 мГц 32.768 кГц 6 0 0 0 5 0 0 1 4 0 1 0 Так Так Так – – – 0 2 7 Будь-яка 1 1 0 Ні Так – Будь-яка 1 1 1 Ні Так – Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 Тема: Функціональне призначення вхідних та вихідних сигналів МС146818. 1. Функціональне призначення компонентів годинника. 2. Мультиплексована двонаправлена шина «Адреса/дані». 3. Сигнали роботи. Розглянемо функціональне призначення компонентів годинника реального часу через опис їх вхідних та вихідних сигналів. Інтерфейсний блок служить для обміну інформацією внутрішніх блоків RTC із зовнішнім оточенням. Обмінюється з обчислювальною системою такими сигналами. AD0 – AD7 (Address/Data). Мультиплексована двонаправлена шина «Адреса/дані». По цій шині адреса видається в першій частині циклу шини, а дані – у другій. Годинник реального часу використовується в основному в режимі читання вмісту чарунок ОП, тому мультиплексування шини не збільшує час доступу – переключення шини ADx з прийомом адреси на видання даних відбувається під час внутрішнього циклу доступу до чарунок ОП. Фіксування в адресному регістрі-защіпці значень шини AD0 – AD7 в адресній фазі відбувається на падаючому фронті сигналу AS. Запис інформації в МС 146818 здійснюється за сигналом WR*, а читання – за сигналом DS. AS (Address Strobe). Високий рівень сигналу «Строб адреси» використовується для передавання по шині ADO-AD? адреси чарунки ОП - 32 - МС146818. Падаючий фронт використовується для фіксації адреси в адресному регістрі-защіпці, а також для фіксації стану входу DS. CKFS (Clock out Frequency Select). Вхідний сигнал вибору частоти на виході CKOUT. CKOUT (Clock OUT). Вихідний синхросигнал з частотою, що дорівнює або в чотири рази менша від базової опорної частоти. Може бути використаний для підключення до інших приймачів синхросигналів, дозволяючи таким чином виключити необхідність використання додаткового генератора (кварцового резонатора). Частота синхросигналу CKOUT визначається вхідною опорною частотою і станом сигналу CKFS: при високому рівні CKFS частота сигналів CKOUT та OSC1 співпадає, а при низькому частота CKOUT в чотири рази менша OSC1. CS* (Chip Select). Сигнал вибірки мікросхеми МС146818 повинен бути встановлений у низький (активний) рівень при будь-яких звертаннях до RTC. При високому рівні сигналу CS* всі входи адреси та даних (всередині МС146818), а також входи DS та R/W* переходять у стан високого опору (логічно відключаються від зовнішніх контактів), що зменшує споживану потужність. DS (Data Strobe). Вхідний сигнал «Строб даних» виконує функцію синхронізації при передачі даних. IRQ – (Interrupt ReQuest). Сигнал «Запит переривання» процесора одним із трьох автономних джерел переривання в RTC. Низький рівень на виході IRQ – виникає при співпаданні двох умов: встановлені один або кілька бітів стану регістра С, що відповідають джерелам переривання в RTC, та відповідні їм біти дозволу переривання в регістрі В. Скидання сигналу IRQ* (тобто встановлення високого рівня) звичайно відбувається при виконанні процедури читання регістра С, а також під дією сигналу RESET. MOT (MOTEL-MOTorola/intEL). Вхід сигналу настройки за типом мікропроцесора: для Intel-процесора під'єднується до рівня «землі» (0 В). OSC1, OSC2 (OSCillator). Два контакти для підключення зовнішнього джерела синхросигналів – зовнішнього генератора прямокутних імпульсів або кварцового резонатора на одну із трьох можливих фіксованих частот: 4.194304 МГц, 1.048576 МГц або 32.768 КГц. Вибраний варіант базової опорної частоти повинен бути вказаний в регістрі керування А. - 33 - Зовнішній генератор під'єднується до входу OSC1. Вхід OSC2 використовується тільки при паралельному способі підключення кварцового резонатора. PS (Power Sense). Вхідний сигнал сприйняття рівня напруги живлення. Використовується для керування станом біта VRT (Valid RAM and Time) у регістрі керування D-ознаки достовірності інформації в чарунках ОП. Низький рівень вхідного сигналу PS відповідає нульовому стану біта VRT, який означає, що достовірність інформації в чарунках ОП не гарантується. При вмиканні живлення апаратура повинна утримувати низький рівень на цьому вході до встановлення стабільного рівня напруги живлення. При високому рівні сигналу PS біт VRT може бути встановлений на 1 процедурою читання регістра D. RESET*. Низький рівень на цьому вході скидає відповідні прапорці в регістрах керування та переводить вихідний сигнал IRQ* у високий рівень. Стан чарунок пам'яті, відведений для збереження показників часу, календаря (10 байтів) та конфігурації системи (50 байтів), не залежить від стану входу RESET* (при скиданні не змінюється). При ввімкненні живлення апаратура повинна утримувати низький рівень на цьому вході до встановлення стабільного рівня напруги живлення. R/W – (Read/Write). Вхідний сигнал читання/запис. SQW (SQuare Wave). Вихід прямокутних імпульсів з частотою, що відповідає частоті одного із п'ятнадцяти відгалужень внутрішнього дільника частоти, що має 22 ступені. Частота вихідного сигналу SQW може бути запрограмована в регістрі А, а в регістрі В передбачене її програмне підключення (біт дозволу) до виходу SQW. Усі 64 регістри МС146818 доступні для читання та запису, крім: – регістрів стану С та D, доступних тільки для читання; – розряду 7 регістра стану, доступного тільки для читання; – старшого розряду другого байта, доступного тільки для читання; – чарунки 3Fh, яка не використовується. Для встановлення конфігурації системи та часу слід користуватись системною утилітою SETUP. Література Гуржій А.М., Коряк С.Ф., Самсонов В.В., Скляров О.Я. Архітектура, принципи функціонування та керування ресурсами IBM PC. Харків 2003 - 34 - Тема: Структура мікроконтролера 8XC196NP 1. Склад мікроконтролера 8XC196NP. 2. Структура мікроконтролера 8XC196NP. 3. Блок регістрів. Мікроконтролер 8XC196NP містить центральний процесор, блок регістрів ємністю 1 Кбайт, блок керування пам'яттю (БКП), який здійснює вибір команд із зовнішньої чи внутрішньої пам'яті, організовує 4-байтну чергу команд (ЧК) і забезпечує звернення до зовнішньої пам'яті даних. Внутрішня пам'ять команд наявна тільки в моделі 8XC196NP і реалізована у вигляді розміщеного на кристалі ПЗП ємністю 4 Кбайт. Мікроконтролер має 20 адресних ліній А0-А19 і може адресувати пам'ять ємністю до 1 Мбайт. Під час ініціалізації задається максимальна ємність пам'яті, що адресується (1 Мбайт чи 64 Кбайт). Ці режими мають відповідну назву – режим 1М чи режим 64К. Режим 64К обмежує ємність пам'яті, що адресується, 64 Кбайтами і забезпечує програмну ємність з більш ранніми моделями сімейства MCS-196. Передбачена можливість обміну 16-і 8розрядними даними. Мікроконтролер розміщується в 100-вивідному корпусі типу QFP чи SQFP. Мікроконтролер має чотири 8-розрядні порти Р1,...,Р4 для зв'язку із зовнішніми пристроями. Порт Р4 має виводи тільки від 4 молодших розрядів. Старші розряди Р4 зарезервовані для наступних моделей сімейства. Тому Р4 використовується як 4-розрядний порт. Розряди адресних ліній А19,...,А16, якщо вони не використовуються для адресації зовнішньої пам'яті, можуть бути застосовані для двостороннього обміну інформацією із зовнішніми пристроями. В цьому випадку до даних виводів може бути підключений 4-розрядний двонапрямлений порт EPORT, окремі виводи якого програмують на введення чи виведення інформації. Виводи порта Р1 можуть бути використані для виконання спеціальних функцій, зокрема для подачі тактових (T1CLK, T2CLK) і керуючих (T1DIR, T2DIR) сигналів для таймерів 1, 2, а також введення/виведення сигналів ЕРА3 – ЕРА0, які керують функціонуванням процесора подій (ПРП). Зовнішні запити на переривання надходять на входи EXTINTO і EXTINT1 порта Р2 та на два входи EXTINT2, EXTINT3 порта Р3. Ці запити разом із внутрішніми обробляються контролером переривань (КПеР) згідно з їх - 35 - пріоритетом. У структурі мікроконтролера є також спеціалізований блок обслуговування переривань – периферійний сервер (ПСР), який виконує спеціальні види обслуговування: пересилання окремих слів чи цілих блоків, формування імпульсних сигналів заданої частоти і тривалості на виводах ЕРА0,...,ЕРА3. Виводи порта Р2 можуть використовуватися також для послідовних введення (RXD) і виведення (TXD) даних через блок послідовного обміну (БПО), а також для обміну сигналами, які забезпечують захоплення магістралі іншими пристроями (HOLD, HOLDA, BREQ), і видачі синхроімпульсів (CLK OUT). Виводи порта РЗ використовуються для виведення сигналів дозволу вибірки CS0,...,CS5, які надходять з БКП і дають змогу мікроконтролеру звертатися до кількох типів зовнішньої пам'яті, які відрізняються ємністю, швидкодією, розрядністю, режимом звернення. Три виводи порта Р4 використовують як виходи ШІМ, що забезпечує формування послідовності імпульсів заданої частоти і тривалості. Блок регістрів містить 1К 8-розрядних регістрів, вміст яких може вибиратися у вигляді байта, 16- чи 32-розрядного слова. Блок поділений на молодший і старший регістрові файли, які містять відповідно 256 і 768 регістрів. Звернення до регістрів молодшого файла здійснюється за допомогою прямої адресації з відповідним адресним байтом команди. При цьому 232 регістри молодшого файла використовуються як регістри загального призначення (РЗП), а 24 регістри – як регістри спеціального призначення (РСП). Вони застосовуються для зберігання масок переривання, констант 0000Н і 0FFFFH та деякої службової інформації. Усі регістри старшого файла використовуються як РЗП. Звернення до них здійснюється за допомогою непрямої адресації чи шляхом перенесення групи регістрів (кадра) із старшого файла в адресний простір («вікно») молодшого файла. Література В. М. Локазюк „Мікропроцесори та мікроЕОМ у виробничих системах” Київ: Видавничій центр „Академія” 2002 Тема: Мікроконтролери сімейства MCS-251 1. Архітектура мікроконтролерів сімейства MCS-251. 2. Центральний процесор мікроконтролерів MCS-251. 3. Особливості архітектури мікроконтролерів MCS-251. - 36 - Архітектура цих мікроконтролерів є вдосконаленою архітектурою MCS-51. В її основу покладено систему команд попереднього сімейства і набір блоків вводу/виводу, зокрема три таймери-лічильники, послідовний порт, блок РСА і сторожовий таймер. Збільшення продуктивності досягається за рахунок введення нових команд, збільшення адресного простору, використання механізму конвеєризації в центральному процесорі, стиснення циклів обміну по магістралі. Центральний процесор мікроконтролерів MCS-251 побудований на основі конвеєра команд і регістрового файла. Це дає змогу виконувати декілька команд за один машинний такт, тоді як процесор мікроконтролера 8XC51FX виконує одну команду за шість тактів. Система команд процесора контролерів MCS-251 доповнена інструкціями, які оперують 16-і 32-розрядними операндами. Найважливішими особливостями архітектури мікроконтролерів MCS251 є: 1) конвеєр команд і регістровий файл; 2) розширений набір команд; 3) внутрішній ОЗП ємністю до 1 Кбайт; 4) стек до 64 Кбайт; 5) можливості порядкової вибірки команд, введення стану очікування на магістралі, формування 17-розрядної адреси; 6) внутрішня пам'ять з однократним записом розміром до 16 Кбайт; 7) три 16-розрядних таймери-лічильники; 8) програмований послідовний порт; 9) блок РСА з п'ятьма модулями порівняння-захоплення; 10) виділений сторожовий таймер. Мікроконтролери типу 8XC251SB побудовані на статичній схемотехніці, що дає їм можливість працювати з частотою синхронізації від 0 Гц. Перші мікроконтролери сімейства MCS-251 сумісні з мікроконтролерами 8XC51FX. Це дає змогу нарощувати продуктивність систем на основі MCS-51 простою заміною ВІС мікроконтролера в сокеті. Основу структури сімейства мікроконтролерів MCS-251 становить ядро (core). Воно визначає найважливіші параметри архітектури, зокрема набір команд, тактові частоти процесора, механізми конвеєризації та переривань. Ядро є спільною частиною для всіх мікроконтролерів цього сімейства. - 37 - Відмінність між окремими типами мікроконтролерів сімейства полягає в різному складі внутрішніх блоків інтерфейсу, ємності внутрішньої пам'яті програм, функціях окремих ліній вводу/виводу. Ядро архітектури MCS-251 містить центральний процесор, блок синхронізації, блок обробки переривань, інтерфейс внутрішньої магістралі та інтерфейс локальної шини, який обслуговує внутрішні блоки вводу/виводу. Крім ядра мікроконтролери містять внутрішні блоки вводу/виводу, інтерфейс магістралі та внутрішню пам'ять. Внутрішні блоки вводу/виводу призначені для виконання типових функцій інтерфейсу із зовнішніми пристроями. Вони містять сторожовий таймер, три таймери-лічильники, блок РСА та послідовний порт. Лінії вводу/виводу мікроконтролерів 8XC251SB об'єднані в чотири 8розрядних порти загального призначення. Кожна лінія має засувку. Апаратні драйвери виконують альтернативні функції, які залежать від режиму роботи і номера лінії. Ці Мікроконтролери мають маскований ПЗП ємністю 16 Кбайт, на кристалі міститься репрограмований ЗП тієї самої ємності. Великий розмір цих матриць дає можливість у багатьох випадках відмовитися від використання зовнішньої пам'яті програм. Література В. М. Локазюк „Мікропроцесори та мікроЕОМ у виробничих системах” Київ: Видавничій центр „Академія” 2002 Тема: Мікроконтролери сімейства MCS-96 1. Мікроконтролери сімейства MCS-96. 2. Представники гілок мікроконтролерів. 3. Моделі мікроконтролерів Сімейство цих 16-розрядних мікроконтролерів випускається фірмою Intel з 1984 р. Перші моделі (8X95, 96, 97, 98ВВН) виготовляли за nMOHтехнологією, а в 1986 р. розпочався випуск мікроконтролерів за kMOHтехнологією, яка домінує в їх виробництві й нині. Кількість моделей мікроконтролерів сімейства MCS-96 – понад 50. В цьому сімействі можна виділити три основні гілки kMOH мікроконтролерів, кожна з яких має свою оригінальну архітектуру. Представниками першої гілки є мікроконтролери 8XC196KB/KC/KD. Вони використовують прийом і видачу керуючих сигналів у реальному - 38 - масштабі часу за допомогою спеціалізованого блока швидкого вводу/виводу HSIO (High Speed Input/Output). До другої гілки належать мікроконтролери 8XC196KR/ /KT/KQ/JR/JQ/NP/NT/NU/CA/CB. У них для обробки керуючих сигналів у реальному масштабі часу використовується спеціальний процесор подій ЕРА (Event Processor Array). Третю гілку становлять мікроконтролери 8ХС196МС/ /MD/MH. Вони здебільшого ідентичні мікроконтролерам другої гілки, але містять додаткові блоки, що забезпечують генерацію трифазних імпульсних сигналів для керування електродвигунами. Такі спеціалізовані мікроконтролери орієнтовані на застосування в системах керування електроприводом. Моделі мікроконтролерів випускають переважно трьох модифікацій, які різняться реалізацією ПЗП, значенням цифри X. У першій модифікації (Х=0) немає ПЗП. Друга модифікація (Х=3) містить внутрішній ПЗП ємністю від 4 до 32 Кбайт. Програмується і записується ПЗП за допомогою фотошаблона в процесі виготовлення мікро-контролера. Третя модифікація (Х=7) містить внутрішню пам'ять, яка однократно програмується користувачем (ОТР ROM) за допомогою програмувача. Мікроконтролери мають внутрішній ПЗП ємністю до 56 Кбайт, внутрішній регістровій ОЗП даних ємністю до 1,5 Кбайт. Деякі моделі мають ще додатково внутрішній ОЗП команд ємністю до 512 байт. Загальна ємність пам'яті, що може адресуватися, становить 64 Кбайт або 1 Мбайт. Більшість моделей мають внутрішній 8- або 10-розрядний АЦП з аналоговими входами в кількості від 4 до 14. Всі мікроконтролери містять також по два 16-розрядних лічильники-таймери. Вони забезпечують обробку в реальному масштабі часу сигналів, що надходять на входи мікро-контролера, і формують необхідні вихідні сигнали за допомогою спеціалізованих блоків HSIO або процесорів подій ЕРА, які мають від 8 до 20 таких входів/виходів. До складу мікроконтролерів входять також 3 – 4 порти паралельного введення/виведення даних і 1 – 2 послідовних двонапрямлених порти обміну. Виготовляються мікроконтролери за kMOH-технологією, яка забезпечує їх функціонування з максимальною тактовою частотою від 16 до 50 МГц. Споживана потужність не перевищує 500 мВт на максимальній частоті. Мікроконтролери сімейства MCS-96 мають ідентичну архітектуру. їх відмінності зводяться до різного типу та ємності пам'яті й реалізації - 39 - периферійних пристроїв. Різні моделі контролерів використовують одне і те саме процесорне ядро і відповідно систему команд та способи адресації. Найперспективнішими на даний час вважають мікроконтролери 8XC196NP/NU. їх процесорне ядро передбачає використання користувачем ємності пам'яті, що адресується, 1 Мбайт, внутрішнього ПЗП до 4 Кбайт і набору периферійних пристроїв: таймерів, процесора подій, ШІМ, універсального послідовного порта. ЦІ моделі широко застосовуються завдяки своїй низькій вартості, досить широкому набору виконуваних функцій, які можуть доповнюватись відповідно до вимог користувачів шляхом підключення зовнішніх пристроїв. Модель 8XC196NU має порівняно з 8XC196NP удвічі вищу швидкодію за таких самих функціональних можливостей. Така швидкодія є максимальною для мікроконтролерів сімейства MCS-96. Література В. М. Локазюк „Мікропроцесори та мікроЕОМ у виробничих системах” Київ: Видавничій центр „Академія” 2002 Тема: Аналого-цифровий перетворювач. 1. Функціонування модуля АЦП 2. Режим роботи АЦП Ряд моделей мікроконтролерів сімейства, а саме AT90S/LS2333, AT90S/LS4433, AT90S/LS4434, AT90S/LS8535 і AT90C8534, має у своєму складі багатоканальний 10-розрядний АЦП послідовного наближення. Число каналів залежить від моделі і дорівнює 6 (AT90S/LS2333, AT90S/LS4433 і АТ90С8534) або 8 (AT90S/LS4434 і AT90S/LS8535). Як входи модуля АЦП у моделях AT90S/LS2333 і AT90S/LS4433 використовуються виводи порту C, а в моделях AT90S/LS4434 і AT90S/LS8535 - виводи порту А. Входи АЦП у мікроконтролері АТ90С8534 узагалі є єдиними вхідними контактами пристрою, якщо не вважати двох входів зовнішніх переривань. Для живлення модуля АЦП у мікроконтролері передбачені 2 виводи: AVCC (напруга живлення) і AGND (аналогова "земля"). Напруга на виводу AVCC не повинне відрізнятися від напруги живлення мікроконтролера більше чим на +0.3 В, а аналогова "земля" з'єднана з цифровий в одній крапці. Усі моделі, крім АТ90С8534, також мають вивід AREF для підключення до АЦП зовнішнього джерела опорної напруги. Напруга, подавана на цей вивід, повинне знаходитися в діапазоні O...FCC. АЦП усіх моделей можуть працювати в двох режимах: o режим одиночного перетворення: у цьому режимі запуск кожного перетворення ініціюється користувачем; - 40 - o режим безперервного перетворення: у цьому режимі запуск перетворень виконується безупинно через визначені інтервали часу. Функціонування модуля АЦП Структурна схема модуля АЦП приведена на Рис. 1. Зверніть увагу, що джерело опорної напруги, показаний на схемі, мається тільки в моделях AT90S/LS2333 і AT90S/LS4433. Рис. 1. Структурна схема модуля АЦП Керування модулем АЦП і контроль його стану здійснюється за допомогою регістра ADCSR, розташованого за адресою $06 ($26). Формат цього регістра приведений на Рис.2. Рис. 2. Формат регістра ADCSR - 41 - Перед початком використання АЦП потрібно дозволити його роботу. Для цього необхідно записати лог. "1" у розряд ADEN регістра ADCSR, а для забоРЗПи відповідно лог. "0". Причому якщо АЦП буде заблоковано під час циклу перетворення, то перетворення довершене не буде (у регістрі даних АЦП залишиться результат попереднього перетворення). Режим роботи АЦП Режим роботи АЦП визначається станом розряду ADFR. Якщо він встановлений у "1", АЦП працює в режимі безперервного перетворення. У цьому режимі запуск кожного наступного перетворення здійснюється автоматично після закінчення поточного. Якщо ж розряд ADFR скинутий у "0", АЦП працює в режимі одиночного перетворення і запуск кожного перетворення здійснюється по команді користувача. Запуск перетворення здійснюється установкою в "1" розряду ADSC регістра ADCSR, а сам цикл перетворення починається по першому наростаючому фРЗПті тактового сигналу після установки цього розряду. Тривалість циклу складає 13 тактів; вибірка і запам'ятовування вхідного сигналу здійснюється протягом перших 1.5 такту. Через 13 тактів перетворення завершується, розряд ADSC апаратно скидається в "0" (у режимі одиночного перетворення), і результат перетворення зберігається в регістрі даних АЦП. Одночасно встановлюється прапор переривання ADІ регістра ADCSR і генерується запит на переривання. Як і прапори інших переривань, прапор ADІ скидається апаратно при запуску підпрограми обробки переривання від АЦП або програмно - записом у нього лог. "1". Дозвіл переривання здійснюється установкою в "1" розряду ADІ регістра ADCSR (зрозуміло, прапор І регістра SREG також повинний бути встановлений у "1"). Якщо АЦП працює в режимі безперервного перетворення, новий цикл почнеться відразу ж після запису результату. У режимі одиночного перетворення нове перетворення може бути запущене відразу ж після скидання розряду ADSC (до збереження результату поточного перетворення). Однак реально цикл перетворення почнеться не раніше чим через один такт після закінчення поточного перетворення. При написанні програм необхідно враховувати одну особливість: для першого послу включення АЦП перетворення потрібно на 12 тактів більше, ніж для всіх наступних. Це зв'язано з тим, що при запуску першого перетворення спочатку виконується одне "неодружене" перетворення, инициализирующее АЦП. Розряд ADSC у цьому випадку скидається тільки після закінчення робочого перетворення. Таким чином, тривалість перетворення залежить від режиму роботи АЦП і від порядкового номера перетворення Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Система команд мікроконтролерів AVR. 1. Операнди 2. Типи команд 3. Команди логічних операцій - 42 - 4. 5. 6. 7. 8. Команди арифметичних операцій і команди зрушення Команди операцій з бітами Команди пересилання даних Команди передачі керування Команди керування системою Мікроконтролери AVR сімейства Classіc є мікроконтролерами з RІSCархітектурою. Основною перевагою цієї архітектури є збільшення швидкодії за рахунок скорочення кількості операцій обміну з пам'яттю програм. Відповідно до цього принципу в мікроконтролерах AVR практично всі команди займають одну комірку пам'яті. Виключення складають команди, у яких одним з операндів є 16-розрядна адреса програм. Причому такий результат досягнуть не за рахунок скорочення кількості команд процесора, а за рахунок збільшення розрядності пам'яті програм до 16. Більшість команд виконується за один машинний цикл. Операнди Програма для будь-якого мікроконтролера являє собою послідовність команд, записаних у пам'яті програм. Більшість команд при виконанні змінюють вміст одного або декількох регістрів загального призначення, регістрів вводу/виводу або осередків ОЗП. Для звертання до різних областей адресного простору пам'яті даних використовуються різні команди, що реалізують, у свою чергу, різні способи адресації. Доступ до регістрів вводу/виводу здійснюється по їхніх адресах, що є операндами команди. Разом з тим при написанні асемблерних програм набагато зручніше звертатися до регістрів, використовуючи замість числових значень адрес їх стандартні символічні імена, прийняті у фірмовій документації. Щоб задати відповідність цих імен реальним адресам, необхідно підключити на початку програми файл визначення адрес регістрів вводу/виводу. Такий підхід дозволяє полегшити перенос програмного забезпечення з одного типу кристала на іншій. Ці файли (для кожної моделі мікроконтролерів сімейства) вільно поширюються фірмою "Atmel" разом з документацією на мікроконтролери. Для РЗП, що входять до складу індексних регістрів, у цих файлах визначаються також додаткові символічні імена. Таблиця 1. Додаткові символічні імена індексних регістрів Регістр Символічне ім’я R26 XL R27 ХН R28 YL R29 YH R30 ZL R31 ZH Примітка: Для AT90S1200 визначені тільки два регістри покажчика: R30 - ZL і R31 - ZH. Як уже було згадано, у мікроконтролерах сімейства пам'ять програм є 16розрядною. Відповідно більшість команд описується 16-розрядним словом, що - 43 - називається також кодом операції (КІП). Код операції - це число, розташоване в пам'яті програм і визначальна дія, який необхідно зробити між джерелом і приймачем. Ряд команд, у яких один з операндів є 16-розрядною адресою, займає двох комірок пам'яті програм. Відповідно код операції таких команд є 4байтным числом. У ряді випадків значення операнда-джерела може утримуватися безпосередньо в коді операції, а не в регістрі. Це відбувається в тому випадку, коли операндом-джерелом є безпосереднє значення (константа). Використання констант дозволяє підвищити удобочитаемость програми, а також спростити її налагодження і подальший розвиток. У згаданих файлах, що включаються, описано кілька констант, що можуть бути корисні при написанні програм: RAMEND - значення верхньої адреси внутрішнього ОЗП (для AT90S1200 ця константа не визначена); XRAMEND - значення верхньої адреси зовнішнього ОЗП (для всіх моделей, окрім AT90S4414 і AT90S8515, ця константа дорівнює нулеві); E2END - значення верхньої адреси EEPROM; FLASHEND - значення верхньої адреси пам'яті програм. Типи команд Усі команди мікроконтролерів AVR сімейства Classіc можна розбити на кілька груп: o команди логічних операцій; o команди арифметичних операцій і команди зрушення; o команди операцій з бітами; o команди пересилання даних; o команди передачі керування; o команди керування системою. Команди логічних операцій Ці команди дозволяють виконувати стандартні логічні операції над байтами, такі як "логічне множення" (И), "логічне додавання" (АБО), операцію " щовиключає АБО", а також обчислення зворотного і додаткового кодів числа. K цій групі можна віднести також команди очищення/установки регістрів і команду перестановки тетрад. Всі операції виробляються над регістрами загального призначення, результат зберігається в одному з РЗП. Усі логічні операції виконуються за один машинний цикл. Команди арифметичних операцій і команди зрушення До даної групи відносяться команди, що виконують такі базові операції, як додавання, вирахування, зрушення (вправо і вліво), інкремент і декремент. Всі операції виробляються тільки над регістрами загального призначення. При цьому мікроконтролери AVR дозволяють легко оперувати як знаковими, так і беззнаковими числами, а також працювати з числами, представленими в додатковому коді. Усі команди розглянутої групи виконуються за один машинний цикл, за винятком команд, що оперують двохбайтовими значеннями, що виконуються за два цикли. - 44 - Команди операцій з бітами До даної групи відносяться команди, що виконують установку або скидання заданого розряду РЗП або РВВ. Причому для зміни стану розрядів регістра стану SREG маються також додаткові команди (точніше, еквівалентні мнемонічні позначення загальних команд), тому що перевірка стану розрядів саме цього регістра виробляється найчастіше . Умовно до цієї групи можна віднести також дві команди передачі керування типу "перевірка/пропуск", що пропускають наступну команду в залежності від стану розряду РЗП або РВВ. Усі задіяні розряди РВВ мають свої символічні імена. Визначення цих імен описані в тім файлі, що же включається, що і визначення символічних імен адрес регістрів. Таким чином, після включення в програму зазначеного файлу в командах замість числових значень номерів розрядів можна буде вказувати їхні символічні імена. Варто пам'ятати, що в командах CBR і SBR операндом є бітова маска, а не номер розряду. Для одержання бітової маски з номера розряду варто скористатися асемблернм оператором "зрушення вліво" (<<), як показано в наступному прикладі: sbr r16,(1<<SE)+(1<<SM) out MCUCR,r16 ; Установити прапори SE і SM ; регістра MCUCR Варто звернути увагу, що пріоритет оператора "+" вище, ніж оператора "<<", для одержання необхідного результату доданки укладені в дужки. Усім командам даної групи потрібно один машинний цикл для виконання, за винятком випадків, коли в результаті перевірки відбувається пропуск команди. У цьому випадку команда виконується за два або три машинних цикли в залежності від команди, що пропускається. Команди пересилання даних Команди цієї групи призначені для пересилання вмісту осередків, що знаходяться в адресному просторі пам'яті даних. Поділ адресного простору на три частини (РЗП, РВВ, ОЗП) визначило розмаїтість команд даної групи. Пересилання даних, виконуване командами групи, може вироблятися в наступних напрямках: o РЗП <=> РЗП; o РЗП <=> РВВ; o РЗП <=> пам'ять даних (3 види адресації). Також до даної групи можна віднести стекові команди PUSH і POP (відсутні в AT90S1200), що дозволяють зберігати в стеці і відновлювати зі стека вміст РЗП. На виконання команд даної групи потрібно від одного до трьох машинних циклів у залежності від команди. Команди передачі керування У цю групу входять команди переходу, виклику підпрограм і повернення з них і команди типу "перевірка/пропуск", що пропускають наступну за ними - 45 - команду при виконанні деякої умови. Також до цієї групи відносяться команди порівняння, що формують прапори регістра SREG і призначені, як правило, для роботи разом з командами умовного переходу. У системі команд мікроконтролерів сімейства маються команди як безумовного, так і умовного переходів. Команди непрямого (ІJMP) і відносного (RJMP) безумовного переходу є найпростішими в цій групі. Їхня функція полягає тільки в записі нової адреси в лічильник команд. Команди умовного переходу також змінюють уміст лічильника команд, однак ця зміна відбувається тільки при виконанні деякої умови або, точніше, при визначеному стані різних прапорів регістра SREG. Усі команди умовного переходу можна розбити на двох підгруп. Перша підгрупа - команди умовного переходу загального призначення. У цю підгрупу входять дві команди BRBS s,k і BRBC s,k, у яких явно задається номер тестируемого прапора регістра SREG. Відповідно перехід здійснюється при SREG.s = 0 (BRBC) або SREG.s = 1 (BRBS). Іншу підгрупу складають 18 спеціалізованих команд, кожна з яких виконує перехід по якій-небудь конкретній умові ("дорівнює", "більше або дорівнює", "був перенос" і т.п.). Причому одні команди використовуються після порівняння беззнакових чисел, інші - після порівняння чисел зі знаком. Можливі умови, що перевіряються, а також відповідні їм команди умовного переходу приведені в табл. 2. Таблиця 2. Зведена таблиця команд умовного переходу Табл ЛогічнаСводнаяКоманда таблица команд условного перехода Перевірка Зворотна Логич. ица 3.2 умова перевірка условие Rd>Rr Z«(N®V) = 0 BRLT* Rd = Rr Z + (N®V) = 1(N®V) = 1 Rd = Rr (N®V) = 0 BRGE Rd<Rr Rd = Rr Z=1 BREQ Rd*Rr z=0 Rd = Rr Z + (N®V) = BRGE* Rd>Rr Z«(N®V) = 1(N®V) = 1 0(N®V) = 0 Rd<Rr BRLT Rd = Rr Rd>Rr c+Z=0 BRLO* Rd = Rr C+Z=1 Rd = Rr c=0 BRHS/BRC Rd<Rr C=1 C Rd = Rr Z=1 BREQ Rd*Rr z=0 Rd = Rr C = Z=1 BRSH* Rd>Rr c=Z=0 Rd<Rr C=1 BRLO/BRC Rd = Rr c=0 S «Перенос» C=1 BRCS «Нема c=0 переносу» Команда Tип даних BRGE* Зі знаком BRLT Зі знаком BRNE Зі знаком BRLT* Зі знаком BRGE Зі знаком BRSH* Без знака BRLO/BRC Без знака S BRNE Без знака BRLO* Без знака BRSH/BRC Без знака C BRCC - N=1 BRMI «Більше нуля» N=0 BRPL - «Переповне- V=1 ння» BRVS «Нема переповнення» V=0 BRVC - «Нуль» BREQ «Не нуль» z=0 BRNE - «Менше нуля» Z=1 Команди, зазначені в табл. 1, є усього лише еквівалентними мнемонічними позначеннями команд BRBS s, k і BRBC s, k з визначеними значеннями операнда s. Kоманда BREQ k має, наприклад, такий же код - 46 - операції, що і команда BRBS 1, k, а команда BRGE k - такий же, що і BRBC 4 , k. Команди виклику підпрограми (ІCALL, RCALL) працюють практично також, як і команди безумовного переходу. Відмінність полягає в тім, що перед тим як виконати перехід, значення лічильника команд зберігається в стеці. Команди керування системою У цю групу входять всього 3 команди: NOP - порожня команда; SLEEP - переклад мікроконтролера в режим зниженого енергоспоживання; WDR - скидання сторожового таймера Kоманды NOP і WDR виконуються за один машинний цикл, а команда SLEEP за чотири машинних цикли. Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Універсальний асинхронний приймач/передавач. 1. Керування роботою UART 2. Передача даних 3. Прийом даних Усі мікроконтролери сімейства Classіc, за винятком моделей AT90S1200, AT90S/LS2323, AT90S/LS2343 і АТ90С8534, мають у своєму складі модуль повнодуплексного універсального асинхронного приймача/передавача (UART). Через нього здійснюється прийом і передача інформації, представленої послідовним кодом, тому модуль UART часто називають також послідовним портом. За допомогою цього модуля мікроконтролер може обмінюватися даними з різними зовнішніми пристроями. Швидкість передачі даних може варіюватися в широких межах, причому високі швидкості передачі можуть бути досягнуті навіть при відносно низькій тактовій частоті мікроконтролера. Відомо, що при передачі даних можуть відбуватися різні збої. Модуль UART, реалізований у мікроконтролерах сімейства Classіc, може виявляти і сигналізувати про наступні позаштатні ситуації: o переповнення; o помилка кадрування; o невірний старт-біт. Для зменшення імовірності збоїв у модулі реалізована така корисна функція, як фільтрація перешкод. Для взаємодії з програмою в модулі передбачені 3 роздільні переривання, запит на які генерується при настанні наступних подій: "передача довершена", "регістр даних передавача порожній" і "прийом довершений". - 47 - Висновки мікроконтролера, використовувані модулем UART, є лініями порту D. Як вхід приймача (RXD) використовується вивід PD0, а як вихід передавача (TXD) - вивід PD1. Керування роботою UART Керування роботою приймача/передавача здійснюється за допомогою регістра керування UCR (у моделях AT90S/LS233 і AT90S/LS4433 -UCSRB), розташованого за адресою $0А ($2А). А поточний стан приймача/передавача визначається за допомогою регістра стану USR (у моделях AT90S/LS233 і AT90S/LS4433 - UCSRA), розташованого за адресою $0A ($2A). Формат регістра UCR (UCSRB) приведений на мал. 1, а регістра USR (UCSRA) - на мал. 2. Значення розрядів цих регістрів описане в табл. 1 і 2 відповідно. Невикористовувані розряди регістрів доступні тільки для читання і містять "0". Рис. 1. Формат регістра UCR (UCSRB) Таблиця 1. Опис регістра UCR (UCSRB) Разряд Название 7 RXCIE 6 TXCIE 5 UDRIE 4 RXEN 3 TXEN 2 CHR9 1 RXB8 0 ТХВ8 Описание Разрешение прерывания по завершении приема Если данный разряд установлен в «1», то при установке флага RXC в регистре USR (UCSRA) происходит запуск подпрограммы обработки прерывания «прием завершен» (если прерывания разрешены) Разрешение прерывания по завершении передачи Если данный разряд установлен в «1», то при установке флага TXC в регистре USR (UCSRA) происходит запуск подпрограммы обработки прерывания «передача завершена» (если прерывания разрешены) Разрешение прерывания при очистке регистра данных UART Если данный разряд установлен в «1», то при установке флага UDRE в регистре USR (UCSRA) происходит запуск подпрограммы обработки прерывания «регистр данных пуст» (если прерывания разрешены) Разрешение приема При установке данного разряда в «1» разрешается работа приемника UART. Если приемник выключен, флаги ТХС, OR и FE не могут быть установлены. При сбросе разряда RXEN эти флаги не сбрасываются Разрешение передачи При установке данного разряда в «1» разрешается работа передатчика UART. Формат посылок Если разряд установлен в «1», производится передача и прием 9разрядных данных. 8-й разряд принимаемых данных Если флаг CHR9 установлен в «1», этот разряд содержит значение старшего разряда принятого слова 8-й разряд передаваемых данных Если флаг CHR9 установлен в «1», содержимое этого разряда передается как старший разряд слова - 48 - Рис. 2. Формат регістра USR (UCSRA) Таблиця 2. Опис регістра USR (UCSRA) 7 RXC 6 ТхС 5 UDRE 4 FE 3 OR 2,1 - 0 МРСМ Флаг завершения приема Данный флаг устанавливается при пересылке принятого слова из зсуваючого регистра приемника в регистр данных UDR (установка происходит даже при обнаружении ошибок кадрирования). Если разряд RXCIE регистра UCR (UCSRB) установлен, то при установке флагазавершения RXC генерируется запрос на прерывание «прием завершен». Флаг передачи Сбрасывается флаг аппа-ратно,впри регистра всех UDR.разрядов Данный флаг устанавливается «1» чтении после передачи Соответственно, если прерывание используется, этот регистр при слова (включая стоп-бит) из зсуваючого регистра передатчика, обязательно быть прочитан обработчике прерывания условии, чтодолжен в регистр данных UDRвне было загружено новое значение. Регистр данных пуст Данный флаг устанавливается в «1» после пересылки байта из регистра данных UDR в зсуваючий регистр передатчика. Установка этого флага означает, что передатчик готов к получению нового значения для передачи. Флаг ошибки кадрирования Данный флаг устанавливается в «1», при обнаружении ошибки кадрирования, т.е. если стоп-бит принятого слова равен «0». Флаг сбрасывается при приеме стоп-бита, равного «1» Флаг переполнения Данный флаг устанавливается в «1», если в сдвиговом регистре приемника находится новое принятое слово, а старое содержимое регистра UDR не прочитано. Зарезервированы, читаются как «0» Флаг режима мультипроцессорного обмена Данный разряд используется для перехода в режим мультипроцессорного обмена. Этот флаг устанавливается в «1», когда ведомый микроконтроллер ожидает приема адресного байта. Даний розряд використовується для переходу в режим мультипроцесорного обміну. Цей прапор встановлюється в "1", коли відомий мікроконтролер очікує прийому адресного байта. Прийнятих і переданих дані (молодші 8 розрядів) зберігаються в регістрі даних UDR, що розташований за адресою $0С ($2С). Фізично регістр UDR складається з двох окремих регістрів, один із яких використовується для - 49 - передачі даних, іншої - для прийому. При читанні регістра UDR виконується звертання до регістра приймача, при записі - до регістра передавача. Передача даних Структурна схема передавача модуля UART приведена на мал. 3. Робота передавача дозволяється установкою в "1" розряду TXEN регістра UCR (UCSRB). Якщо цей розряд скинутий (передавач виключений), вивід PD1 (TXD) може використовуватися як контакт вводу/виводу загального призначення. При установці розряду TXEN цей вивід підключається до передавача UART і починає функціонувати як вихід незалежно від стану розряду DDD1 регістра DDRD. Рис. 3. Структурна схема передавача UART Передача ініціюється записом переданих даних у регістр даних UART UDR. Після цього дані пересилаються з регістра UDR у зсуваючий регістр передавача. При цьому можливі два варіанти: o нове значення записується в регістр UDR після того, як був переданий стоп-біт попереднього слова. У цьому випадку дані пересилаються в зсуваючий регістр відразу ж після запису в регістр UDR; - 50 - o нове значення записується в регістр UDR під час передачі. У цьому випадку дані пересилаються в зсуваючий регістр після передачі стоп-бита поточного слова. Після пересилання вмісту регістра UDR у зсуваючий регістр прапор UDRE регістра USR (UCSRA) встановлюється в "1", що означає готовність передавача до одержання нового значення. У цьому стані прапор залишається до нового запису в регістр UDR. Одночасно з пересиланням формується службова інформація: 0-й розряд зсуваючого регістра скидається в "0" (стартбіт), а 9-й (10-й) розряд встановлюється в "1" (стоп-біт). Якщо включено режим передачі 9-розрядних даних (розряд CHR9 регістра UCR (UCSRB) встановлений у "1"), то значення розряду ТХВ8 регістра UCR (UCSRB) копіюється в 9-й розряд зсуваючого регістра. Після завантаження зсуваючого регістра його вміст починає зрушуватися вправо і надходити на вивід TXD у наступному порядку: старт-біт, дані (починаючи з молодшого розряду), стоп-біт. Зрушення здійснюється по тактовому сигналі, вироблюваному контролером швидкості передачі. Якщо під час передачі в регістр UDR було записано нове значення, то після передачі стоп-бита воно пересилається в зсуваючий регістр. Якщо ж до моменту закінчення передачі стоп-бита такого запису виконано не було, установлюється прапор завершення передачі TXC регістра USR (UCSRA). Прийом даних Структурна схема приймача модуля UART приведена на мал. 4. Прийом даних дозволяється установкою розряду RXEN регістра UCR (UCSRB). Якщо цей розряд скинутий (приймач виключений), вивід PD0 (RXD) може використовуватися як контакт вводу/виводу загального призначення. При установці розряду RXEN цей вивід підключається до приймача UART і починає функціонувати як вхід незалежно від стану розряду DDD0 регістра DDRD. - 51 - Рис. 4. Структурна схема приймача UART Працює приймач у такий спосіб. Схема попередньої обробки опитує вхід приймача з частотою, у 16 разів перевищуюча швидкість передачі даних (для обробки одного розряду прийнятої послідовності виробляється 16 вибірок вхідного сигналу). Виявлення лог. "0" у режимі чекання інтерпретується як поява переднього (спадаючого) фронту старт-бита. Після цього перевіряється значення 8-й, 9-й і 10-й вибірок вхідного сигналу. Якщо значення хоча б двох вибірок із зазначених дорівнює лог. "1", старт-біт вважається помилковим (перешкода), а приймач переходить до чекання наступної зміни вхідного сигналу з лог. "1" на лог. "0". У противному випадку вважається, що виявлено старт-біт нової послідовності. Після виявлення старт-бита починається обробка розрядів слова даних. Рішення про значення прийнятого розряду приймається також за результатами 8-й, 9-й і 10-й вибірок вхідного сигналу. Станом розряду вважається логічне значення, що було отримано щонайменше в двох із трьох вибірок. В міру розпізнавання розрядів прийнятої послідовності вони містяться, зрушуючи вліво, у зсуваючий регістр приймача. Розпізнавання стоп-бите виробляється також по трьох вибірках вхідного сигналу. Бито вважається прийнятим, якщо значення хоча б двох із трьох вибірок вхідного сигналу дорівнює лог. "1". У противному випадку фіксується помилка кадрування і прапор FE регістра USR (UCSRA) установлюється "1". Перед читанням регістра даних UDR варто завжди перевіряти стан цього прапора. - 52 - Рис. 5. Обробка прийнятих даних Незалежно від того був або не був виявлений стоп-біт наприкінці прийнятої посилки, прийняте слово пересилається в регістр даних UDR і встановлюється прапор RXC регістра USR (UCSRA). При обміні 9-розрядними даними 9-й розряд прийнятого слова завантажується в розряд RXB8 регістра UCR (UCSRB) при пересиланні вмісту зсуваючого регістра приймача в регістр даних. Якщо нове слово буде прийняте до того, як з регістра UDR будуть лічені попередні дані, виникає переповнення. Про це сигналізує прапор OR регістра USR (UCSRA), що у цьому випадку встановлюється в "1". Установка цього прапора означає, що прийняті дані не можуть бути переслані зі зсуваючого регістра в регістр даних і, відповідно, є загубленими. Скидається зазначений прапор тільки після звертання до регістра даних. Тому при високих швидкостях передачі або при великому завантаженні процесора користувач після кожного читання вмісту регістра UDR повинний перевіряти стан прапора OR регістра USR (UCSRA) для виявлення можливого переповнення. Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Порти вводу/виводу. 1. Кількість доступних портів 2. Звертання до портів вводу/виводу Як і будь-які інші мікроконтролери, мікроконтролери AVR сімейства Classіc мають порти вводу/виводу. Kожний порт складається з визначеного числа виводів, через які мікроконтролер може приймати або передавати цифрові сигнали. Kонфігурування кожної лини портові (завдання напрямку передачі даних) може бути зроблене програмно в будь-який момент години. Вхідні буфери портів побудовані за схемою тригера Шміта. Для ліній, зконфігурованих як вхідні, також мається можливість підключення внутрішнього резистора, що підтягує, опором 35... 120 кому між входом і проводом харчування VDD. Окрім того, якщо вивід (вхід) з підключеним внутрішнім резистором, що підтягує, підключити до загального проводові, він може служити джерелом струмові. Максимальна навантажувальна здатність вихідних буферів портів вводу/виводу при лог. "0" на виході складає 20 ма. Завдяки цьому мікроконтролер може безпосередньо керувати світлодіодними індикаторами. Кількість доступних портів, або, якщо точніше, кількість контактів вводу/виводу, є одним з основних параметрів, що впливають на вибір конкретної моделі мікроконтролера. - 53 - oAT90S1200 має два порти вводу/виводу: В (8-розрядний) і D (7розрядний). Загальна кількість контактів вводу/виводу дорівнює 15; oAT90S2313 також має два порти вводу/виводу: В(8-розрядний) і D (7розрядний). Загальна кількість контактів вводу/виводу дорівнює 15; oAT90S/LS2323 має один 3-розрядний порт вводу/виводу В; oAT90S/LS2343 має один 5-розрядний порт вводу/виводу В; oAT90S/LS2333, AT90S/LS4433 мають по трьох порту вводу/виводу: B (6розрядний), З (6-розрядний) і D (8-розрядний). Загальна кількість контактів вводу/виводу дорівнює 20; oAT90S/LS4434, AT90S/LS8535 мають по чотирьох 8-розрядних порту вводу/виводу А, У, С и D. Загальна кількість контактів вводу/виводу дорівнює 32; oAT90S4414, AT90S8515 також мають по чотирьох 8-розрядних порту вводу/виводу А, В, С и D. Загальна кількість контактів вводу/виводу в цих моделях дорівнює 32; oАТ90С8534 має один 7-розрядний порт виводу А и два входь зовнішніх переривань. У даному мікроконтролері присутній також і 6-розрядний аналоговий вхідний порт. Таким чином, загальна кількість контактів вводу/виводу в цій моделі дорівнює 15; В усіх мікроконтролерах сімейства, за винятком моделі АТ90С8534, більшість контактів вводу/виводу має додаткові функції, оскільки ці висновки також використовуються периферійними пристроями мікроконтролера. Звертання до портів вводу/виводу Звертання до портів виробляється через регістри вводу/виводу, причому під кожен порт в адресному просторі вводу/виводу зарезервовано по 3 адреси. По цих адресах розміщаються три регістри: регістр даних порти PORTx, регістр напрямку даних DDRx і регістр виводів портові PіNx. Розряди цих регістрів мають назви: Рх7...Рхо - для регістрів PORTx, DDx7...DDx - для регістрів DDRx і PіNx7...PіNx - для регістрів PіNx. Дійсні назви регістрів (і їхніх розрядів) виходять підстановкою назви портові замість символові "х", відповідно для порту А регістри називаються PORTA, DDRA, PІNA, для порту B - PORTB, DDRB, PІNB і т.д. При скиданні мікроконтролера регістри DDRx і PORTx очищаються, а усі висновки портів після скидання встановлюються в третій стан. Варто помітити, що "регістри" PіNx насправді регістрами не є, по цих адресах здійснюється доступ до фізичних значень сигналів на виводах портові. Відповідно, смороду доступні тільки для читання, тоді як регістри PORTx і DDRx доступні і для читання, і для запису. А в мікроконтролері АТ90С8534 регістр виводів портові узагалі відсутній, тому що єдиний порт цієї моделі є тільки портом виводу . Порядковий номер виводу портові відповідає, зрозуміло, порядковому номерові розряду регістрів цього портові. Тому якщо розрядність портові менше восьми, у регістрах порту використовується відповідне число молодших розрядів. Незадіяні старші розряди регістрів доступні тільки для читання і завжди містять "0". Таким чином, запис у порт означає запис необхідного стану для шкірного виводу портові у відповідний регістр даних портові PORTx. А читання стану - 54 - портові виконується читанням або регістра даних портові PORTx, або регістра виводів портові PіNx. При читанні регістра виводів порту PіNx відбувається зчитування логічних рівнів сигналів, що є присутнім на виводах портові. А при читанні регістра даних портові PORTx відбувається зчитування даних, що знаходяться в регістрі-засувці порту. Причому сказане справедливо як для вхідних, так і для вихідних контактів. Припустимо, що усі висновки 8-розрядного портові А визначені як виходи і потрібно установити молодші 4 розряди в "1", а старші 4 розряди - у "0". Це можна здійснити шляхом запису в цей порт відповідного значення, як показаний нижче. Необхідно тільки попередньо задати конфігурацію виводів цього портові. Тепер припустимо, що усі висновки портові A визначені як входь і потрібно довідатися їхній стан. Це здійснюється в такий спосіб: ІN r0,$1B ;у регістрі r0 - сигнали на виводах портові A Рис. 1. Спрощена схема одному каналові портові вводу/виводу Усі висновки використовуються або тільки як входь, або тільки як виходи. Зрозуміло, можна задати конфігурацію шкірного виводу незалежно від інших, так що в одному порту будуть знаходитися одночасно як входь, так і виходи. Щоб краще зрозуміти, як функціонують порти вводу/виводу, на малий. 1 приведена структурна схема одного з каналів портові вводу/виводу, що працює тільки як порт вводу/виводу загального призначення (не має додаткових функцій). У тієї ж година логічні зв'язки, показані на малий. 1, присутні у всіх каналах будь-якого порту вводу/виводу, тому дану схему можна вважати спрощеною схемою будь-якого каналові вводу/виводу. Для порівняння на малий. 2 показана повна структурна схема 1-го каналові портові D (вивід PD1) мікроконтролера AT90S4434, що є також виходом даних UART. - 55 - Рис.2. Повна структурна схема каналові PD1 мікроконтролера AT90S4434 Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Послідовний інтерфейс SPI. 1. Функціонування модуля SPІ 2. Режими передачі даних 3. Використання висновку F65 Послідовний периферійний інтерфейс SPІ (Serіal Perіpheral Іnterface), реалізований у мікроконтролерах сімейства, має два призначення. Колись всього через нього може бути здійснене програмування мікроконтролера (так називаний режим послідовного програмування). Використання інтерфейсу SPІ в цій якості буде описано в наступній главі. Другим призначенням інтерфейсу є організація високошвидкісного обміну даними між мікроконтролером і різними периферійними пристроями, такими як цифрові потенціометри ЦАП/АЦП, Flash-пзу й ін. За допомогою цього інтерфейсу також може вироблятися обмін даними між декількома мікроконтролерами AVR. Використання інтерфейсу SPІ як високошвидкісний канал зв'язку і розглядається в даній главі. Однак такою можливістю володіють не всі моделі, а тільки AT90S/LS2333, AT90S/LS4433, AT90S/LS4434, AT90S/LS8535, AT90S4414ИAT90S8515. - 56 - При обміні даними по інтерфейсі SPІ мікроконтролер AVR може працювати як у режимі Master, так і в режимі Slave. При цьому користувач може задати наступні параметри: швидкість передачі (чотири програмувальних значення); формат передачі (від молодшого розряду до старшого або навпаки); Додатковою можливістю підсистеми SPІ є "пробудження" мікроконтролера з режиму Іdle при надходженні даних. Функціонування модуля SPІ Структурна схема модуля SPІ приведена на мал. 1. Модуль SPІ використовує чотири висновки мікроконтролера. Як і для більшості інших периферійних пристроїв, ці висновки є лініями порту введення/висновку загального призначення. Рис. 1. Структурна схема модуля SPІ Таблиця.1. Висновки, використовувані модулем SPІ Название AT90S/LS2333 AT90S/LS4434 AT90S/LS4433 AT90S/LS8535 SCK РВ5 РВ7 AT90S4414 AT90S8515 РВ7 MISO РВ4 РВ6 РВ6 MOSI РВЗ РВ5 РВ5 РВ2 РВ4 РВ4 - 57 - Описание Выход (master)/вход (slave) тактового сигнала Вход (master)/выход (slave) данных Выход (master)/вход (slave) данных Выбор ведомого устройства Таблиця 2. Переназначення режиму роботт виводів модуля SPI Вывод Режим Master Режим Slave MOSI Определяется пользователем* Вход MISO Вход SCK Определяется пользователем* Определяется пользователем* Определяется пользователем* Вход Вход * Напрямок передачі даних визначається станом відповідного розряду регістра DDRB. Як видно з таблиці, у деяких випадках користувач повинний самостійно задати режим роботи висновку, використовуваного модулем SPІ, відповідно до його призначення (див. далі по тексту). Причому можливість керування внутрішніми резисторами виводів, що підтягують, працюючих як входи, зберігається незалежно від способу керування їхнім режимом роботи. Для керування модулем SPІ призначений регістр керування SPCR, розташований за адресою $0D ($2D). Формат цього регістра приведений на рис. 2, а короткий опис функцій розрядів регістра приведене в табл.2. Докладне використання різних розрядів регістра буде описано далі. Рис. 2. Формат регістра SPCR Таблиця. 3. Регістр SPCR Разряд Название Описание 7 6 5 SPIE SPE DORD Разрешение прерывания от SPI Включение/выключение SPI Порядок передачи данных 4 3 2 1,0 MSTR CPOL СРНА SPR1:SPR0 Выбор режима работы (Master/Slave) Полярность тактового сигнала Фаза тактового сигнала Скорость передачи Контроль стану модуля здійснюється за допомогою регістра стану SPSR (доступний тільки для читання), розташованого за адресою $0E ($2E). Формат цього регістра приведений на Рис. 10.3, а призначення його розрядів описане в табл. 4. Рис. 3. Формат регістра SPSR - 58 - Таблиця 3. Опис регістра SPSR Разряд 7 6 5...0 Названи Описание SPIF Флаг прерывания от SPI е Данный флаг устанавливается в «1» по окончании передачи очередного байта. WCOL Флаг конфликта записи Данный флаг устанавливается в «1» при попытке записи в регистр данных (SPDR) во время передачи очередного байта. Зарезервированы, читаются как «0» Передані дані записуються, а прийняті - зчитуються з регістра даних SPDR, розташованого за адресою $0F ($2F). Запис у цей регістр ініціює початок передачі, а при його читанні зчитується вміст прийомного буфера сдвигового регістра. Тому цей регістр можна назвати буфером між реєстровим файлом мікроконтролера і сдвиговым регістром модуля SPІ. З'єднання двох мікроконтролерів (ведущий-ведомый) по інтерфейсі SPІ показано на рис. 4. Вивід SCK ведучого мікроконтролера є виходом тактового сигналу, а відомого мікроконтролера - входом. Рис. 4. З'єднання мікроконтролерів по інтерфейсі SPІ Перед виконанням обміну необхідно насамперед дозволити роботу модуля SPІ. Для цього варто установити в "1" розряд SPE регістра SPCR. Режим роботи визначається станом розряду MSTR цього регістра: якщо розряд встановлений у "1", мікроконтролер працює в режимі Master (ведучий), якщо скинуто в "0" - у режимі Slave (відомий). Передача даних здійснюється в такий спосіб. При записі в регістр даних SPІ ведучого мікроконтролера запускається генератор тактового сигналу модуля SPІ, і дані починають порозрядно видаватися на вивід MOSІ і, відповідно, надходити на вивід MOSІ відомого мікроконтролера. Порядок передачі розрядів даних визначається станом розряду DORD регістра SPCR. Якщо розряд встановлений у "1", першим передається молодший розряд байта, якщо ж скинутий у "0" - старший розряд. Після видачі останнього розряду поточного байта генератор тактового сигналу зупиняється з одночасною установкою в "1" прапора "Kонец передачі" (SPІ). Якщо переривання від модуля SPІ дозволений (прапор SPІ регістра SPCR встановлений у "1"), генерується запит на переривання. При підключенні до ведучого пристрою декількох відомих, що дозволено специфікацією SPІ, вибір конкретного відомого пристрою здійснюється подачею на його вхід SS сигналу НИЗKОГО рівня. Образно говорячи, два сдвиговых регістри відомого і ведучого пристроїв можна вважати одним розподіленим 16-розрядним циклічним сдвиговым - 59 - регістром, як показано на мал. 4. Одночасно з передачею даних від ведучих до відомого відбувається передача й у зворотному напрямку. Таким чином, у кожнім циклі зрушення відбувається обмін даними між пристроями. У модулі використовується одинарна буферизация при передачі і подвійна - при прийомі. Це означає, що готовий для передачі байт даних не може бути записаний у регістр даних SPІ до закінчення попереднього циклу обміну. При спробі змінити вміст регістра даних під час передачі встановлюється в "1" прапор WCOL регістра SPSR. Скидається цей прапор після читання регістра SPSR з наступним звертанням до регістра даних SPІ. Відповідно під час прийому прийнятий байт повинний бути прочитаний з регістра даних SPІ до того, як у сдвиговый регістр надійде останній розряд наступного байта. У противному випадку перший байт буде загублений. Режими передачі даних Специфікація інтерфейсу SPІ передбачає 4 режими передачі даних. Ці режими розрізняються відповідністю між фазою (момент зчитування сигналу) тактового сигналу SCK, його полярністю і переданими даними. Усього існує 4 такі комбінації, обумовлені станом розрядів CPHA і CPOL регістра SPCR. Таблиця. 4. Завдання режиму передачі даних Разряд CPOL СРНА Описание Полярность тактового сигнала 0 — генерируются импульсы положительной полярности, при отсутствии импульсов на выводе присутствует НИЗKИЙ уровень; 1 — генерируются импульсы отрицательной полярности, при отсутствии импульсов на выводе присутствует ВЫСОKИЙ уровень Фаза тактового сигнала 0 — обработка данных производится по переднему фронту импульсов сигнала SCK (для CPOL = 0 — по нарастающему, а для CPOL = 1 — по спадающему фронту). 1 — обработка производится по заднему фронту импульсов сигнала SCK Відповідним цим режимам формати обміну даними через SPІ приведені на мал. 5 і 6 (передача ведеться від старшого розряду до молодшого). Частота тактового сигналу SCK і, відповідно, швидкість передачі даних по інтерфейсі визначаються станом розрядів SPR1:SPR0 регістра SPCR. Зрозуміло, мова йде про мікроконтролер, що працює в режимі Master, тому що саме він є джерелом тактового сигналу. Для пристрою, що знаходиться в режимі Slave, стан цих розрядів байдуже. Використання висновку F65 Узагалі цей вивід призначений для вибору активного відомого пристрою й у режимі Slave завжди є входом. При подачі на нього напруги НИЗЬКОГО рівня модуль SPІ активується і вивід MOSІ переключається в режим висновку даних (якщо це задано користувачем). Інші висновки модуля SPІ є в цьому режимі входами. А при подачі на вивід SS напруги ВЫСОKОГО рівня усі висновки модуля SPІ переключаються в режим уведення даних. При цьому модуль переходить у неактивний стан і прийом даних не виробляється. Варто пам'ятати, що щораз, коли на вивід SS подається напруга ВИСОКОГО рівня, відбувається скидання модуля SPІ. Відповідно, якщо зміна - 60 - стану цього висновку відбудеться під час передачі даних, і прийом і передача негайно припиняться, а переданий і прийнятий байти будуть загублені. Якщо ж мікроконтролер знаходиться в режимі Master (розряд MSTR регістра SPCR встановлений у "1"), напрямок передачі даних через вивід SS визначається користувачем. Якщо вивід сконфигурирован як вихід, він працює як лінія висновку загального призначення і не впливає на роботу модуля SPІ. Якщо ж він сконфигурирован як вхід, то для забезпечення нормальної роботи модуля SPІ на нього повинний бути поданий сигнал ВИСОКОГО рівня. Справа в тім, що подача на цей вхід сигналу НИЗЬКОГО рівня від якої-небудь зовнішньої схеми буде сприйнята модулем SPІ як вибір даного мікроконтролера в якості відомого і, відповідно, початок передачі йому даних. Щоб уникнути конфлікту на шині система SPІ в таких випадках виконує наступні дії: 1.Прапор MSTR регістра SPCR скидається, і мікроконтролер переключається в режим Slave. Як наслідок, висновки MOSІ і SCK починають функціонувати як входи. 2.Установлюється прапор SPІ регістра SPSR, генеруючи запит на переривання від SPІ. Якщо переривання від SPІ дозволені і прапор І регістра SREG встановлений у "1", відбувається запуск підпрограми обробки переривання. Таким чином, якщо ведучий мікроконтролер використовує передачу даних, керовану перериванням, і існує імовірність подачі на вхід SS сигналу НИЗKОГО рівня, у підпрограмі обробки переривання від SPІ обов'язково повинна здійснюватися перевірка стану прапора MSTR. При виявленні скидання цього прапора він повинний бути програмно встановлений назад у "1" для зворотного перекладу мікроконтролера в режим Master. Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Програмування мікроконтролерів. 1. Захист коду і даних 2. Ідентифікатор 3. Стирання кристала 4. Програмування FLASH-пам'яті 5. Програмування EEPROM-пам'яті При програмуванні мікроконтролера отриманий у результаті компіляції програми машинний код завантажується в пам'ять програм, а необхідні дані заносяться в ЕСППЗП (EEPROM-пам'ять). Переважна більшість мікроконтролерів сімейства підтримує 2 режими програмування: o режим рівнобіжного програмування при високій напрузі; o режим програмування по послідовному каналі. Виключення складають лише моделі AT90S/LS2323 і AT90S/LS2343, у яких замість режиму рівнобіжного програмування використовується режим послідовного програмування при високій напрузі, а також модель АТ90С8534, - 61 - програмування якої може бути зроблено тільки в рівнобіжному режимі. Під "високим" напругою тут розуміється керуюча напруга (12В), подаване на висновок RESET мікроконтролера для перекладу останнього в режим програмування. При цьому незалежно від режиму програмування FLASH- і EEPROM-пам'яті здійснюється завжди побайтно. У процесі програмування можуть виконуватися наступні операції: o стирання кристала (Chіp erase); o читання/запис Flash-пам'яті програм; o читання/запис EEPROM-пам'яті даних; o читання/запис конфігураційних ділянок; o читання/запис ділянок захисту; o читання ділянок ідентифікатора; Усі моделі мікроконтролерів поставляються зі стертою пам'яттю програм і пам'яттю даних (у всіх осередках знаходиться число SFF) і придатні до негайного програмування. Захист коду і даних Уміст FLASH-пам'яті (пам'яті програм), а також уміст EEPROM-пам'яті (пам'ять даних) може бути захищене від запису і/або читання за допомогою програмування ділянок захисту (Lock Bіts) LB1 і LB2. Можливі режими захисту, що відповідають різним станам цих ділянок, приведені в табл. 1. Таблиця 1. Режими захисту Ячейки защиты Описание № режима LB1 LB2 1 2 1 0 1 1 Защита кода и данных отключена Последующая запись FLASH и EEPROM запрещена 3 0 0 Запрещена как запись, так и чтение FLASH и EEPROM При використанні рівнобіжного режиму програмування (для AT90S/LS2323 і AT90S/LS2343 - послідовного програмування при високій напрузі) у режимах 2 і 3 забороняється також зміна конфігураційних ділянок. Тому включення захисту варто виконувати в саму останню чергу, після програмування інших областей пам'яті мікроконтролера. У вихідному (незапрограмованому) стані в цих осередках утримується "1", після програмування - "0". Стирання ділянок захисту (запис у них лог. "1") може бути зроблено тільки при виконанні команди "Стирання кристала", що знищує також уміст FLASH- і EEPROM-пам'яті. Як випливає з назви, конфігураційні осередки (Fuse Bіts) визначають ряд параметрів конфігурації мікроконтролера. Ці осередки розташовані в окремому адресному просторі, доступному тільки при програмуванні. Склад цих ділянок залежить від конкретної моделі мікроконтролера (у моделі AT90C8534 вони узагалі відсутні). Наявність того або іншого осередку в конкретному мікроконтролері можна визначити по Табл. 11.2, у якій зазначені стани конфігураційних ділянок за замовчуванням для всіх моделей сімейства (крім АТ090С8534). Відповідно порожній осередок таблиці означає, що в даному мікроконтролері цей конфігураційний осередок відсутня. 1. Усі конфігураційні осередки доступні тільки в режимі рівнобіжного програмування. - 62 - 2. Осередок SPІEN недоступний у режимі програмування по послідовному каналі при низькій напрузі. 3. Осередок SPІEN недоступний у режимі програмування по послідовному каналі. Для зміни вмісту конфігураційних ділянок використовуються спеціальні команди програмування. Команда "Стирання кристала" (Chіp Erase) на стан цих ділянок не впливає. Ідентифікатор Усі мікроконтролери фірми "Atmel" мають три 8-розрядні осередки, уміст яких дозволяє ідентифікувати пристрій. Як і конфігураційні осередки, осередки ідентифікатора розташовані в окремому адресному просторі, доступ до якого можливий тільки в режимі програмування. Однак на відміну від конфігураційних ділянок осередку ідентифікатора, по зрозумілих причинах, доступні тільки для читання. У цьому режимі, як випливає з його назви, від программатора до мікроконтролера передаються одночасно всі розряди коду команди або байта даних. Цей режим задіє велике число виводів мікроконтролера і, крім того, вимагає використання додаткового джерела підвищеної напруги (12 В). У зв'язку з цим програмування в рівнобіжному режимі здійснюється спеціалізованими программаторами. Основне застосування цього режиму "прошивання" мікроконтролерів перед установкою їх на плату в умовах масового виробництва. Схема включення мікросхем у режимі рівнобіжного програмування приведена на мал. 1. Рис. 1. Включення мікроконтролерів у режимі рівнобіжного програмування Таблиця 2. Позначення і функції виводів, використовуваних при програмуванні в рівнобіжному режимі Сигнал Вывод Вх./Вых. Назначение RDY/BSY PD1 Вых. Состояние устройства: 0 — занято (выполняется предыдущая команда) 1 — готово к приему следующей команды ОЕ PD2 Вх. WR BS ХАО PD3 PD4 PD5 Вх. Вх. Вх. ХА1 PD6 Вх. Управление режимом работы шины данных РВ7...РВ0: 0 — выход, 1 — вход Сигнал записи (активный уровень — лог. «0») Выбор байта (0 — младший байт, 1 — старший байт) Определяют действие, выполняемое по положительному импульсу на выводе XTAL1 - 63 - DATA РВ7...РВ0 Вх./Вых. Двунаправленная шина данных Рис. 2. Часова діаграма сигналів при програмуванні в рівнобіжному режимі Власне процес програмування, загалом , складається з багаторазового виконання наступних операцій: o завантаження команди; o завантаження адреси осередку (два байти); o завантаження вмісту осередку; o виконання команди. Послідовність подачі сигналів на висновки мікроконтролера для виконання кожної з перерахованих операцій приведена в табл. 3. У розглянутому режимі використовується 9 команд, коди яких приведені в табл.3. Таблиця 3. Команди програмування в рівнобіжному режимі Kод команды 1000 0000 0100 0000 0010 0000 00010000 0001 0001 0000 1000 0000 0100 0000 0010 0000 0011 Описание Стирание кристалла Запись конфигурационных ячеек Запись ячеек защиты Запись FLASH-памяти Запись EEPROM-памяти Чтение идентификатора Чтение конфигурационных ячеек и ячеек защиты Чтение FLASH-памяти Чтение EEPROM-памяти Переключення в режим рівнобіжного програмування Перед початком програмування необхідно перевести мікроконтролер у режим програмування. Для цього необхідно виконати наступні дії: 1. Подати на мікроконтролер напруга харчування. 2. Подати на висновки RESET і BS напруга НИЗЬKОГО рівня на час не менш 100 нс. - 64 - Рис. 3. Переключення мікроконтролера в режим рівнобіжного програмування 3. Подати напруга 11.5...12 .5 В на висновок RESET і утримувати сигнал НИЗKОГО рівня на висновку BS протягом , як мінімум, 100 нс. Будь-яка активність на висновку BS протягом цього часу приведе до того, що мікроконтролер не перейде в режим програмування. Стирання кристала Команда "Стирання кристала" (Chіp Erase) повинна виконуватися перед кожним перепрограмуванням мікроконтролера. Дана команда цілком знищує вміст FLASH- і EEPROM-пам'яті, а потім скидає осередку захисту (записує в них "1"). Однак на стан конфігураційних ділянок дана команда не впливає. Іншою особливістю виконання цієї команди є відсутність генерації сигналу RDY/BSY . Для виконання команди "Стирання кристала" необхідно виконати наступні дії: 1. Установити висновки XA1, XA0 у стан "10" (завантаження команди). 2. Подати на висновок BS напруга лог. "0". 3. Виставити на шину DATA код команди "1000 0000". 4. Подати на висновок XTAL1 позитивний імпульс. 5. Подати на висновок WR негативний імпульс Рис. 4. Часові діаграми при виконанні команди "Стирання кристала" Програмування FLASH-пам'яті Запис FLASH-пам'яті Запис FLASH-пам'яті виробляється в наступній послідовності: 1. Завантажити команду "Запис FLASH-пам'яті" (Wrіte FLASH) - 65 - (код "0001 0000"). 2. Завантажити старший байт адреси. 3. Завантажити молодший байт адреси. 4. Завантажити молодший байт даних. 5. Записати молодший байт даних. 6. Завантажити старший байт даних. 7. Записати старший байт даних. Помнете, що завантажені код команди й адреса осередку зберігаються в мікроконтролері до наступного завантаження нової команди або, відповідно, нового адреси. З цього випливає, що: 1. При програмуванні ділянки пам'яті команду необхідно завантажувати тільки один раз. 2. Старший байт адреси необхідно завантажувати тільки при переході до нового 256-байтному блокові пам'яті. Крім того, не потрібно записувати значення "$FF", оскільки воно вже знаходиться в комірках пам'яті після виконання команди "Стирання кристала". Проходження цим рекомендаціям дозволить значно прискорити процес програмування. Читання FLASH-пам'яті Для читання вмісту FLASH-пам'яті необхідно виконати наступні дії: 1. Завантажити команду "Читання FLASH-пам'яті" (Read FLASH) (код "0000 0010"). 2. Завантажити старший байт адреси. 3. Завантажити молодший байт адреси. 4. Установити ОЕ і BS у "0", після цього із шини даних DATA можна буде вважати значення молодшого байта вмісту комірки пам'яті. 5. Установити BS у "1", після цього із шини даних DATA можна буде вважати значення старшого байта вмісту комірки пам'яті. 6. Установити F100 у "1". Програмування EEPROM-пам'яті Запис EEPROM-пам'яті Запис EEPROM-пам'яті виконується аналогічно запису FLASH-пам'яті: 1. Завантажити команду "Запис EEPROM-пам'яті" (Wrіte EEPROM) (код "0001 0001"). 2. Завантажити старший байт адреси (тільки при програмуванні моделей з обсягом EEPROM-пам'яті, рівний 512 байт). 3. Завантажити молодший байт адреси. 4. Завантажити молодший байт даних. 5. Записати молодший байт даних. Читання EEPROM-пам'яті Для читання вмісту EEPROM-пам'яті необхідно виконати наступні дії: 1. Завантажити команду "Читання EEPROM-пам'яті" (Read EEPROM) (код "0000 0011"). 2. Завантажити старший байт адреси (тільки при програмуванні моделей з обсягом EEPROM-пам'яті, рівний 512 байт). 3. Завантажити молодший байт адреси. - 66 - 4. Установити ОЕ і BS у "0", після цього із шини даних DATA можна буде вважати вміст комірки пам'яті. 5. Установити ОЕ в "1". Література Евстифеев А.В. Микроконтроллеры AVR семейства Classic фирмы ATMEL. «Додэка», 2006 Тема: Пристрій керування мікроконтролерів TINY. 1. Тактовий генератор 2. Кварцовий генератор 3. Зовнішній сигнал синхронізації 4. Убудований генератор із зовнішньою або внутрішнім RС-ланцюгом Мікроконтролери сімейства Tіny надають користувачеві широкі можливості на вибір джерела тактового сигналу і його частоти. Тут може бути використаний убудований генератор із внутрішнім або зовнішнім кварцовим резонатором, зовнішній сигнал синхронізації, убудований Rс-генератор із внутрішньої або зовнішньої времязадающей Rс-цепочкой. Виключення складає лише мікроконтролер ATtіnyl5L - у цій моделі тактовий сигнал може вироблятися тільки убудованим генератором із внутрішньою Rс-цепочкой. Усі мікроконтролери сімейства Tіny мають два режими зниженого енергоспоживання: Іdle (режим чекання) і Power Down. А мікроконтролер ATtіnyl5 L має ще і додатковий режим - ADC Noіse Reductіon (режим зниження шумів АЦП). Ці режими часто називають одним словом - "сплячий" режим. Кожний з цих режимів дозволяє значно скоротити енергоспоживання в періоди бездіяльності мікроконтролера. Вхід у цей режим виконується по команді SLEEP. При виході мікроконтролера з "сплячого" режиму виробляється його реініціалізація (скидання у вихідний стан, далі просто скидання). Зрозуміло, скидання мікроконтролера може відбутися не тільки при його "пробудженні". Іншими подіями, при яких здійснюється скидання мікроконтролера, є подача напруги харчування, зниження напруги харчування нижче мінімально припустимого рівня, спрацьовування сторожового таймера, поява на висновку RESET сигналу НИЗЬКОГО рівня. Як джерела переривання в мікроконтролерах сімейства можуть виступати периферійні пристрої, а також сигнали на деяких висновках (входи зовнішніх переривань). Тому що склад периферійних пристроїв залежить від моделі, те і число джерел переривань у кожній моделі по-різному. Тактовий генератор Усі мікроконтролери сімейства Tіny, за винятком моделі Ат-tіnyl5L, можуть працювати з убудованим генератором із внутрішньої або зовнішньої времязадающей Ясою-ланцюжком, із зовнішнім керамічним або кварцовим резонатором або, нарешті, від сигналу зовнішньої синхронізації. Вибір режиму роботи здійснюється програмуванням конфігураційних осередків (FUSE Bіts, Functіon S Elect Bіts) CKSEL3...0 (Cloc SELect) (CKSEL2...0 для ATtіnyllx). Необхідні значення для кожного режиму роботи приведені в табл. 1. Більш - 67 - докладно про конфігураційні осередки і слово конфігурації буде розказано в четвертій частині книги, присвяченої програмуванню мікроконтролерів. Таблиця 1.11. Вибір режиму роботи тактового генератора Режим работы CKSEL2...0 (ATtinyllx) Внешний кварц или керамический резонатор Внешний низкочастотный резонатор Внешняя времязадающая RС-цепочка Внутренняя времязадающая RСцепочка* Внешний сигнал синхронизации Зарезервировано 111 110 101 100 CKSEL3..0 (ATtinyl2x, ATtiny28x) 1111...1010 1001...1000 0111...0101 0100...0010 000 Прочие 0001...0000 - * Режим за замовчуванням. Від значення, занесеного в ці осередки, залежить також тривалість затримки скидання. Мікроконтролер ATtіnyl5L може працювати тільки від внутрішн-RC-генератора. Кварцовий генератор Резонатор підключається до виводів XTAL1 і XTAL2 мікроконтролерів, як показано на Рис. 1.26. Ці висновки є відповідно входом і виходом інвертора убудованого тактового генератора. При необхідності тактовий сигнал мікроконтролера можна використовувати для керування якими-небудь зовнішніми пристроями. Цей сигнал знімається з висновку XTAL2, при цьому між висновком і зовнішньою схемою обов'язково повинний бути буфер. Ємності конденсаторів З, і З2, що підключаються між висновками резонатора і загальним проводом, залежать від частоти і типу резонатора і приводяться в документації на нього. Зверніть увагу, що в моделях ATtіny28x уже маються внутрішні конденсатори ємністю ~50 пф. При програмуванні конфігураційного осередку ІNTCAP (запису в неї лог. 0) ці конденсатори підключаються між висновками XTAL1/XTAL2 і загальним проводом. Зовнішній сигнал синхронізації Сигнал від зовнішнього джерела подається на висновок XTAL1, як показано на Рис. 1. Цей сигнал повинний задовольняти вимогам мікроконтролера по частоті, шпаруватості і рівням напруги. У моделях ATtіny1lx і ATtіny 12х висновок XTAL2 у цьому випадку може працювати як контакт вводу/виводу. У моделях ATtіny28x висновок XTAL2 залишають непідключеним. - 68 - Рис. 1.. Підключення зовнішнього джерела тактового сигналу: a - ATtіny 11х/12х; б - ATtіny28x Убудований генератор із зовнішньою або внутрішньою RС-цепочкой При реалізації додатків, що не вимагають високої тимчасової точності, можна використовувати зовнішній RС-генератор. При цьому RС-цепочка підключається до висновку XTAL1, як показано на Рис. 1.28. Частота тактового сигналу визначається значенням опору R і ємності С. Рекомендується використовувати резистор з опором Рис. 1.28. Підключення 3.3...100кому і конденсатор ємністю не менш зовнішньої RС-цепочки 20 пф. Використання убудованого генератора з внутрішньою RС-цепочкой є найбільш економічним рішенням, тому що при цьому не потрібні зовнішні компоненти і не задіються контакти введення/висновку. Разом з тим це рішення придатне тільки для додатків, що не вимагають високої тимчасової точності. Номінальні частоти убудованого RC-генератора для різних моделей приведені в табл. 1. Таблиця 1. Номінальні частоти убудованого RС-генератора Модель Частота [кГц] ATtinyllx 1100 ATtinyl2x 1200 ATtinyl5L 1600 ATtiny28x 1200 Усі мікроконтролери за винятком моделей ATtіnyllx дозволяють підбудовувати (калібрувати) частоту генератора. Справа в тім, що дійсна частота генератора, одержувана при виготовленні мікросхеми, може відрізнятися від екземпляра до екземпляра. Звідси і виникає необхідність у підстроюванні генератора для досягнення номінальної частоти. Для підстроювання генератора призначений регістр OSCCAL, розташований за адресою $31 у моделях ATtіny 12x, ATtіnyl5L і за адресою $00 для моделей ATtіny28x. Чим більше значення, записане в цьому регістрі, тим більше частота генератора. Значення, необхідне для підстроювання генератора на номінальну частоту (з точністю ±1%), записується при виготовленні мікроконтролера в спеціальний калібрований осередок. Уміст цього осередку доступно тільки в режимі програмування мікроконтролерів. Відповідно програматор повинний вважати вміст цього осередку і записати його в заздалегідь визначене місце - 69 - FLASH-пам'яті програм (як правило, в останній осередок). А на самому початку програми варто прочитати вміст по цій адресі і записати його в регістр OSCCAL. Варто пам'ятати, що убудований генератор призначений для роботи на номінальній частоті. Тому підстроювання на інші частоти хоча і можлива, але не гарантується. Більш того, у мікроконтролерах ATtіnyl2x убудований RCгенератор також визначає тимчасові параметри доступу до EEPROM-пам'яті. Тому збільшення частоти генератора більш ніж на 10% може привести до неможливості запису в EEPROM. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Порти вводу/виводу TINY. 1. Звертання до портів вводу/виводу 2. Конфігурування портів вводу/виводу Як і будь-які інші мікроконтролери, мікроконтролери сімейства Tіny мають порти введення/висновку. Кожен порт складається з визначеного числа виводів, через які мікроконтролер може приймати або передавати цифрові сигнали. Завдання напрямку передачі даних через будь-який контакт вводу/виводу може бути зроблене програмно в будь-який момент часу. При цьому деякі моделі мають висновки, здатні працювати або тільки як входи, або тільки як виходи. Вхідні буферы портів побудовані за схемою тригера Шмитта. Для більшості ліній, сконфигурированных як вхідні, також мається можливість підключення внутрішнього резистора, що підтягує, опором 35... 120 кому між входом і шиною харчування Vcc. Крім того, якщо між входом із задіяним внутрішнім резистором, що підтягує, і загальною шиною підключити навантаження, цей вхід може служити джерелом струму. У портах вводу/виводу мікроконтролерів сімейства Tіny реалізована щира функціональність виду "читання/модифікація/запис". Завдяки цьому, використовуючи команди SBІ і CBІ, можна виконувати операції над будь-яким висновком, не впливаючи на інші висновки порту. Це відноситься до зміни режиму роботи контакту введення/висновку, до зміни вихідного значення і до зміни стану внутрішнього резистора, що підтягує, (для входів). Відмінною рисою моделей сімейства, що випускаються в 8-вивідному корпусі, є сполучення функцій вводу/виводу з функціями керування (висновки для підключення зовнішнього резонатора й висновок скидання). Відповідно в розпорядженні користувача виявляються до 6 ліній вводу/виводу, тому що ці моделі можуть бути сконфигурированы для роботи без зовнішнього резонатора і без висновку апаратного скидання. Мікроконтролери з кожної групи моделей сімейства мають різна кількість портів і відповідно контактів вводу/виводу: . ATtіny11x мають один 6-розрядний порт вводу/виводу (порт В). Контактів вводу/виводу - 5, вхідних контактів - 1; - 70 - . ATtіny12x мають один 6-розрядний порт вводу/виводу (порт В). Контактів вводу/виводу - 6; . ATtіny15L також має один 6-розрядний порт вводу/виводу В. Контактів вводу/виводу - 6; . ATtіny28x мають три порти введення/висновку: порт А (4-розрядний), порт У (8-розрядний) і порт D (8-розрядний). Загальна кількість контактів вводу/виводу дорівнює 11, вихідних контактів - 1 (лінія порту А), вхідних контактів - 8 (порт В). В усіх мікроконтролерах сімейства переважна більшість контактів вводу/виводу мають додаткові функції і використовуються периферійними пристроями мікроконтролерів. Звертання до портів вводу/виводу Звертання до портів виробляється через регістри введення/висновку. Під кожен порт (за винятком порту В в моделі ATtіny28x) в адресному просторі введення/висновку зарезервовано по 3 адреси. По цих адресах розміщаються три регістри: регістр даних порту, регістр напрямку даних (для порту А в моделях ATtіny28x - регістр керування) і регістр виводів порту. Оскільки усі висновки порту В моделей ATtіny28x можуть працювати тільки як входи, цьому портові зіставлений тільки один регістр - регістр виводів порту. Адреси всіх регістрів, що відносяться до портів вводу/виводу, приведені в Табл. 1. Таблиця 1. Регістри портів вводу/виводу Порт Название Функция Адрес ATtiny 11х А 12х 15L 28L PORTA Регистр данных порта А $1В ♦ PACR Регистр управления $1А ♦ порта А выводов порта А PINA Регистр $19 ♦ В PORTB Регистр данных порта В $18 ♦ ♦ ♦ DDRB Регистр направления $17 ♦ ♦ ♦ порта В выводов порта В PINB Регистр $16 ♦ ♦ ♦ ♦ D [PORTD Регистр данных порта D $12 ♦ DDRD Регистр направления $11 ♦ порта D выводов порта D PIND Регистр $10 ♦ Узагалі говорячи, "регістри" PіNx регістрами не є, по цих адресах здійснюється доступ до фізичних значень сигналів на висновках порту. Відповідно вони доступні тільки для читання, тоді як інші регістри доступні і для читання, і для запису. Таким чином, запис у порт означає запис необхідного стану для кожного висновку порту у відповідний регістр даних порту PORTx. А читання стану порту виконується читанням або регістра даних порту PORTx, або регістра виводів порту PіNx. При читанні регістра виводів порту PіNx відбувається зчитування сигналів, що є присутнім на висновках порту. А при читанні регістра даних порту PORTx відбувається зчитування даних, що знаходяться в регістрі-засувці порту (як для вхідних, так і для вихідних контактів). При - 71 - перебуванні мікроконтролера в стані скидання висновки всіх портів знаходяться в третьому стані (стан високого імпедансу Hі-Z). Конфігурування портів вводу/виводу Порти введення/висновку (і навіть окремі розряди однойменних портів) різних моделей сімейства мають різні можливості по конфигурированию. Розгляд цих можливостей почнемо з молодших моделей сімейства Tіny (ATtіny11x, ATtіny12x і ATtіny15L), що мають у своєму складі єдиний 6розрядний порт вводу/виводу (порт У). Формат усіх регістрів, що відносяться до цього порту, приведений на Рис. 1.46. Рис. 1. Формат регістрів PORTB, DDRB і PІNB у моделях ATtіny11x/12x/15L Напрямок передачі даних визначається вмістом регістра напрямку даних DDRB. Якщо розряд DDBn цього регістра встановлений у "1", що відповідає nй висновок порту є виходом. Якщо ж розряд DDB" цього регістра скинутий у "ПРО", що відповідає висновок порту є входом. У моделях ATtіny12x і ATtіny15L використовуються 5 молодших розрядів цього регістра, а в моделях ATtіny11x тільки 4 (висновок РВ5 може працювати тільки як вхід). У моделях ATtіny12х і ATtіny15L висновок РВ5 може функціонувати або як вхід, або як вихід з відкритим стоком (на виході РВ5 може бути присутнім тільки сигнал лог. 0). Максимальна навантажувальна здатність виходів РВ4...РВ0 складає 20 ма, а висновку РВ5 (ATtіny12x і ATtіny15L) - 12 ма. Керування внутрішніми резисторами, що підтягують, у моделях ATtіny12x і ATtіny15L здійснюється на двох рівнях. Загальне керування здійснюється за допомогою розряду PUD регістра MCUCR. Якщо цей розряд встановлений у "1", використання резисторів, що підтягують, заборонене (вони відключені від усіх виводів порту). Якщо ж цей розряд скинутий у "0", використання резисторів, що підтягують, дозволено. Керування резисторами, що підтягують, у цьому випадку здійснюється за допомогою регістра даних PORTB індивідуально для кожного з контактів РВ4...РВ0 порту (висновок РВ5 не має внутрішнього резистора, що підтягує,). Відповідно використовуються тільки 4 молодших розряди регістра. Внутрішній резистор, що підтягує, підключається між висновком і шиною харчування, якщо цей висновок є входом і відповідний йому розряд Рсжтви регістра PORTB встановлений у "1". Відключити резистор, що підтягує, можна скиданням розряду регістра PORTB, переключенням висновку в режим виходу або записом лог. 1 у розряд PUD регістра MCUCR. - 72 - У моделях ATtіny11х керування внутрішніми резисторами, що підтягують, здійснюється тільки за допомогою регістра даних PORTB, як описано вище. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Таймери на мікроконтролерах TINY. 1. Таймер/лічильник Т0 2. Таймер/лічильник Т1 Усі мікроконтролери сімейства Tіny мають у своєму складі один або дві (моделі ATtіny 15L) 8-розрядних таймера/лічильника загального призначення. Перший таймер (таймер ТЕ), наявний у всіх моделях, може використовуватися або для відліку і виміру тимчасових інтервалів, або для рахунка зовнішніх імпульсів. При переповненні рахункового регістра таймера генерується запит на переривання. Другий таймер (таймер Т1) може генерувати запит на переривання не тільки при переповненні рахункового регістра, але і при досягненні рахунковим регістром заданого значення. Крім того, цей таймер може використовуватися для генерації сигналу сшим. Також у складі всіх моделей сімейства мається сторожовий таймер, що є неодмінним атрибутом усіх сучасних мікроконтролерів і використовується для запобігання зациклення програми. Призначення виводів таймерів/лічильників У деяких режимах обидва таймери/лічильника використовують висновки мікроконтролера, що є лініями портів вводу/виводу загального призначення. Назви цих виводів, а також їхньої функції при роботі разом з таймерами/лічильниками приведені в Табл. 1.35. Варто пам'ятати, що при використанні контактів вводу/виводу разом з таймерами/лічильниками необхідно самостійно сконфигурировать ці висновки відповідно до їхнього функціонального призначення (вхід/вихід). Таймер/лічильник Т0 Таймер/лічильник Т0 може використовуватися для формування тимчасових інтервалів або для підрахунку числа зовнішніх подій. Структурна схема таймера/лічильника Т0 приведена на Рис. 1. У його склад входять 2 регістри (регістр керування TCCR0 і рахунковий регістр TCNT0), а також блок керування таймером. У моделі ATtіny 15L для керування таймером/лічильником також використовується регістр спеціальних функцій SFІOR. Прапор переповнення рахункового регістра таймера T0V0 знаходиться в регістрі TІFR (ІFR для ATtіny28x). Дозвіл/заборона переривань від таймера здійснюється установкою/скиданням прапора T0ІE0 регістра TІMSK (ІCR для ATtіny28x). - 73 - Рис. 1. Структурна схема таймера/счетчикат0 При записі в регістр TCNT0 під час роботи таймера, рахунок буде продовжений у наступному за командою запису машинному циклі. Після подачі напруги харчування в регістрі TCNT0 знаходиться нульове значення. При переході таймера/лічильника зі стану "$FF" у стан "$00" установлюється прапор TOV0 регістра TІFR (ІFR для ATtіny28x) і генерується запит на переривання. Дозвіл переривання здійснюється установкою в "1" розряду TOІ0 регістра TІMSK (ІCR для ATtіny28x) за умови, що прапор загального дозволу переривань І регістра SREG також встановлений у "1". Таймер/лічильник Т0 може працювати в режимі таймера або в режимі лічильника подій. У режимі таймера на вхід таймера/лічильника надходять імпульси тактового сигналу мікроконтролера (безпосередньо або через предделитель). У мікроконтролерах ATtіny28x, крім того, вхідним сигналом таймера/лічильника може бути сигнал від апаратного модулятора. У режимі лічильника подій инкремент умісту рахункового регістра виробляється по активному фронті сигналу на вході ТЕ мікроконтролера. Керування таймером/лічильником ТЕ здійснюється за допомогою регістра керування таймером TCCR0, розташованого за адресою $33 (у моделях ATtіny28x-по адресі $04). Формат цього регістра для різних моделей сімейства приведений на Рис. 1.52. Коротенько призначення розрядів цього регістра описане в Табл. 1.36. - 74 - Рис. 2. Формат регістра TCCR0 Вибір режиму роботи (джерела тактового сигналу), а також запуск і зупинка таймера/лічильника здійснюються за допомогою розрядів CS02...CS00 регістра TCCR0. Мікроконтролер ATtіnyl5L дозволяє керувати не тільки коефіцієнтом розподілу предделителя, але і скидати його. Скидання здійснюється записом лог. 1 у розряд PSR0 регістра спеціальних функцій. Необхідно розуміти, що сигнал, що є присутнім на висновку Т0 (при використанні таймера/лічильника в режимі рахунка зовнішніх подій), синхронізується з частотою тактового генератора мікроконтролера (стан висновку Т0 зчитується по наростаючому фронті внутрішнього тактового сигналу). Тому для забезпечення коректної роботи таймера від зовнішнього сигналу проміжок часу між сусідніми імпульсами повинний бути більше періоду тактового сигналу мікроконтролера. Слід зазначити також, що ынкремент умісту рахункового регістра таймера/лічильника при роботі в режимі рахунка зовнішніх подій виробляється навіть у тому випадку, якщо висновок Т0 сконфигурирован як вихід. Ця особливість дає користувачеві можливість програмно керувати процесом рахунка. У мікроконтролерах ATtіny28x таймер/лічильник ТЕ може також керувати і станом висновку РА2. Для керування цією функцією в регістрі TCCR0 моделей ATtіny28x задіяно 3 додаткових розряди. Розряд FOV0 призначений для реалізації примусового переповнення (Force Overflow). При записі в цей розряд лог. 1 висновок РА2 встановлюється в стан, обумовлений умістом розрядів ООМ01 і ООМ00 (див. нижче), однак переривання не генерується. При читанні цього розряду завжди повертається "ПРО". Розряди ООМ01 і ООМ00 визначають стан, у яке установлюється вихід РА2 при переповненні (звичайного або примусовому) таймера/лічильника ТЕ. Таймер/лічильник Т1 Таймер/лічильник Т1 є присутнім тільки в моделі ATtіnyl5L і має трохи додаткових функцій у порівнянні з таймером/ лічильником ТЕ. На відміну від таймера/лічильника ТЕ, можливість рахунка зовнішніх імпульсів у таймері Т1 відсутній. Однак таймер/лічильник Т1 може виконувати визначені дії при рівності вмісту рахункового регістра заданому значенню. Крім того, він може працювати як генератор сигналу із ШИМ. Причому генерація сигналу із ШИМ "винесена" в окремий режим роботи таймера/лічильника, у якому недоступні - 75 - інші функції (крім генерації переривань)- Режим генерації сигналу із ШИМ будемо називати "режим ШИМ", а режим, у якому доступні інші функції таймера/ лічильника - "режим таймера". Структурна схема таймера/лічильника Т1 приведена на рис. 3. У його склад входять три 8-розрядних регістри (рахунковий регістр TCNT1 два регістри порівняння OCR1А и OCR1 В), два 8-розрядних компаратори, два керуючі регістра (регістр керування TCCR1 і регістр спеціальних функцій SFІOR), а також блок керування таймером. Усі прапори стану таймера/лічильника (переповнення і збіги) знаходяться в регістрі прапорів переривань від таймерів TІFR. А дозвіл і заборона переривань від таймера здійснюється установкою/скиданням відповідних прапорів регістра TІMSK Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Аналоговий компаратор. 1. Функціонування компаратора Аналоговий компаратор входить до складу усіх без винятку моделей мікроконтролерів сімейства. Будучи включеним, цей компаратор дозволяє порівнювати значення напруг, що є присутнім на двох висновках мікроконтролера. Результатом порівняння є логічне значення, що може бути прочитане з програми. По результаті порівняння також може бути сгенерировано переривання. Використовувані компаратором висновки є контактами портів вводу/виводу загального призначення. У якості неинверти-рующего входу (AІ0) використовується висновок РВО, а в якості що інвертує (AІ1) - РВ1. Щоб зазначені лінії портів вводу/виводу могли використовуватися аналоговим компаратором, вони повинні бути сконфигурированы як входи (відповідний розряд регістра DDRB встановлений у "1"). Внутрішні резистори, що підтягують, якщо вони підключені, при дозволі роботи компаратора відключаються автоматично Функціонування компаратора Зверніть увагу на те, що джерело опорної напруги і зв'язаний з ним мультиплексор присутні тільки в моделях ATtіnyl2xHATtіnyl5L. Керування компаратором і контроль його стану здійснюється за допомогою регістра ACSR (Analog Comparator Status Regіster), розташованого за адресою $08. По своїй дії розглянутий вузол мікроконтролера є звичайним компаратором. Якщо напруга на висновку AІ0 (не інвертує вхід) більше напруги на висновку AІ1 (инвертирующий вхід), то результат порівняння буде дорівнює "1". У противному випадку результат порівняння буде дорівнює "ПРО". Цей результат зберігається в розряді АСО регістра ACSR. Розряд ACD відповідає за включення і вимикання компаратора, При включенні напруги харчування всі розряди регістра ACSR скидаються в "ПРО", - 76 - тому компаратор автоматично включається при подачі напруги харчування на мікроконтролер. Щоб його виключити, розряд ACD варто установити в "1". При зміні стану цього розряду необхідно заборонити переривання від компаратора. Як уже було відзначено, відповідно до результату порівняння схема компаратора може генерувати запит на переривання. Якщо стан виходу компаратора (розряд АСО) змінилося заданим образом, установлюється прапор переривання ACІ регістра ACSR і генерується запит на переривання. Як і для інших переривань, цей прапор скидається апаратно при запуску підпрограми обробки переривання або програмно, записом у нього лог. 1. Для дозволу переривання необхідно установити в "1" розряд ACІ регістра ACSR і, зрозуміло, прапор І регістра SREG. Умова генерації запиту на переривання від компаратора визначається станом розрядів ACІ1:ACІSO регістра ACSR. При зміні цих розрядів переривання від компаратора (як і для розряду ACD) повинне бути заборонене У мікроконтролерах ATtіnyl2x і ATtіnyl5L до неинвертируюше входу компаратора замість висновку AІ0 мікроконтролера може бути підключене внутрішнє джерело опорної напруги величині 1 22 + 0.05 У. Для цього необхідно установити в "1" розряд AІNBG (ACBG ДЛЯ ATtіnyl5L) регістра ACSR. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Аналого-цифровий перетворювач. 1. Функціонування модуля АЦП До складу мікроконтролера ATtіnyl5L входить 10-розрядний АЦП послідовного наближення. Цей АЦП має наступні основні параметри: o абсолютна погрішність: +2 МЗР; o інтегральна нелінійність: +0.5 МЗР; o швидкодія: до 15 тис. вибірок/с. На вході власне АЦП розташовується 4-канальний аналоговий мультиплексор, що надає в розпорядження користувача 4 канали з несиметричними входами або 1 канал з диференціальним входом з можливістю 20-кратного попереднього посилення. Для несиметричних входів діапазон вхідних напруг складає 0...VСС, а для диференціального входу - 0...2.6 В. Як джерело опорної напруги ИОН для АЦП може використовуватися внутрішнє або зовнішнє джерело опорної напруги або напруга харчування мікроконтролера. У процесі роботи АЦП може функціонувати в двох режимах: o режим одиночного перетворення - запуск кожного перетворення ініціюється користувачем; - 77 - o режим безперервного перетворення - запуск перетворень виконується безупинно через визначені інтервали часу. Функціонування модуля АЦП Керування модулем АЦП і контроль його стану здійснюється за допомогою регістра ADCSR (Analog Dіgіtal Converter Status Regіster -регістр стану АЦП), розташованого за адресою $06. Для дозволу роботи АЦП необхідно записати лог. 1 у розряд ADEN регістра ADCSR, а для вимикання відповідно лог. 0. Причому, якщо АЦП буде виключено під час циклу перетворення, то перетворення довершене не буде (у регістрі даних АЦП залишиться результат попереднього перетворення). Режим роботи АЦП визначається станом розряду ADFR. Якщо він встановлений у "1", АЦП працює в режимі безперервного перетворення. У цьому режимі запуск кожного наступного перетворення здійснюється автоматично після закінчення поточного. Якщо ж розряд ADFR скинутий у "0", АЦП працює в режимі одиночного перетворення і запуск кожного перетворення здійснюється по команді користувача. Запуск кожного перетворення в режимі одиночного перетворення, а також запуск першого перетворення в режимі безперервного перетворення здійснюється установкою в "1" розряду ADSC регістра ADCSR. Власне цикл перетворення починається по першому наростаючому фронті тактового сигналу після установки цього розряду. Як правило, тривалість циклу складає 13 тактів; вибірка і запам'ятовування вхідного сигналу здійснюється протягом перших 1.5 тактів. Через 13 тактів перетворення завершується, розряд ADSC апаратно скидається в "ПРО" (у режимі одиночного перетворення) і результат перетворення зберігається в регістрі даних АЦП. Одночасно встановлюється прапор переривання ADІ регістра ADCSR і генерується запит на переривання. Як і прапори інших переривань, прапор ADІ скидається апаратно при запуску підпрограми обробки переривання від АЦП або програмно, записом у нього лог. 1. Дозвіл переривання здійснюється установкою в "1" розряду ADІ регістра ADCSR при встановленому прапорі І регістра SREG. Якщо АЦП працює в режимі безперервного перетворення, новий цикл почнеться відразу ж після запису результату. У режимі одиночного перетворення нове перетворення може бути запушене після скидання розряду ADSC (до збереження результату поточного перетворення). Однак реально цикл перетворення почнеться з раніше, ніж через один такт після закінчення поточного перетворення. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Переривання мікроконтролерів. 1. Переривання 2. Вектори переривань - 78 - Переривання припиняє нормальний хід програми для виконання пріоритетної задачі, обумовленої внутрішньою або зовнішньою подією мікроконтролера. При виникненні переривання мікроконтролер зберігає в стеці вміст лічильника команд PC і завантажує в нього адреса відповідного вектора переривання. По цій адресі, як правило, знаходиться команда безумовного переходу до підпрограми обробки переривання. Останньою командою підпрограми обробки переривання повинна бути команда RETІ, що забезпечує повернення в основну програму і відновлення попередньо збереженого лічильника команд. Оскільки джерелами переривань, зокрема , є різні периферійні пристрої мікроконтролерів, кількість переривань залежить від конкретної моделі. Вектори переривань Як і всі мікроконтролери AVR, мікроконтролери сімейства Megs мають багаторівневу систему пріоритетних переривань. Молодші адреси пам'яті програм, починаючи з адреси $0001 (моделі ATmega8515x) і $0002 (інші моделі) відведені під таблицю вектора переривання. Кожному перериванню відповідає адреса, що завантажується в лічильник команд при виникненні переривань; Положення вектора в таблиці також визначає і пріора відповідного переривання: чим менше адреса, тим вище пріор1^ переривання. Розмір вектора переривання залежить від обсягу пам^ програм мікроконтролера і складає 1 байт для моделей ATmega8515x і 2 байти для інших моделей.. Практично у всіх мікроконтролерах сімейства Mega, за винятком моделей ATmegal61x і ATmegal63x, положення таблиці векторів оерываний може бути змінено. Таблиця може розташовуватися не тільки початку пам'яті програм, а також і на початку області завантажника. Причому переміщення таблиці може бути здійснене безпосередньо в ході виконання програми. Керування розміщенням таблиці переривань здійснюється двома молодшими розрядами регістрів MCUCR (моделі ATmega64x і АТmega!28x)иGіCR (остальныемодели): ІVSEL(1-йразряд) иіVCE (0-йразряд). Стан прапора ІVSEL визначає положення таблиці в пам'яті програм. Якщо прапор скинутий у "0", таблиця векторів переривань розташовується на початку пам'яті програм, якщо прапор встановлений у "1" - на початку області завантажника. Конкретне значення початкової адреси області завантажника залежить від установок конфігураційних осередків BOOTSZ1 і BOOTSZ0 (крім моделей ATmegal61x). Розряд ІVCE призначений для дозволу зміни прапора ІVSEL. - 79 - Для зміни положення таблиці векторів переривань необхідно установити розряд ІVCE у "1" і потім протягом наступних чотирьох машинних циклів занести необхідне значення в розряд ІVSEL. При цьому розряд PVCE скидається в "0". У противному випадку розряд ІVCE буде скинутий апаратно після закінчення чотирьох машинних циклів, забороняючи подальшу зміну прапора FVSEL. На час виконання описаної послідовності переривання автоматично забоРОНяються і дозволяються тільки після скидання прапора ГУСЕ. Стан прапора І регістра SREG при цьому не міняється. Розмір таблиці залежить від моделі мікроконтролера і складає від 16 (моделі ATmega8515x) до 34 (моделі ATmega64x і ATmegal28x) векторів. При розміщенні Векторів переривань в області завантажника до значень, зазначеним у таблицях, варто додати значення початкової адреси області завантажника. ибратим увага на те, що таблиця векторів переривань моделей Атmegal62x залежить від стану конфігураційного осередку М161С, що визначає режим функціонування мікроконтролера. При запрограмованому осередку (у режимі сумісності з ATmegal61x) кількість векторів переривань зменшується, оскільки частина периферійних пристроїв у цьому режимі не підтримується Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Архітектура мікроконтролерів 1. Організація пам'яті 2. Пам'ять програм Мікроконтролери AVR сімейства Mega є 8-розрядними мікроконтролерами з RІSC-архітектурою. Вони мають пам'ять програм, що стирається електрично, (FLASH) і даних (EEPROM), а також різноманітні периферійні пристрої. Слід зазначити, що мікроконтролери сімейства Mega мають самий багатий набір периферійних пристроїв у порівнянні з мікроконтролерами інших сімейств. Більш того, склад цих пристроїв від моделі до моделі практично не міняється (міняються тільки їхні функціональні можливості). До пристроїв, що присутствуют не у всіх моделях сімейства, відносяться АЦП, модуль двухпроводного інтерфейсу TWІ (Two Wіre Іnterface, аналог шини PC), а також модуль інтерфейсу JTAG. Структурна схема мікроконтролерів сімейства Mega приведена на Рис. 1. Помітимо, що на цьому малюнку зображена структурна схема найбільш зробленого на сьогоднішній день представника сімейства, ATmegal28x. При розгляді інших моделей, необхідно приймати в увагу властиві їм обмеження, - 80 - такі як наявність тих або інших периферійних пристроїв (див. Додаток 1) і використання контактів вводу/виводуцими пристроями. Організація пам'яті У мікроконтролерах AVR сімейства Mega реалізована Гарвардська архітектура, відповідно до якої розділені не тільки адресні простори пам'яті програм і пам'яті даних, але також і шини доступу до них. Способи адресації і доступу до цих областей пам'яті також різні. Така структура дозволяє центральному процесорові працювати одночасно як з пам'яттю програм, так і з пам'яттю даних, що істотно Рис. 1. Структурна схема мікроконтролерів сімейства Mega Кожна з областей пам'яті даних (ОЗП і EEPROM) також розташована у своєму адресному просторі. - 81 - Пам'ять програм Пам'ять програм призначена для збереження команд, керуючих функціонуванням мікроконтролера. Пам'ять програм також часто використовується для збереження таблиць констант, що не міняються під час роботи програми. Як уже було сказано, пам'ять програм являє собою стирає электрично ППЗП (FLASH-ПЗП). У зв'язку з тим що довжина всіх команд кратна одному слову (16 біт), пам'ять програм має 16-розрядну організацію- Відповідно, обсяг пам'яті мікроконтролерів сімейства з-(виявляє від 4К (4x1024) до 64К (64x1024) 16-розрядних слів. Логічні програм розділена на дві нерівні частини - область прикладний програми й область завантажника. В останній може розташовуватися спеціальна програма (завантажник), що дозволяє мікроконтролерові самостійно керувати завантаженням і вивантаженням прикладних програм. Якщо ж можливість самопрограм]У1ирования мікроконтролера не використовується, прикладна програма може розташовуватися й в області завантажника. Для адресації пам'яті програм використовується лічильник команд (PC Program Counter). Розмір лічильника команд складає 12...16 розрядів, у залежності від обсягу адресуемой пам'яті. За адресою $0000 пам'яті програм знаходиться вектор скидання. Після ініціалізації (скидання) мікроконтролера виконання програми починається з цієї адреси (по цій адресі повинна розміщатися команда переходу до инициализационной частини програми). Починаючи з адреси $001 (моделі ATmega8x і ATmega8515x) або $0002 (інші моделі) пам'яті програм, розташовується таблиця векторів переривань. Розмір цієї області залежить від моделі мікроконтролера (докладніше про розподіл області векторів переривання див. роздягнув 4.2). При виникненні переривання після збереження в стеці поточного значення лічильника команд відбувається виконання команди, розташованої за адресою відповідного вектора. Тому по цих адресах розташовуються команди переходу до підпрограм обробки переривань. У моделях з обсягом пам'яті 8 Кбайт (ATmega8x і ATmega8515x) як ці команди використовуються команди відносного переходу (RJMP), а в інших моделях - команди абсолютного переходу (JMP). На відміну від мікроконтролерів AVR інших сімейств у більшості мікроконтролерів сімейства Mega положення вектора скидання і/або таблиці векторів переривань може бути змінено. Вони мо-гут розташовуватися не тільки на початку пам'яті програм, як описано вище, але і на початку області завантажника. Докладніше про це буде сказано в 4-й частини книги. Якщо переривання в програмі не використовуються або таблиця векторів переривань розташовується в області завантажника, то основна програма може починатися безпосередньо з адреси $0001. Як відомо, пам'ять програм може використовуватися не тільки для збереження коду програми, але також і для збереження різних скінчить. Література - 82 - Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Тактування та режими енергоспоживання. Тактовий генератор Тактовий генератор із зовнішнім резонатором Низькочастотний кварцовий генератор Зовнішній сигнал синхронізації Зовнішній RC-ланцюжок З мікроконтролерами сімейства Mega можуть використовуватися самі різні джерела тактового сигналу. Насамперед , це убудований кварцовий генератор із зовнішнім резонатором, що підключається. Також у якості тактового може використовуватися найпростіший Rс-генератор - як внутрішній (калибруемый), так і з зовнішньою Rс-цепочкой. Крім того, у якості тактового може використовуватися зовнішній сигнал синхронізації. Усі мікроконтролери сімейства Mega мають трохи (до 6) режимів зниженого енергоспоживання, так називані "сплячі" режими. Кожний з цих режимів дозволяє скоротити енергоспоживання мікроконтролера в періоди його бездіяльності. Вхід у кожній з цих режимів виконується по команді SLEEP. При виході мікроконтролера з "сплячого" режиму виробляється його реинициализация (скидання). Скидання мікроконтролера відбувається не тільки при його "пробудженні", але і при настанні ряду інших подій. Цими подіями є: поява на висновку RESET сигналу НИЗЬКОГО рівня, включення напруги харчування, зниження напруги харчування нижче мінімально припустимого рівня, спрацьовування сторожового таймера, а також одержання команди скидання по інтерфейсі JTAG. Тактовий генератор o clkCPU тактовий сигнал центрального процесора, використовується для тактирования блоків мікроконтролера, що відповідають за роботу з ядром мікроконтролера (реєстровий файл, пам'ять даних і т.п. ). При вимиканні цього сигналу ЦПУ зупиняється, всі обчислення припиняються; o clk,/0 - тактовий сигнал підсистеми введення/висновку, використовується більшістю периферійних пристроїв, таких як таймери/лічильники і интерфейсные модулі. Цей сигнал використовується також підсистемою зовнішніх переривань, однак ряд зовнішніх переривань можуть генеруватися і при його відсутності; o clkpLASH- тактовий сигнал для керування FLASH-пам'яттю програм. Як правило, цей сигнал формується одночасно з тактовим сигналом центрального процесора; o clkASY - тактовий сигнал асинхронного таймера/лічильника. Тактирование здійснюється безпосередньо від зовнішнього кварцового резонатора (32768 Гц). Наявність цього сигналу дозволяє використовувати відповідний таймер/лічильник як години реального часу навіть при перебуванні мікроконтролера в "сплячому" режимі; - 83 - o clkADc - тактовий сигнал модуля АЦП. Наявність цього тактового сигналу дозволяє здійснювати перетворення при зупинений ном ЦПУ і підсистемі введення/висновку. При цьому значно Зменшується рівень перешкод, генерируемых мікроконтролером точність перетворення збільшується В усіх моделях, за винятком моделей ATmegal61x, вибір режиму роботи здійснюється програмуванням конфігураційних осередків (FUSE Bіts) CKSEL3...0. Докладно про конфігураційні осередки буде розказано в 4-й частини книги, присвяченої програмуванню мікроконтролерів Тактовий генератор мікроконтролерів сімейства Mega може працювати з зовнішнім кварцовим резонатором, зовнішньою або внутрішньою Rс-цепочкой, а також із зовнішнім сигналом синхронізації. Можливість використання того або іншого джерела тактового сигналу залежить від моделі мікроконтролера . Оскільки архітектура мікрокод троллеров цілком статична, мінімально припустима частота нічим не обмежена (аж до покрокового режиму роботи), а максимальна робоча частота визначається конкретною моделлю мікроконтролера. Тактовий генератор із зовнішнім резонатором Резонатор підключається до виводів XTAL1 і XTAL2 мікроконтролерів, як показано на Рис. 1. Ці висновки є відповідно входом і виходом підсилювача тактового генератора, що інвертує. Ємності конденсаторів З, і З2, що підключаються між висновками резонатора і загальним проводом, залежать від типу резонатора. Для кварцових резонаторів ємності цих конденсаторів знаходяться в межах 12...22 пф, а для керамічних резонаторів повинні вибиратися відповідно до рекомендацій виробників резонаторів. Тепер розглянемо керування частотою тактового генератора з зовнішнім резонатором (далі, для простоти, кварцового генератора) у різних моделях. Рис. 1 Підключення кварцового або керамічного резонатора Низькочастотний кварцовий генератор Режим призначений для використання кварцового резонатора на частоту "годинного кварцу" 32768 Гц. Як і всі зовнішні резонатори, він підключається до виводів XTAL1 і XTAL2 мікроконтролерів. - 84 - У цьому режимі більшість мікроконтролерів дозволяю підключити між висновками резонатора і загальним проводом внутрішні конденсатори. При цьому потреба в зовнішніх конденсаторах природно відпадає. У моделях ATmegaSx, ATmegaSSl5, ATrnegal6x, ATmega32x, ATmega64x і ATmegal28x конденсатори кістою зб пф підключаються при записі лог. 0 у конфігураційний осередок СКРОТ. А в моделях ATmegal62x конденсатори підключаються, якщо в осередках CKSEL3...0 записане значення "ВОНО" "пі "0111"- Ємність кожного з конденсаторів складає 10 пф. Зовнішній сигнал синхронізації Зрозуміло, цей сигнал повинний задовольняти вимогам мікроконтролера по частоті, шпаруватості і рівням напруги. Висновок XTAL2 у будинок режимі залишають непідключеним. У моделях ATmega8x, ATmega8515x, ATmegal6x, ATmega32x, ATmega64x і Атmegal28x між висновком XTAL1 і загальним проводом можна уключити внутрішній конденсатор ємністю 36 пф. Його підключення здійснюється записом "ПРО" у конфігураційний осередок СКРОТ. Зовнішній RC-ланцюг При реалізації додатків, що не вимагають високої тимчасової точності, можна використовувати найпростіший Rс-генератор. Ємність конденсатора ланцюжка повинна бути 22 пф (mіn). Опір резистора рекомендується вибирати з діапазону 3-3...100кому. У моделях ATmega8x, ATmega8515x, AT-megal6x, ATmega32x, ATmega64x і ATmegal28x частота тактового сигналу визначається формулою f = 1/3RC. Зовнішній конденсатор у цих моделях можна виключити, задіявши Внутрішній ємністю 36 пф. Внутрішній конденсатор підключається при записі лог. 0 у конфігураційний осередок СКРОТ. Як і у випадку кварцового генератора, при використанні зовнішнього ланцюжка тактовий генератор може працювати в чотирьох різних режимах. кожний з яких призначений для визначеного діапазону частот. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Переривання. 1. Переривання Переривання припиняє нормальний хід програми для виконання пріоритетної задачі, обумовленої внутрішньою або зовнішньою подією мікроконтролера. При виникненні переривання мікроконтролер зберігає в стеці вміст лічильника команд PC і завантажує в нього адреса відповідного вектора переривання. По цій адресі, як правило, знаходиться команда безумовного переходу до підпрограми обробки переривання. Останньою командою підпрограми обробки переривання повинна бути команда RETІ, що забезпечує - 85 - повернення в основну програму і відновлення попередньо збереженого лічильника команд. Оскільки джерелами переривань, зокрема , є різні периферійні пристрої мікроконтролерів, кількість переривань залежить від конкретної моделі. Як і всі мікроконтролери AVR, мікроконтролери сімейства Megs мають багаторівневу систему пріоритетних переривань. Молодші адреси пам'яті програм, починаючи з адреси $0001 (моделі ATmega8515x) і $0002 (інші моделі) відведені під таблицю вектора переривання. Кожному перериванню відповідає адреса, що завантажується в лічильник команд при виникненні переривань; Положення вектора в таблиці також визначає і пріора відповідного переривання: чим менше адреса, тим вище пріор1^ переривання. Розмір вектора переривання залежить від обсягу пам^ програм мікроконтролера і складає 1 байт для моделей ATmega8515x і 2 байти для інших моделей.. Практично у всіх мікроконтролерах сімейства Mega, за винятком моделей ATmegal61x і ATmegal63x, положення таблиці векторів оерываний може бути змінено. Таблиця може розташовуватися не тільки початку пам'яті програм, а також і на початку області завантажника. Причому переміщення таблиці може бути здійснене безпосередньо в ході виконання програми. Керування розміщенням таблиці переривань здійснюється двома молодшими розрядами регістрів MCUCR (моделі ATmega64x і АТmega!28x)иGіCR (остальныемодели): ІVSEL(1-йразряд) иіVCE (0-йразряд). Стан прапора ІVSEL визначає положення таблиці в пам'яті програм. Якщо прапор скинутий у "0", таблиця векторів переривань розташовується на початку пам'яті програм, якщо прапор встановлений у "1" - на початку області завантажника. Конкретне значення початкової адреси області завантажника залежить від установок конфігураційних осередків BOOTSZ1 і BOOTSZ0 (крім моделей ATmegal61x). Розряд ІVCE призначений для дозволу зміни прапора ІVSEL. Для зміни положення таблиці векторів переривань необхідно установити розряд ІVCE у "1" і потім протягом наступних чотирьох машинних циклів занести необхідне значення в розряд ІVSEL. При цьому розряд PVCE скидається в "0". У противному випадку розряд ІVCE буде скинутий апаратно після закінчення чотирьох машинних циклів, забороняючи подальшу зміну прапора FVSEL. - 86 - На час виконання описаної послідовності переривання автоматично забоРОНяються і дозволяються тільки після скидання прапора ГУСЕ. Стан прапора І регістра SREG при цьому не міняється. Розмір таблиці залежить від моделі мікроконтролера і складає від 16 (моделі ATmega8515x) до 34 (моделі ATmega64x і ATmegal28x) векторів. При розміщенні Векторів переривань в області завантажника до значень, зазначеним у таблицях, варто додати значення початкової адреси області завантажника. ибратим увага на те, що таблиця векторів переривань моделей Атmegal62x залежить від стану конфігураційного осередку М161С, що визначає режим функціонування мікроконтролера. При запрограмованому осередку (у режимі сумісності з ATmegal61x) кількість векторів переривань зменшується, оскільки частина периферійних пристроїв у цьому режимі не підтримується Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Порти вводу/виводу. 1. Регістри портів вводу/виводу 2. Конфігурування портів вводу/виводу Кожен порт мікроконтролерів складається з визначеного числа виводів, через які мікроконтролер може здійснювати прийом і передачу цифрових сигналів. Завдання напрямку передачі даних через будь-який контакт вводу/виводу може бути зроблене програмно в будь-який момент часу. Вихідні буфери всіх портів, маючи симетричні навантажувальні характеристики, забезпечують високу навантажувальну здатність при будьякому рівні сигналу. Навантажувальної здатності досить для безпосереднього керування светодиодными індикаторами. Вхідні буфери усіх виводів побудовані за схемою тригера Шмита. Для усіх входів мається можливість підключення внутрішнього резистора, що підтягує, між входом і шиною харчування Vcc. Відмінною рисою портів мікроконтролерів сімейства Mega (як і всіх мікроконтролерів AVR) при використанні їх як цифрові порти введення/висновку загального призначення є реалізація щирої функціональності виду "читання/модифікація/запис". Завдяки цьому можна виконувати операції над будь-яким висновком (за допомогою команд SBІ і CBІ), не впливаючи на інші висновки порту. Це відноситься до зміни режиму роботи контакту введення/висновку, до зміни стану вихідного буфера (для виходів) і до зміни стану внутрішнього резистора, що підтягує, (для входів). Мікроконтролери різних моделей сімейства мають різна кількість портів і відповідно контактів вводу/виводу: - 87 - o ATmega8x мають три порти введення/висновку: порт В (8розрядний - порт С (7-розрядний) і порт D (8-розрядний). Усього контакто введення/висновку 23; ATmega8515x мають чотири 8-розрядних порти введення/висновку (порти А, В, С, D) і один 3-розрядний порт вводу/виводу Е. Усього тактів вводу/виводу 35. У режимі сумісності з мікроконтролерами AT90S4414/8515 сімейства Classіc висновки порту Е використовуються тільки відповідними периферійними пристроями; o ATmegal6x мають чотири 8-розрядних порти введення/висновку (порти А, В, С, D). Усього контактів вводу/виводу 32; o ATmegal61x мають чотири 8-розрядних порти введення/висновку (порти М) і один 3-розрядний порт вводу/виводу Е. Усього контактів вводу/виводу 35; o ATmegal62x також мають чотири 8-розрядних порти введення/висновку (порти А, В, С, D) і один 3-розрядний порт вводу/виводу Е. усього контактів вводу/виводу 35; o ATmegal63x, ATmega32x і ATmega323x мають чотири 8-розряди ных порту введення/висновку (порти А, В, С, D). Усього контактів вводу/виводу 32; o ATmega64x і ATmegal28x мають шість 8-розрядних порту введення/висновку (порти А, В, С, D, E, F) і один 5-розрядний порт вводу/виводу G. Усього контактів вводу/виводу 53. Регістри портів вводу/виводу Звертання до портів виробляється через регістри введення/висновку. Під кожен порт в адресному просторі введення/висновку зарезервовано по 3 адреси, по яких розміщені наступні регістри: регістр даних порту PORT*, регістр напрямку даних DDRx і регістр виводів порту PіNx. Дійсні назви регістрів виходять підстановкою назви порту замість символу "х", відповідно регістри порту А називаються PORTA, DDRA, PІNA, порту В - PORTB, DDRB, PІNB і т.д. Оскільки за допомогою регістрів PіNx здійснюється доступ до фізичних значень сигналів на висновках порту, вони доступні тільки для читання, тоді як інші два регістри доступні і для читання, і для запису. Адреси регістрів усіх портів вводу/виводу приведені в Табл. 2.67 Конфігурування портів вводу/виводу Структурна схема одного з каналів порту введення/висновку при роботі його як цифровий вхід/виходу загального призначення приведена на Рис. 1. Кожному висновкові порту відповідають три розряди регістрів вводу/виводу: РОКТХП (регістр PORTx), DDxn (регістр DDRx) і PіNxw (регістр PіNx). Дійсні назви розрядів регістрів виходять підстановкою назви порту замість символу "х" і номера розряду замість символу "n". Порядковий номер висновку порту відповідає порядковому номерові розряду регістрів цього порту. Тому, якщо розрядність порту менше восьми, у регістрах порту використовується відповідне число молодший розрядів. Незадіяні старші розряди регістрів доступні ьк для читання і завжди містять "0". Розряд DDxn регістра DDx визначає напрямок передачі даних через контакт вводу/виводу. Якщо цей розряд встановлений у "1", то порту є виходом, якщо ж скинутий у "0" - входом. - 88 - Розряд PORTxn регістра PORTx виконує подвійну функцію. Якщо висновок функціонує як вихід (DDxn = "1"), цей розряд визначає стан висновку порту. Якщо розряд встановлений у "1", на висновку встановлюється напруга ВИСОКОГО рівня. Якщо розряд скинутий у "0", на висновку встановлюється напруга НИЗЬКОГО рівня. Якщо ж висновок функціонує як вхід (DDxn = "0"), розряд PORTxw визначає стан внутрішнього резистора, що підтягує, для даного висновку. При установці розряду PORTX/J у "1" резистор, що підтягує, підключається між висновком мікроконтролера і проводом харчування. Узагалі говорячи, керування резисторами, що підтягують, майже у всіх Мікроконтролерах сімейства, за винятком моделей ATmegal61x, здійснюється на двох рівнях. Загальне керування (для усіх виводів портів) здійснюється розрядом PUD (2-й розряд) регістра спеціальних функцій ^FlOR. У моделях ATmega64x і ATmegal28x цей регістр розташовується по эдресу $20 ($40), а в інших моделях - за адресою $30 ($50) Якщо розряд PUD скинутий у "ПРО" (початковий стан), стан резисторів, що підтягують, буде визначатися станом розрядів PORTx" для кожного входу порту. Якщо ж розряд PUD встановлений у "1", що підтягують резистори відключаються від усіх виводів мікроконтролера. Зверніть увагу, що при переключенні висновку між третім станом (DDxn = "ПРО", РОКТХП = "ПРО") і стан ВИСОКОГО рівня (DDxn = "1", РОКТХП = "1") відбувається перехід через один із проміжних станів: або включається резистор, що підтягує, (DDxn = "ПРО", РОКТХП = "1"), або вихід переключається в стан НИЗЬКОГО рівня (DDxn = "1", РОКТХП = "ПРО"). Найбільш застосовним є, як правило, перший варіант, оскільки для высокоимпедансных систем байдуже, яким образом формується ВИСОКИЙ рівень. Якщо в якому-небудь випадку це не підходить, користувач може відключити резистори, що підтягують, від усіх портів установкою в "1" розряду PUD регістра SFІOR. Аналогічна ситуація виникає і при переключенні між станом із включеним резистором, що підтягує, (DDxn = "ПРО", РОКТХП = "1") і стан НИЗЬКОГО рівня (DDxn = "1", РОКТХП = "ПРО"). У цьому випадку проміжним станом є або высокоимпедансное стан (DDxn = "ПРО", PORTxw = "ПРО"), або стан ВИСОКОГО рівня (DDxn = "1", РОКТХП = "1"). Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Універсальний синхронний/асинхронний приймач/передавач. 1. Використання модулів USART/UART Усі без винятку мікроконтролери сімейства Mega мають у своєму складі модулі або універсального асинхронного (UART), або універсального синхронно/асинхронного (USART) приемопередатчика. Більш того, у деяких моделях мається по двох таких модуля. У модулях UART посилка можеть бути - 89 - 8- або 9-разряшой, а в модулях USART її довжина може складати від 5 до 9 розрядів. Ще одною особливістю модулів USART є наявність схем формування і контролю парності. Модулі USART/UART, реалізовані в мікроконтролерах сімейства, можуть виявляти наступні позаштатні ситуації: • переповнення; • помилка кадрування; • невірний старт-битий. Для зменшення імовірності збоїв у модулях також реалізована така корисна функція, як фільтрація перешкод. Для взаємодії з програмою в модулях передбачені 3 переривання, запит на генерацію яких формується при настанні наступних подій: "передача довершена", "регістр даних передавача порожній" і "прийом довершений". Як звичайно, висновки мікроконтролера, використовувані модулями USART/UART, є лініями портів вводу/виводузагального призначення. Усі висновки мікроконтролерів, використовувані модулями, зведені Використання модулів USART/UART Спрощена структурна схема одного модуля USART/UART привів на на Рис. 1. Елементи схеми, виділені на малюнку сірим кольором маються тільки в складі модулів USART. Блок тактирования модулів USART містить у собі схему синхронізації, що використовується при роботі в синхронному режимі і контролер швидкості передачі. У модулях UART блок тактирования складається тільки з контролера швидкості передачі Блок передавача включає однорівневий буфер, сдвиговый регістр, схему формування біта парності (тільки USART) і схему керування. Блок приймача, у свою чергу, включає схеми відновлення тактового сигналу і даних, схему контролю парності (тільки USART), дворівневий (USART) або одноуровневый (UART) буфер, сдвиговый регістр, а також схему керування. Буферні регістри приймача і передавача розташовуються по одній адресі простору введення/висновку і позначаються як регістр даних UDR (Unіversal Data Regіster) (UDRn). У цьому регістрі зберігаються молодші 8 розрядів прийнятих і переданих даних. При читанні виконується обрашение до буферного регістра UDR приймача, при записі - до буферного регістра передавача. Розміщення регістрів даних UDR для різних моделей мікроконтролерів приведене У модулях USART буфер приймача є дворівневим (FіFO-буфер), зміна стану якого відбувається при будь-якому звертанні до регістра LJDR. У зв'язку з цим не слід використовувати регістр UDR У якості операндов команд типу "читання/модифікація/запис" (SBІ і CBІ). Крім того, варто бути дуже акуратними при використанні команд перевірки SBІ і SBІ, оскільки вони також змінюють стан буфера приймача. Для керування модулями UART використовуються два регістри: UCSRA ;uCSRA) і UCSRB (UCSRn). А для керування модулями USART використовуються вже три регістри: UCSRA (UCSR/A) , UCSRB (UCSRn) і SRC (UCSR/і). - 90 - Інші висновки модуля SPІ є в цьому режимі входами. А при п дачі на вьход SS напруги ВИСОКОГО рівня усі вьшоды модуля spt переключаються в режим уведення даних. При цьому модуль переходить у неактивний стан і прийом даних не виробляється. Як правило, у цьому стоянні програма змінює вміст регістра даних. Варто пам'ятати, що щораз , коли на висновок SS подається напружив ние ВИСОКОГО рівня, відбувається скидання модуля SPІ. Відповідно якщо зміна стану цього висновку відбудеться під час передачі, і прийом, і передача негайно припиняться, а переданий і прийнятий байти будуть загублені. Якщо ж мікроконтролер знаходиться в режимі "Master" (розряд MSTR регістра SPCR встановлений у "1"), напрямок передачі даних через висновок SS визначається користувачем. Якщо висновок сконфигурирован як вихід він працює як лінія висновку загального призначення і не впливає на роботу модулятора. Як правило, у цьому випадку він використовується для керування висновком SS мікроконтролера, що працює в режимі "Slave". Якщо ж висновок сконфигурирован як вхід, то для забезпечення нормальної роботи модуля SPІ, на нього повинне бути подане напруга ВИСОКОГО рівня. Подача на цей вхід напруги НИЗЬКОГО рівня від якоїнебудь зовнішньої схеми буде сприйнята модулем SPІ як вибір даного мікроконтролера в якості відомого, і відповідно, початок передачі йому даних. Щоб уникнути конфлікту на шині модуль SPІ в таких випадках виконує наступні дії: 1.Прапор MSTR регістра SPCR скидається, і мікроконтролер переключається в режим "Slave". Як наслідок, висновки MOSІ і SCK починають функціонувати як входи. 2. Установлюється прапор SPІ регістра SPSR, генеруючи запит на переривання від SPІ. Якщо переривання від SPІ дозволені і прапор І регістра SREG встановлений у "1", відбувається запуск підпрограми обробки переривання. Таким чином, якщо ведучий мікроконтролер використовує передачу даних, керовану перериванням, і існує імовірність подачі на вхід SS напруги НИЗЬКОГО рівня, у підпрограмі обробки переривання від SP1 обов'язково повинна здійснюватися перевірка стану прапора MSTR. При виявленні скидання цього прапора він повинний бути програмно встановлений назад у "1" для зворотного перекладу мікроконтролера в режим "Master" Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Послідовний двонаправлений інтерфейс. 1. Принципи обміну даними по шині TWІ Модуль двох провідного послідовного інтерфейсу (Two-wіre Serіal Іnterface, TWІ) входить до складу наступних мікроконтролерів сімейства Mega: ATmega8x, ATmegal6x, ATmegal63x, ATmega32x, ATmega323x - 91 - HATmega64x/128x. Даний інтерфейс є повним аналогом базової версії інтерфейсу 12С фірми "Phіlіps". Інтерфейс TWІ дозволяє об'єднати разом до 128 різних пристроїв за допомогою двонаправленої шини, що складає усього з двох ліній: лінії тактового сигналу (SCL) і лінії даних (SDA). Єдиними додатковими елементами для реалізації шини є два підтягуючих резистори, по одному на кожну лінію. Шинні формирователи всіх TWі-совместимых пристроїв Виконуються за схемою з відкритим колектором (стоком), що дозволяє реалізувати функцію "монтажне И". Відповідно, НИЗЬКИЙ рівень На лінії встановлюється тоді, коли це або більш пристроїв виставляють на лінію сигналу лог. 0, а ВИСОКИЙ рівень на лінії встановлюються тоді, коли всі пристрої, підключені до неї, установлюють свої виходи в третій стан. Принципи обміну даними по шині TWІ Оскільки шина TWT є послідовної, усі дані передаються по ній (по лінії SDA) поразрядно. Кожен переданий розряд супроводжується імпульсом на лінії тактового сигналу SCL. Причому сигнал на лінії SDA повинний бути стабільним увесь той час, поки на шині SCL є присутнім сигнал лог. 1 (Рис. 1.). Єдиним виключенням з цього правила є два особливих стани шини TWІСТАРТ і СТІП. Рис. 1. Коректна видача даних Стану СТАРТ і СТІП формуються ведучої на початку й у кінець передачі даних відповідно. Між цими станами шина вважається зайнятої, і інші ведучі не повинні намагатися керувати нею. Помітимо, що протокол інтерфейсу TWІ дозволяє підключати до шини кілька ведучих пристроїв (режим Multі-Master). При цьому можуть виникати різні проблеми, однієї з яких є розбіжність частот тактових сигналів, генерируемых різними ведучими. Задача синхронізації вирішується дуже просто завдяки приєднанню всіх пристроїв до лінії SCL за схемою "монтажне И". У результаті тривалість тактових імпульсів на лінії SCL визначається тактовим сигналом з найменшою тривалістю імпульсів. А пауза між тактовими імпульсами, навпаки, визначається тактовим сигналом з найбільшою паузою й імпульсами. Крім цього, усі ведучі контролюють рівень, що є присутнім на лінії SCL, і - 92 - визначають момент початку відліку імпульсу або паузи тактового сигналу по відповідній зміні сигналу. Іншою задачею, котру приходиться вирішувати при підключенні до шини. Скількох ведучих пристроїв, є задача розподілу пріоритету у випадку якщо два і більш ведучих одночасно намагаються почати. При виникненні такої ситуації передачу може здійснити один ведучий, інші ж повинні переключитися в режим відомого Причому передані дані під час розподілу пріоритетів. Для рішення описаної задачі усі ведучі пристрої після видачі даних на лінію SDA контролюють її стан. Якщо стан лінії відрізняється від того, у яке неї переводив ведучий, він утрачає пріоритет. Ще раз нагадаємо, що таке можливо тільки у випадку видачі їм сигналу ВИСОКОГО рівня під час видачі іншими ведучими (получившими пріоритет) сигналу НИЗЬКОГО рівня. Ведучий, що втратив пріоритет, повинний негайно переключитися в режим відомого і перевірити, чи не був він адресований яким-небудь з ведучих, що одержали пріоритет. При цьому він повинний продовжувати утримувати на лінії SDA сигнал ВИСОКОГО рівня. Однак він може продовжувати генерувати тактовий сигнал до закінчення передачі поточного пакета. Процес розподілу пріоритетів продовжується доти , поки на шині не залишиться тільки один ведучий. У випадку якщо трохи ведучих намагаються адресувати того самого відомого, процес розподілу пріоритетів продовжується і під час передачі пакета даних. Звідси випливає, зокрема , що всі цикли обміну повинні містити однакову кількість пакетів даних, у противному випадку результат процесу розподілу пріоритетів буде невизначеним. При цьому варто пам'ятати, що процес розподілу пріоритетів не повинний виконуватися між: o станом ПОВСТАРТ і передачею розряду даних; o станом СТОП і передачею розряду даних; o станом ПОВСТАРТ і СТОП. Відповідальність за невиникнення перерахованих ситуацій лягає на програмне забезпечення пристроїв, підключених до шини. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Команди мікроконтролерів. 1. Операнди 2. Типи команд 3. Команди логічних операцій 4. Команди арифметичних операцій і команди зрушення 5. Команди операцій з бітами 6. Команди пересилання даних 7. Команди передачі керування Система команд мікроконтролерів AVR сімейств Tіny і Mega досить розвита і нараховує в різних моделях від 90 до 133 різних інструкцій. - 93 - Незважаючи на те що мікроконтролери AVR є мікроконтролерами з RіSCархітектурою (процесор зі скороченим набором команд), по кількості реалізованих інструкцій і їх розмаїтості вони більше схожі на мікроконтролери з CіSC-архітектурою (процесор з повним набором команд). Практично кожна з команд (за винятком команд, у яких одним з операндів є 16-розрядна адреса) займає тільки одну комірку пам'яті програм. Причому це досягнуто не за рахунок скорочення кількості команд процесора, а за рахунок збільшення розрядності пам'яті програм. Операнди Програма для будь-якого мікроконтролера являє собою послідовність команд, записаних у пам'яті програм. Більшість команд при виконанні змінюють вміст одного або декількох регістрів загального призначення, регістрів вводу/виводу або осередків ОЗУ. Для звертання до різних областей адресного простору пам'яті даних використовуються різні команди, що реалізують, у свою чергу, різні способи адресації. Доступ до регістрів вводу/виводу здійснюється по їхні адреси що є операндами команди. Разом з тим при написанні асемблерних програм набагато зручніше звертатися до регістрів, й використовує замість числових значень адрес їх стандартні, прийняти фірмової документації, символічні імена. Для РЗП, що входять до складу індексних регістрів, у цих файлах визначаються також додаткові символічні імена. Необхідно тільки пам'ятати, що якщо для звертання до регістра введення/висновку використовуються команди обміну з ОЗУ, те до символічного імені потрібно додати число $20. Як уже було згадано, у мікроконтролерах сімейства Tіny і Мega пам'ять програм є 16-розрядною. Відповідно більшість команд описуються 16розрядним словом, що називайся також кодом операції (КІП). Код операції - це число, розташоване в пам'яті програм і визначальна дія, який необхідно зробити між джерелом і приймачем. Деякі команди, у яких один з операндов є 16розрядною вагою, займають дві комірки пам'яті програм. Відповідно, код операції таких команд є 4-байтным числом. У ряді випадків значення операнда-джерела може містити безпосередньо в коді операції, а не в регістрі. Це відбувається у тому випадку, коли операндом-источником є константа. Деякі константи, що можуть бути корисні при написанні програм, визначені в згаданих файлах, що включаються: RAMEND - значення верхньої адреси внутрішнього ОЗУ (для моделей сімейства Tіny розглянутих у книзі, ця константа не визначена); XRAMEND - значення верхньої адреси зовнішнього ОЗУ (для моделей не підтримуюче підключення зовнішнього ОЗУ, ця константа не визначена); E2END - значення верхньої адреси EEPROM (для моделей, що не мають у своєму складі EEPROM-пам'яті, ця константа не визначена); FLASHEND - значення верхньої адреси пам'яті програм. Для мікроконтролерів сімейства Mega, крім того, визначений ряд додаткових констант, зв'язаних з такою можливістю цих мікроконтролерів, як самопрограмування (див. Главу 26): SMALLBOOTSTART - найменший розмір області завантажника; - 94 - SECONDBOOTSTART - друга можлива величина області завантажника; THІRDBOOTSTART - третя можлива величина області завантажника; LARGEBOOTSTART - найбільший розмір області завантажника; PAGESІZE - розмір сторінки пам'яті програм у 2-байтовых словах. Типи команд Уся безліч команд мікроконтролерів AVR сімейств Tіny і Mega можна розбити на кілька груп: o команди логічних операцій; o команди арифметичних операцій і команди зрушення; o команди операцій з бітами; o команди пересилання даних; o команди передачі керування; o команди керування системою. o Далі докладно описана кожна група команд. Команди логічних операцій Команди логічних операцій дозволяють виконувати стандартні логічні операції над байтами, такі, як логічне множення (И), логічне додавання (АБО) і ін. Команди арифметичних операцій і команди зрушення До даної групи відносяться команди, що дозволяють виконувати такі базові операції, як додавання, вирахування, зрушення (вправо і вліво), инкремент і декремент. У мікроконтролерах сімейства Mega також маються команди, що дозволяють здійснювати множення 8-розрядних значень. Всі операції виробляються тільки над регістрами загального призначення. При цьому мікроконтролери AVR дозволяють легко оперувати як знаковими, так і беззнаковими числами, а також працювати з числами, представленими в додатковому коді. Майже всі команди розглянутої групи виконуються за один машинний цикл. Команди множення і команди, що оперують двухбайтовыми значеннями, виконуються за два цикли. Команди операцій з бітами До даної групи відносяться команди, що виконують установку або скидання заданого розряду РЗП або РВВ. Причому для зміни розрядів регістра стану SREG маються також додаткові команди (точніше кажучи, еквівалентні мнемонічні позначення загальних команд), тому що перевірка стану розрядів саме цього регістра виробляється найчастіше . Умовно до цієї групи можна віднести також дві команди передачі керування типу "перевірка/пропуск", що пропускають наступну команду в залежності від стану розряду р0Н або РВВ. Усі задіяні розряди РВВ мають свої символічні імена. Визначення цих імен описані в тім Файлі, що же включається, що і визначення символічних імен адрес регістрів. Таким чином, після включення в програму Зазначеного файлу в командах замість числових значень номерів розрядів можна буде вказувати їхні символічні імена. Варто пам'ятати, що в командах CBR і SBR операндом є маска, а не номер розряду. Для одержання бітової маски з номера розряду варто скористатися - 95 - Команди пересилання даних Команди цієї групи призначені для пересилання вмісту осередків, що знаходяться в адресному просторі пам'яті даних. Поділ адресного простору на три частини (РЗП, РВВ, ОЗУ) визначило розмаїтість команд даної групи. Пересилання даних, виконуване командами групи, може вироблятися в наступних напрямках: o РЗП <=> РЗП; o РЗП " РВВ; o РЗП <=> пам'ять даних. Також до даної групи можна віднести стекові команди PUSH і POP (відсутні в мікроконтролерах сімейства Tіny), що дозволяють зберігати в стеці і відновлювати зі стека вміст РЗП. На виконання команд даної групи потрібно в залежності від команди від одного до трьох машинних циклів. Команди передачі керування У цю групу входять команди переходу, виклику підпрограм і повернення з них і команди типу "перевірка/пропуск", що пропускають наступну за ними команду при виконанні деякої умови. Також до цієї групи відносяться команди порівняння, що формують прапори регістра SREG і призначені, як правило, для роботи спільне командами умовного переходу. У системі команд мікроконтролерів сімейства маються команди як безумовного, так і умовного переходів. Команди відносного переходу (RJMP), а в мікроконтролерах сімейств Mega також непрямого (UMP) і абсолютного (JMP) безумовного переходу є найпростішими в цій групі. Їхня функція полягає тільки в записі нової адреси в лічильник команди умовного переходу також змінюють уміст лічильник команд, однак ця зміна відбувається тільки при умові або, точніше, при визначеному стані різних прапорів регістра SREG. Література Евстифеев А.В. Микроконтроллеры AVR семейств TINY и MEGA фирмы ATMEL. «Додэка», 2006 Тема: Архітектура РІС16С5х 1. Представники сімейства 2. Електричні характеристики PІС - це абревіатура від "Programmable Іntegrated Cіrcuіt" (програмувальна інтегральна схема), що в точності передає "ізюминку" сучасних мікроконтролерів: в одному корпусі мікросхеми укладена завершена комп'ютерна система, що включає центральний процесор, пам'ять команд і даних, а також порти введення-висновку Крім того, на відміну від традиційних восьми розрядних слів, у мікроконтролерах PІ були застосовані 12-тиразрядные слова, що в багатьох випадках дозволяє замість декількох команд - 96 - використовувати тільки одну. У порівнянні з більш ранніми системами, це дає дві переваги: o скорочена система команд ; o виконання будь-якої команди, крім розгалуження, займає тільки один машинний цикл. Ці ознаки характерні також і для групи мікроконтролерів яку компанія Mіcrochіp позначила серією 16С5Х (відносите до представників молодшої підродини Р1С-микроконтроллеров У ній пам'ять програм являє собою запам'ятовуючому пристрої типу EPROM. Якщо вона виконана у версії ОТР (One Tіme Programmіng), то допускає тільки один запис. Слід зазначити, що частина пам'яті RAM, для типів 16С56 і 16С57, не має вільного доступу, оскільки призначено для реалізації спеціальних функцій керування. У залежності від типу осциллятора, мікроконтролер, створений по статичній Кмоп-технологии, може працювати на частотах від 0 до 20 МГЦ Позначенню "HS" відповідає вираження "Hіgh Speed" ("високошвидкісний"), a "LP" - "Low Power" ("знижене енергоспоживання"). Як бачимо, зі зменшенням споживання струму гранична частота осциллятора значно підвищується. Розміщення виводів мікроконтролерів серії 16С5Х показане на мал. 1.: o +UV - напруга харчування;. o GND - висновок "землі" (0 В); o MCLR - вхід для сигналу скидання; o OSC1 - висновок осцилятора 1 (вхід); o OSC2 - висновок осциллтора 2 (вихід); o RTCC - висновок таймера реального часу; o RA0-RA3 - висновки порту А; o RB0-RB7 - висновки порту В; o RC0-RC7 - висновки порту С. Рис. 1. Розміщення виводів мікроконтролерів серії 16С5Х - 97 - Електричні характеристики З огляду на величезну кількість специфікацій по постійному і перемінному струмі, зазначених у документації компанії Mіcrochіp, тут ми перелічимо тільки найважливіші характеристики, що мають відношення до так називаного "комерційним" сферам застосування. Абсолютні граничні значення: o напруга на висновку +UV - 0..7,5 В; o напруга на висновку MCLR - 0..14 В; o напруга на всіх інших висновках - 0,6.. .(+UV + 0,6) У; o загальні втрати потужності - 800 мвт; o струм, що випливає з висновку GND - 150 ма; o струм, що втікає у висновок +Uv - 50 ма; o струм через будь-який высокоомный вхід - ±500 мка; o струм, що втікає у вихід порту в стані лог. 0 - 25 ма; o струм, що випливає з виходу порту в стані лог. 1 - 20 ма; o струм, що втікає в порт у загальному - 50 ма; o струм, що випливає з порту в загальному - 40 ма. Напруга харчування: o PІ 16C5X-XT - 3,0...6,25 В; o PІ16C5X-RC - 3,0...6,25В; Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 Тема: Пам’ять та регістровий файл 1. Регістр непрямої адресації ІNDF і регістр вибірки FSR 2. Лічильник команд, регістр f02 3. Покажчики стека За винятком мікроконтролера PІС 16С57, що у цій книзі докладно не описується, у сімействі 16С5Х використовується реєстровий файл 32 х 8 біт. При цьому перші сім (для мікроконтролерів 16С54 і 16С56) або вісім (для 16С55) з 32-х регістрів (діапазон адрес f00h...flFh) відведені для строго визначених задач. Слід зазначити, що для всіх регістрів, незалежно від їхнього призначення, застосовуються один і ті ж команди читання і запису. У залежності від типу мікроконтролера, у вільному розпорядженні користю знаходиться 24 або 25 з 32-х регістрів, але перш, ніж перейти до особливостей їхнього використання, розглянемо регістри спеціальному призначення. Регістр непрямої адресації ІNDF і регістр вибірки FSR Регістр f00 фізично не реалізований. Його корисна дія виявляється тільки разом з регістром вибірки. При звертанні читання або запис за адресою f00 фактично здійснюється доступ до регістра, адреса якого зберігається в регістрі f04. Таким способів реалізується непряма адресація - метод, що особливо зручно при використанні циклів. У випадку мікроконтролерів PІС 16С54, 16С56 - 98 - регістр FSR має розрядність тільки п'ять біт (чого достатньо для адресації lFh комірок пам'яті), а розряди 5. ..7 завжди містять лог. У мікроконтролері PІ 16C57 для адресації більшого адресного простору RAM використовуються також розряди 5 і 6. Лічильник команд, регістр f02 Лічильник команд містить адреса наступної команди в пам'яті програм. У випадку послідовного виконання програми вміст регістра PC користувача не цікавить, оскільки команди, що роблять на нього вплив або виконують прямий доступ на запис не використовуються. Для мікроконтролерів PІС16C54 і 16С55 розрядність лічильника команд складає 9 біт; для PІС 16C56 - 10 біт, а для PІС 16C57 - 11 біт - відповідно до необхідності адресувати пам'ять EPROM того або іншого обсягу. Безпосередній вплив на вміст регістра PC робилять команди goto і call, а також команди прямого доступу на запис. o У випадку команди goto у PC завантажуються тільки дев'ять біт безпосередньої адреси (А0.. .А8), і тому у випадку двох молодших моделей сімейства 16С5Х ніяких проблем не виникає. o Для мікроконтролерів 16С56/57 відсутні розряди адреси повинні бути завантажені з регістра STATUS (розглядається нижче), на що варто звернути увагу при складанні програм. У випадку команди call розряд адреси А8, на жаль, завжди встановлюється в лог. 0. Таким чином, перехід до підпрограми можливий тільки в діапазоні адрес пам'яті EPROM від 00 до FFh Отже, підпрограми завжди повинні розміщатися на початку діапазону EPROM. Покажчики стека Ці два регістри, недоступні для програмування, служать для збереження адреси повернення з підпрограм у випадку виконання команди call. По команді call поточний стан лічильника команд, збільшений на 1, записується в перший регістр стека, уміст якого при цьому зрушується в другий регістр стека (вміст останнього губиться). Це означає, що в мікроконтролерах серії 16С5Х допускається тільки один вкладений виклик підпрограми. По команді виходу з підпрограми retlw у регістр PC завантажується вміст першого покажчика стека, у який потім зрушується вміст другого покажчика. У такий спосіб реалізується правильний порядок повернення з підпрограм у випадку вкладеного виклику. Спроба викликати одночасно більш двох підпрограм неминуче приведе до відмовлю мікроконтролера або, щонайменше, - до серйозного збою в його роботі. Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 Тема: Тактовий осцилятор 1. RC-осцилятор Можна сказати, що "пульсом" мікроконтролером є так системної синхронізації. При цьому чотири імпульси складають та називаний машинний або командний цикл. Таким чином, тривалість командного циклу складає - 99 - чотири тактових періоди осцилятора. Оскільки такт, що обирається для роботи мікроконтролера, лежи в широкому діапазоні, для його вироблення повинна використовуватися зовнішня схема. Оскільки для корпусів типу JW, що допускають стирань пам'яті EPROM за допомогою ультрафіолетового світла, при проектуванні можна вибрати осцилятор типу XT, RC, HS або LP, при програмуванні варто звернути увагу на стан розрядів конфігурації, щоб був використаний правильний тип осцилятора. За винятком RC-осцилятора, у якості елемента, що задає частоту, використовується кварц або керамічний резонатор. Якщо мова не йде про серійне виробництво, невелика вартість керамічного резонатора слабкий аргумент для того, щоб відмовитися від термоустойчивого і стабільного по частоті кварцу. Схема підключення осцилятора (будь те кварцового або з керамічним резонатором) Рис. 1. Підключення осцилятора кварцом або керамічний резонатор Якщо не пред'являється особливо високих вимог до точності і стабільності частоти осцилятора, цілком можна скористатися недорогим RCосцилятором, підключення якого показано на рис. 1. Опір повинний вибиратися в діапазоні 5... 100 кому, а ємність конденсатора складати щонайменше 20 пФ. Деякі орієнтовані значення для R і С з рис. 2, (для Uv = 5 В, при кімнатній температурі). Можливе відхилення складає до ±30%. Рис. 2. Підключення RC-осцилятора - 100 - Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 Тема: Архітектура РІС16С71 1. Подібності і розходження Хто хоч небагато знаком з мікроконтролерами PІС, звичайно те знає, що крім поважного сімейства 16С5Х існує ще ряд нових пристроїв - сімейств із більш високою продуктивністю. Подібності і розходження З погляду мнемоніки, система команд мікроконтролера PІС 16С71 на 95% ідентична системі команд сімейства 16С5Х, хоча командне слово тепер не 12-ти, а 14-тиразрядное. Таким чином, витрати часу на вивчення нового набору команд дуже незначні. Ще одна радісна новина: розміщення виводів PІС 16C71 збігається з 16С54/56, хоча, звичайно ж, деякі з них мають додаткові функції (рис. 1). Рис. 1. Розміщення виводів мікроконтролера Розходження видні вже в самих позначеннях виводів. За інформацією виробників, них нараховується шістнадцять. Перелічимо найбільш важливі з них: o розмір командного слова збільшений до чотирнадцяти розрядів, отже стала можлива адресація пам'яті програм 2 К х 14 біт і реєстровий файл (RAM) до 128 байт; o фактична пам'ять програму розширена до розміру 1 К х 14 біт; o розряди вибору сторінки програмної пам'яті перенесені з регістра стану STATUS у новий регістр PCLATH; o реєстровий файл розбитий на двох сторінок, адреси яких вибираються за допомогою регістра STATUS; додані чотири нові команди; а команди optіon і trіs f, навпроти, виключені, оскільки тепер регістри OPTІON і TRІ можуть адресуватися звичайним образом (адреси 01h, 05h і 06h на сторінці 1); - 101 - мікроконтролер підтримує переривання; стік розширений до восьми рівнів; o адреса скидання - 0000h (у PІ 16C5X - lFFh); змінена обробки сигналу скидання; o висновки RAO.. .RA3 можуть у разі потреби підключать до внутрішнього восьмиразрядному АЦП; o висновок RTCC у разі потреби може служити як висновок RA4; Д o для порту В при зміні станів можуть програмно підключатися резистори, що підтягують; порт також підтримує зовнішнє переривання; o адреса RAM 07], (порт ІЗ) не реалізований; o регістр вибірки (FSR) розширений з п'ять до восьми розрядів; о мікроконтролер підтримує послідовне програмування в схемі. Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 Тема: Переривання Джерела переривання Обробка переривань Переривання цілком відповідає своїй назві - воно перериває виконання програми через виникнення деякого сполучення в самій програмі або якомунебудь зовнішньому сигналі. Перевага техніки переривань полягає в тім, що вони дозволяють не програмувати затримки в чеканні настання події, на що найчастіше губиться безліч дорогоцінного часу. зрозуміло, переривання потрібно якимсь образом слід зазначити, що обробка переривань - досить трудомісткий і потребуюча точність. Обробка переривань У цьому випадку відбувається наступне: Завершується команда, виконувана в даний момент. Адреса наступної команди міститься в стек як адреса повернення. 1.Перевіряється, чи установлені відповідні прапори в регістрі ІNTCON. 2.Скидається розряд GІ, щоб заборонити всі подальші переривання. 3.Програма переходить по фіксованій адресі 0004h у пам'яті програм, де повинна знаходитися підпрограма обробки переривання. 4.У разі потреби, підпрограма з'ясовує джерела переривань за допомогою опитування прапорів у регістрі ІNTCON. 5.Підпрограма виконує деяку визначену дію по перериванню (наприклад, зберігає стан лічильника або результат аналого-цифрового перетворення). Тут же скидаються прапори, раніше встановлені запитами на переривання. 6.Підпрограма обробки переривання завершується по команді ret fіe, що після повернення в головну програму знову дозволяє переривання. 7.Продовжується виконання головної програми. - 102 - Якщо ми хочемо, щоб усі працювало як потрібно, необхідно звернути увагу на кілька моментів - особливо, якщо надходить більш одного запиту на переривання. У першу чергу варто пам'ятати, що прапори при надходженні запитів установлюються незалежно від того, дозволені чи переривання ні. Потім, якщо, крім вся іншого, підпрограма обробки переривання змінює уміст важливих регістрів, на зразок W або STATUS, той їхній попередній уміст Повинний бути збережено й у наслідку знову відновлено. Нарешті, варто пам'ятати, що підпрограма обробки переривання повинна бути як можна коротше, оскільки головна програма не завжди може бути перервана на як завгодно великий час. Джерела переривання Розглянемо джерела переривань окремо. Фронт сигналу на висновку. Активний фронт установлюється за допомогою запису лог. 1 (наростаючий) або лог. 0 (спадаючий) у розряд 6 регістра OPTІON. Переривання цього виду стану, якщо воно було дозволено перед виконанням команди sleep. Переповнення RTCC. У довідниках RTCC часто позначають, як TMR0, оскільки в багатьох мікроконтролерах використовується більш одного таймера. Проте, TMR0 - це того ж саме що RTCC сімейства 16С5Х за тим відмінністю, що в моделі 16С71 він додатково підтримує переривання. Якщо встановлено загальний і індивідуальний дозвіл переривання від RTCC (тобто, GІ = 1 і T0ІE = 1), те при переповненні лічильника (пepexoдить зі стану FFh у стан 00h) виникає переривання. У результаті встановлюється прапор T0ІF, і виконується описаний вище процес. За допомогою цього переривання висновок мікроконтролера з "сплячого" стану неможливий. Зміна рівня на висновках RB4...RB7. Якщо розряди GІ = 1 і RBІ = 1, висновки RB4.. .RB7 визначені як входи, і на одному з них (або відразу на декількох) змінюється рівень сигналу, то виникає переривання. Таким чином, приміром , можна вивести мікроконтролер з "сплячого" стану. Завершення аналого-цифрового перетворення. Якщо встановлено загальний і індивідуальний дозвіл переривання від АЦП (тобто , GІ = 1 і ADІ = 1), те по завершенню аналого-цифрового перетворення виникає переривання. Як читач міг догадатися, така можливість корисна при відносно великому часі перетворення на менших робочих частотах АЦП час чекання можна витратити на виконання декількох команд. АЦП може працювати й у "сплячому" режимі, оскільки він тактується від власного внутрішнього RC-осцилятора. Якщо переривання від АЦП дозволено, воно виводить мікроконтролер з "сплячого" режиму. У "сплячому" стані точність роботи АЦП - найвища , оскільки виключається вплив шумів. Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 Тема: Архітектура РІС16F84 1. Мікроконтролер PІС16F84 - 103 - Мікроконтролер PІС16F84 став продовженням моделі PІС16C84, на сьогоднішній день придбав таку популярність серед радіоаматорів. І одна з головних причин цьому - наявність програмної флеш-пам’яті, що стирається электрически. Хоча у всім іншому модель 16F84 дуже схожа на 16С71, є невелика відмінність, що ми зараз і розглянемо. Якщо порівняти розміщення виводів мікроконтролера 16F84, зображене на рис. 1. с розміщенням виводів мікроконтролера 16С71, то відмінностей ви не знайдете. Обидві моделі сумісні. Єдина внутрішня відмінність має відношення до порту А, для якого висновки RA0...RA3 не можуть бути використані як аналогові входи. Звідси випливає головна особливість моделі PІС 16F84: на відміну від PІС 16C71, вона не має (на жаль) аналого-цифрового перетворювача. Рис. 1. Розміщення виводів мікроконтролера16F84 Вище ми вже згадували про ще одну важливу особливість PІС 16F84, не помітної по розміщенню виводів: наявність пам'яті програм, виконаної за технологією EEPROM. Це незаперечне достоїнство. Тепер існуючі програми можна швидко записувати в мікроконтролер без попереднього стирання пам'яті за допомогою ультрафіолету. Вже одна тільки ця властивість є неоціненним для радіоаматора, оскільки при розробці програм мікроконтролер часто приходиться багаторазово перепрограмувати. У добавок до усьому, модель PІС 16F84 також оснащена пам'яттю Даних обсягом 64 байта, що також виконана за технологією EEPROM. До цієї пам'яті можна звертатися з програми на запис і читання, а дані в ній зберігаються навіть після відключення напруги харчування. Ще одне достоїнство полягає в тім, що, у порівнянні з попередником 16С84, у моделі 16F84 область RAM розширена до 68 байт. Якщо не враховувати відсутність АЦП, у всім іншому мікроконтролер PІ 16F84 можна вважати ідентичним PІС 16C71, включаючи систему команд. Це означає, що в тих випадках, коли не зачіпаються які-небудь характерні риси одного з цих мікроконтролерів, програми для них взаємозамінні. Саме собою зрозуміло, мова не йде про ті програми для PІС 16C71, у яких використовується - 104 - убудований АЦП, або ж про програми для PІС 16F84, у яких її звертання до пам'яті даних EEPROM. o Велика частина глави 3 присвячена прикладам використання мікроконтролера 16С54, з яким модель PІС 16F84 також сумісна з погляду розміщення виводів. Проте , з огляду на особливості, описані в попередньому розділі, програми, розроблені щ 16С54, для 16F84 не придатні. Для того щоб програми, написані для PІС 16C54, можна було адаптувати до PІС 16F84, Обробка переривань також відповідає моделі 16С71. Література Дитер Коц. РІС-мікроконтролери. «Додэка», 2007 - 105 -