Вход на сайт Навигация по сайту Любить и уважать Бонус-счастливчики
|
Содержимое файла "007 _ .doc" (без форматирования) 2 РОЗРОБКА ПРИНЦИПОВОЇ СХЕМИ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ Приведемо короткий опис мікросхем, що були використані для розробки і побудови принципової схеми мікропроцесорної системи: 2.1 Структурна організація мікроконтролера КМ1816ВЕ51 Мікроконтролер виконан на основі високорівневої n-моп технології у корпусі БІС. Цоколевка корпуса МК51 і найменування висновків показані на рис. 2.1. Для роботи МК51 потрібно одне джерело електроживлення +5 В. Через чотири програмувальних порти введення/виводу МК51 взаємодіє із середовищем у стандарті ТТЛ схем із трьома станами виходу. Рисунок 2.1 — Цоколевка корпуса МК51 і найменування виводів [9] Корпус МК51 має два виводи для підключення кварцового резонатора, чотири виводи для сигналів, керуючих режимом роботи МК, і вісім ліній порту 3, що можуть бути запрограмовані користувачем на виконання спеціалізованих (альтернативних) функцій обміну інформацією із середовищем. 2.1.1 Основу структурної схеми МК51 (рис. 2.2) утворить внутрішня двонаправлена 8-бітна шина, що зв'язує між собою всі основні вузли і пристрої: резидентну пам'ять, АЛП, блок регістрів спеціальних функцій, пристрій керування і порти введення/виводу. Розглянемо основні елементи структури й особливості організації обчислювального процесу в МК51. 2.1.1.1 8-бітне АЛП може виконувати арифметичні операції додавання, вирахування, множення і розподіли; логічні операції И, ЧИ, що виключає ЧИ, а також операції циклічного зрушення, скидання, інвертування і т.п. В АЛП маються програмно недоступні регістри Т1 і Т2, призначені для тимчасового збереження операндів, схема десяткової корекції і схема формування ознак. Найпростіша операція додавання використовується в АЛП для ікрементування регістрів, просування регістра-покажчика даних і автоматичного обчислення наступного адреси РПП. Найпростіша операція вирахування використовується в АЛП для декрементування регістрів і порівняння перемінних. Рисунок 2.2 — Основа структурної схеми МК51 [9] Найпростіші операції автоматично утворять "тандеми" для виконання в АЛП таких операцій, як, наприклад, інкрементування 16-бітних реєстрових пар. В АЛП реалізується механізм каскадного виконання найпростіших операцій для реалізації складних команд. Так, наприклад, при виконанні однієї з команд умовної передачі керування по результаті порівняння в АЛП тричі інкрементується PC, двічі виробляється читання з РПД, виконується арифметичне порівняння двох перемінних, формується 16-бітна адреса переходу і приймається рішення про тім, чи робити, чи не робити перехід по програмі. Усі перераховані операції виконуються в АЛП усього лише за 2 мкс. Важливою особливістю АЛП є його здатність оперувати не тільки байтами, але і бітами. Окремі програмно-доступні біти можуть бути встановлені, скинуті, інвертовані, передані, перевірені і використані в логічних операціях. Ця здатність АЛП оперувати бітами настільки важлива, що в багатьох описах МК51 говориться про наявність у ньому "булевського процесора". Для керування об'єктами часто застосовуються алгоритми, що містять операції над вхідними і вихідними булевськими перемінними (істина/неправда), реалізація яких засобами звичайних мікропроцесорів сполучена з визначеними труднощами. Таким чином, АЛП може оперувати чотирма типами інформаційних об'єктів: булевськими (1 біт), цифровими (4 біти), байтними (8 біт) і адресними (16 біт). В АЛП виконується 51 різна операція чи пересилання перетворення цих даних. Тому що використовується 11 режимів адресації (7 для даних і 4 для адрес), шляхом комбінування "операція / режим адресації" базове число команд 111 розширюється до 255 з 256 можливих при однобайтном коді операції. 2.1.1.2 Пам'ять програм і пам'ять даних, розміщені на кристалі МК51, фізично і логічно розділені, мають різні механізми адресації, працюють під керуванням різних сигналів і виконують різні функції. Пам'ять програм (ROM чи EPROM) має ємність 4 Кбайта і призначена для збереження команд, констант, що керують слів ініціалізації, таблиць перекодування вхідних і вихідних перемінних і т.п. РПП має 16-бітну шину адреси, через яку забезпечується доступ з лічильника чи команд із регістра-покажчика даних. Останній виконує функції базового регістра при непрямих переходах по чи програмі використовується в командах, що оперують з таблицями. Пам'ять даних (RAM) призначена для збереження перемінних у процесі виконання прикладної програми, адресується одним байтом і має ємність 128 байт. Крім того, до адресного простору РПД примикають адреси регістрів спеціальних функцій (РСФ), що перераховані в табл. 2.1. Пам'ять програм, так само як і пам'ять даних, може бути розширена шляхом підключення зовнішніх БІС до 64 Кбайт. Таблиця 2.1 — Блок регістрів спеціальних функцій Символ Найменування Адреса * АСС Акумулятор 0Е0Н * У Регістр-розширник акумулятора 0F0H * PSW Слово стану програми 0D0H SP Регістр-покажчик стека 81Н DPTR Регістр-покажчик даних (DPH) 83Н (DPL) 82Н Р0 Порт 0 50H P1 Порт 1 30Н Р2 Порт 2 0А0Н РЗ Порт 3 0В0Н IP Регістр пріоритетів 0В8Н 1Е Регістр маски переривань 0А8Н TM0D Регістр режиму таймера/лічильника 89H * TC0N Регістр керування/статусу таймера 88Н ТН0 Таймер 0 (старший байт) 8СН Продовження таблиці 2.1 Символ Найменування Адреса TL0 Таймер 0 (молодший байт) 8АН ТН1 Таймер 1 (старший байт) 8DH TL1 Таймер 1 (молодший байт) 8ВН * SCON Регістр керування прийомопередавачем 98Н SBUF Буфер прийомопередавачем 99Н PCON Регістр керування потужністю 8711 2.1.1.3 Акумулятор є джерелом операнда і місцем фіксації результату при виконанні арифметичних, логічних операцій і ряду операцій передачі даних. Крім того, тільки з використанням акумулятора можуть бути виконані операції зрушень, перевірка на нуль, формування прапора паритету і т.п. При виконанні багатьох команд в АЛП формується ряд ознак операції (прапорів), що фіксуються в регістрі PSW. У табл. 2.2 приводиться перелік прапорів PSW, даються їхні символічні імена й описуються умови їхнього формування. Найбільше "активним" прапором PSW є прапор переносу, що бере участь і модифікується в процесі виконання безлічі операцій, включаючи додавання, вирахування і зрушення. Крім того, прапор переносу (З) виконує функції "булевого акумулятора" у командах, що маніпулюють з бітами. Прапор переповнення (OV) фіксує арифметичне переповнення при операціях над цілими числами зі знаком і уможливлює використання арифметики в додаткових кодах. АЛП не керує прапорами селекції банку регістрів (RS0, RS1), і їхнє значення визначається. Широке поширення одержало представлення про те, що в мікропроцесорах, архітектура яких спирається на акумулятор, більшість команд працюють з ним, використовуючи адресацію "за замовчуванням" (неявну). Формат слова стану програми (PSW). Таблиця 2.2 — Перелік прапорів PSW Символ Позиція Ім'я і призначення З PSW.7 Прапор переносу. Встановлюється і скидається апаратурними чи засобами програмою при виконанні арифметичних і логічних операцій АС PSW.6 Прапор допоміжного переносу. Встановлюється і скидається тільки апаратурними засобами при виконанні команд додавання і вирахування і сигналізує про чи перенос заеме в біті 3 F0 PSW.5 Прапор 0. Може бути встановлений, скинутий чи перевірений програмою як прапор, специфицируемый користувачем RS1 RSW.4 Вибір банку регістрів. Встановлюється і скидається RS0 PSW.3 програмою для вибору робочого банку регістрів (див. Примітка) OV PSW.2 Прапор переповнення. Встановлюється і скидається апаратно при виконанні арифметичних операцій . PSW.1 Не використовується Р PSW.0 Прапор паритету. Встановлюється і скидається апаратно в кожнім циклі команди і фіксує непарне/парне число одиничних біт в акумуляторі, тобто виконує контроль по парності У МК51 справа обстоїть інакше. Хоча процесор у MK51 має у своїй основі акумулятор, однак він може виконувати безліч команд і без участі акумулятора. Наприклад, дані можуть бути передані з будь-якого осередку РПД у будь-який регістр, будь-який регістр може бути завантажений безпосереднім операндом і т.д. Багато логічних операцій можуть бути виконані без участі акумулятора. Крім того, перемінні можуть бути інкриментовані, декрементовані і перевірені (test) без використання акумулятора. Прапори і керуючі біти можуть бути перевірені і змінені аналогічно. 2.1.1.5 Кварцовий резонатор, що підключається до зовнішніх висновків X1 і Х2 корпуса МК51, керує роботою внутрішнього генератора, що у свою чергу формує сигнали синхронізації. Пристрій керування МК51 на основі сигналів синхронізації формує машинний цикл фіксованої тривалості, рівним 12 періодам чи резонатора шістьом станам первинного керуючого автомата (S1—S6). Кожен стан керуючого автомата містить двох фаз (Р1, Р2) сигналів резонатора. У фазі Р1, як правило, виконується операція в АЛП, а у фазі Р2 здійснюється межрегистрова передача. Увесь машинний цикл складається з 12 фаз, починаючи з фази S1P1 і кінчаючи фазою. S6P2. Усі заштриховані сигнали є внутрішніми і недоступні користувачу МК51 для контролю. Зовнішніми, що спостерігаються сигналами є тільки сигнали резонатора і строба адреси зовнішньої пам'яті. Сигнал ALE формується двічі за один машинний цикл (S1P2—S2P1 і S4P2-S5P1) і використовується для керування процесом звертання до зовнішньої пам'яті. Більшість команд МК51 виконується за один машинний цикл. Деякі команди, що оперують з 2-байтными чи словами зв'язані зі звертанням до зовнішньої пам'яті, виконуються за два машинних цикли. Тільки команди розподілу і множення вимагають чотирьох машинних циклів. На основі цих особливостей роботи пристрою керування МК51 виробляється розрахунок часу виконання прикладних програм. 2.1.1.4 8-бітний покажчик стека (SP) може адресувати будь-яку область РПД. Його вміст інкрементується перш, ніж дані будуть запам’ятовані в стеці в ході виконання команд PUSH і CALL. Уміст SP декрементуються після виконання команд POP і RET. Подібний спосіб адресації елементів стека називають предінкрементним/постдекрементним. У процесі ініціалізації МК51 після сигналу RST у SP автоматично завантажується код 07Н. Це значить, що якщо прикладна програма не перевизначає стек, то перший елемент даних у стеці буде розташовуватися в осередку РПД з адресою 08Н. Двобайтний регістр-покажчик даних (DPTR) звичайно використовується для фіксації 16-бітної адреси в операціях зі звертанням до зовнішньої пам'яті. Командами МК51 регістр-покажчик даних може бути використаний чи як 16-бітний регістр, чи як два незалежних 8-бітних регістри (DPH і DPL). Таймер/лічильник. У складі засобів МК51 маються реєстрові пари із символічними іменами ТН0, TL0 і TH1, TL1, на основі яких функціонують два незалежних програмно-керованих 16-бітних таймери/лічильника подій. Буфер послідовного порту. Регістр із символічним ім'ям SBUF являє собою два незалежних регістри - буфер приймача і буфер передавача. Завантаження байта в SBUF негайно викликає початок процесу передачі через послідовний порт. Коли байт зчитується з SBUF, це значить, що його джерелом є приймач послідовного порту. Регістри спеціальних функцій. Регістри із символічними іменами IP, IE, TMOD, TCON, SCON і PCON використовуються для фіксації і програмної зміни керуючих біт і біт стану схеми переривання, таймера/лічильника, прийомопередатчика послідовного порту і для керування потужністю електроживлення МК51. 2.1.2 Усі чотири порти МК51 призначені для уведення/виводу інформації побайтно. Схемотехніка портів уведення/виводу МК51 для одного біта показана на рис. 2.3 (порти 1 і 2 мають приблизно таку ж структуру, як і порт 3). Кожен порт містить керовані регістр-засувку, вхідний буфер і вихідний драйвер. Вихідні драйвери портів 0 і 2, а також вхідний буфер порту 0 використовуються при звертанні до зовнішньої пам'яті (ВП). При цьому через порт 0 у режимі тимчасового мультиплексування спочатку виводиться молодший байт адреси ВП, а потім чи видається, чи приймається байт даних. Через порт 2 виводиться старший байт адреси в тих випадках, коли розрядність адреси дорівнює 16 біт. Усі виводи порту 3 можуть бути використані для реалізації альтернативних функцій, перерахованих у табл. 2.3. Альтернативні функції можуть бути задіяні шляхом запису 1 у відповідні біти регістра-засувки (РЗ.0—Р3.7) порту 3. Порт 0 є двонаправленим, а порти 1, 2 і З — квазидвонаправленими. Кожна лінія портів може бути використана незалежно для уведення/виводу інформації. Для того щоб деяка лінія порту використовувалася для введення, у D-тригер регістра-засувки порту повинна бути записана 1, що закриває моп-транзистор вихідного ланцюга. По сигналі RST у регістри-засувки всіх портів автоматично записуються одиниці, що набудовують їх тим самим на режим уведення. Усі порти можуть бути використані для організації уведення/виводу інформації з двонаправленої ліній передачі. Рисунок 2.3 — Схемотехніка портів уведення/виводу МК51 для одного біта [9] Однак порти 0 і 2 не можуть бути використані для цієї мети у випадку, якщо МК-система має зовнішню пам'ять, зв'язок з який організується через загальну поділювану шину адреси/даних, що працює в режимі тимчасового мультиплексування. Запис у порт. При виконанні команди, що змінює вміст регістра-засувки порту, нове значення фіксується в регістрі в момент S6P2 останні цикли команди. Однак опитування, вмісту регістра-засувки вихідною схемою здійснюється під час фази Р1 і, отже, новий уміст регістра-засувки з'являється на вихідних контактах порту тільки в момент S1P1 наступного машинного циклу. Таблиця 2.3 — Альтернативні функції порту 3 Символ Позиція Ім'я і призначення quation HYPER14HYPER15 Р3.7 Читання. Активний сигнал низького рівня формується апаратно при звертанні до ВПД Р3.6 Запис. Активний сигнал низького рівня формується апаратно при звертанні до ВПД Т1 Р3.5 Вхід таймера/лічильника 1 чи тест-вхід Т0 Р3.4 Вхід таймера/лічильника 0 чи тест-вхід РЗ.З Вхід запиту переривання 1. Сприймається сигнал низького чи рівня зріз Р3.2 Вхід запиту переривання 0. Сприймається сигнал низького чи рівня зріз TXD Р3.1 Вихід передавача послідовного порту в режимі UART. Вихід синхронізації в режимі регістра, що зрушує RXD РЗ.0 Вхід приймача послідовного порту в режимі UART. Уведення/висновок даних у режимі регістра, що зрушує Вихідні лінії портів 1, 2 і 3 можуть працювати на одну ТТЛ схему. Лінії порту 0 можуть бути навантажені на два входи ТТЛ схем кожна. Лінії порту 0 можуть працювати і на n-моп схемі, однак при цьому їхній необхідно підключати на джерело електроживлення через зовнішні навантажувальні резистори за винятком случаючи, коли шина порту 0 використовується як шину адреси/даних зовнішньої пам'яті. Вхідні сигнали для МК51 можуть формуватися ТТЛ або n-моп схемами. Припустимо використання як джерела сигналів для МК51 схем з відкритим чи колектором відкритим стоком. Однак при цьому час зміни вхідного сигналу при переході з 0 у 1 виявиться сильно затягнутим. Звертання до портів уведення/виводу можливо з використанням команд, що оперують з байтом, окремим бітом і довільною комбінацією біт. При цьому в тих випадках, коли порт є одночасно операндом і місцем призначення результату, пристрій керування автоматично реалізує спеціальний режим, що називається "читання - модифікація - запис". Цей режим звертання припускає введення сигналів не з зовнішніх висновків порту, а з його регістра-засувки, що дозволяє виключити неправильне зчитування раніше виведеної інформації. Подібний механізм звертання до портів реалізований у наступних командах: ANL - логічне И, наприклад ANL Р1 ,А; ORL - логічне ЧИ, наприклад ORL Р2,А; XRL - що виключає ЧИ, наприклад XRL РЗ,А; JBC - перехід, якщо в адресуємому битці одиниця, і наступне скидання біта, наприклад JBC P1.1, LABEL; CPL - інверсія біта, наприклад CPL РЗ.З; INC - інкремент порту, наприклад INC Р2; DEC - декремент порту, наприклад DEC Р2; DJNZ - декремент порту і перехід, якщо його вміст не дорівнює нулю, наприклад DJNZ РЗ, LABEL; MOV PX.Y, З - передача біта переносу в біт Y порту X; SET PX.Y - установка біта Y порту X; CLR PX.Y - скидання біта Y порту X. Зовсім не очевидно, що останні три команди в приведеному списку є командами "читання - модифікація - запис". Однак це саме так. По цих командах спочатку зчитується байт із порту, а потім записується новий байт у регістр-засувку. Причиною, по якій команди "читання - модифікація - запис" забезпечують роздільний доступ до регістра-засувки порту і до зовнішніх висновків порту, є необхідність виключити можливість неправильного прочитання рівнів сигналів на зовнішніх висновках. Припустимо для приклада, що лінія Y порту Х з'єднується з базою могутнього транзистора і вихідний сигнал на ній призначений для його керування. Коли в даний біт записана 1, то транзистор включається. Якщо для перевірки стану виконавчого механізму (у нашому випадку - могутнього транзистора) прикладній програмі потрібно прочитати стан вихідного сигналу в тім же битці порту, то зчитування сигналу з зовнішнього висновку порту, а не з D-тригера регістра-засувки порту приведе до неправильного результату: одиничний сигнал на базі транзистора має відносно низький рівень і буде інтерпретований у МК як сигнал 0. Команди "читання - модифікація - запис" реалізують зчитування з регістра-засувки, а не з зовнішнього висновку порту, що забезпечує одержання правильного значення 1. 2.1.3 Два програмувальних 16-бітних таймери/лічильника (TCNT0 і TCNT1) можуть бути використані як чи таймери лічильників зовнішніх подій. При роботі як таймер уміст TCNT інкрементується в кожнім машинному циклі, тобто через кожні 12 періодів резонатора. При роботі як лічильник уміст TCNT інкрементується під впливом переходу з 1 у 0 зовнішнього вхідного сигналу, подаваного на відповідний (Т0, Т1) висновок МК51. Опитування значення зовнішнього вхідного сигналу виконується в момент часу S5P2 кожні машинні цикли. Уміст лічильника буде збільшене на 1 у тому випадку, якщо в попередньому циклі був лічений вхідний сигнал високого рівня (1), а в наступному - сигнал низького рівня (0). Нове (інкрементоване) значення лічильника буде сформовано в момент S3PI у циклі, що випливає за тим, у якому був виявлений перехід сигналу з 1 у 0. Тому що на розпізнавання переходу потрібно два машинних цикли, те максимальна частота підрахунку вхідних сигналів дорівнює 1/24 частоти резонатора. На тривалість періоду вхідних сигналів обмежень зверху немає. Для гарантованого прочитання вхідного рахованого сигналу він повинний утримувати значення 1 як мінімум протягом одного машинного циклу МК51. Для керування режимами роботи TCNT і для організації взаємодії таймерів із системою переривання використовуються два регістри спеціальних функцій (TMOD і TCON), опис яких приводиться в табл. 2.4 і 2.5 відповідно. Як випливає з опису керуючих біт TMOD, для обох TCNT режими роботи 0, 1 і 2 однакові. Режими 3 для TCNT0 і TCNT1 різні. Розглянемо коротко роботу TCNT у всіх чотирьох режимах. Режим 0. Переклад будь-якого TCNT у режим 0 робить його схожим на таймер МК48 (8-бітний лічильник), на вхід якого підключений 5-бітний предділитель частоти на 32. Роботу TCNT у режимі 0 на прикладі TCNT1 ілюструє рис. 2.4, а. У цьому режимі таймерний регістр має розрядність 13 біт. При переході зі стану "всі одиниці" у стан "усі нулі" установлюється прапор переривання від таймера TF1. Вхідний синхросигнал таймера 1 дозволений (надходить на вхід TCNT), коли керуючий біт TR1 встановлений у 1 і або керуючий біт GATE (блокування) дорівнює 0, або на зовнішній висновок запиту переривання INT1 надходить рівень 1. Відзначимо попутно, що установка біта GATE у 1 дозволяє використовувати таймер для виміру тривалості імпульсного сигналу, подаваного на вхід запиту переривання. Таблиця 2.4 — Регістр режиму роботи таймера/лічильника Символ Позиція Ім'я і призначення GATE TMOD.7 для TCNT1 і TMOD.3 для TCNT0 Керування блокуванням. Якщо біт установлений, то таймер/лічильник "x" дозволений доти, поки на вході "INTx" високий рівень і біт керування "TRx" установлений. Якщо біт скинутий, то TCNT дозволяється, як тільки біт керування "TRx" установлюється TMOD.6 для TCNT1 і TMOD.2 для TCNT0 Біт вибору режиму чи таймера лічильника подій. Якщо біт скинутий, то працює таймер від внутрішнього джерела сигналів синхронізації. Якщо біт установлений, то працює лічильник від зовнішніх сигналів на вході "Тх" M1 TMOD.5 для TCNT1 і TMOD.1 для TCNT0 Режим роботи М0 TMOD.4 для TCNT1 і TMOD 0 для TCNT0 Режим роботи Режим 1. Робота будь-якого TCNT у режимі 1 така ж, як і в режимі 0, за ви - нятком того, що таймерний регістр має розрядність 16 біт. Режим 2. У режимі 2 робота організована таким чином, що переповнення (перехід зі стану "всі одиниці" у стан "усі нулі") табл. 2.5, регістр керування/статусу таймера 8-бітного лічильника TL1 приводить не тільки до установки прапора TF1 (рис. 2.4, б), але й автоматично перезавантажує в TL1 уміст старшого байта (ТН1) таймерного регістра, що попередньо було задано програмним шляхом. Перезавантаження залишає вміст ТН1 незмінним. У режимі 2 TCNT0 і TCNT1 працюють зовсім однаково. Режим 3. У режимі 3 TCNT0 і TCNT1 працюють по-різному. TCNT1 зберігає незмінним своє поточне вміст. Іншими словами, ефект такої ж, як і при скиданні керуючого біта TR1 у нуль. Роботу TCNT0 у режимі 3 ілюструє рис. 2.4, в. У режимі 3 TL0 і ТН0 функціонують як два незалежних 8-бітних лічильники. Роботу TL0 визначають керуючі біти TCNT0 (З/Т, GATE, TR0), вхідний сигнал INT0 і прапор переповнення TF0. Роботу ТН0, що може виконувати тільки функції таймера (підрахунок машинних циклів МК), визначає керуючий біт TR1. При цьому ТН0 використовує прапор переповнення TF1. Рисунок 2.4 - Таймер/лічильник подій [9] Таблиця 2.5 — Регістр керування / статусу таймера Символ Позиція Ім'я і призначення TF1 TCON.7 Прапор переповнення таймера 1, Встановлюється апаратно при переповненні таймера/лічильника. Скидається при обслуговуванні переривання апаратно. TR1 TCON.6 Біт керування таймера 1. Установлюється / скидається програмою для пуску/останова TF0 TCON.5 Прапор переповнення таймера 0. Встановлюється апаратно. Скидається при обслуговуванні переривання TR0 TCON.4 Біт керування таймера 0. Установлюється / скидається програмою для пуску/зупинки таймера/лічильника IE1 TCON.3 Прапор фронту переривання 1. Встановлюється апаратно, коли детектується зріз зовнішнього сигналу INT1. Скидається при обслуговуванні переривання IT1 TCON.2 Біт керування типом переривання 1. Установлюється / скидається програмно для специфікації запиту INT1 (зріз/низький рівень) IE0 TCON.1 Прапор фронту переривання 0. Установлюється по зрізі сигналу INT0. Скидається при обслуговуванні переривання IT0 TCON.0 Біт керування типом переривання 0. Установлюється/ скидається програмно для специфікації запиту INT0 (зріз/низький рівень) Режим 3 використовується в тих випадках застосування МК51, коли потрібно наявність додаткового 8-бітного таймера/лічильника подій. Можна вважати, що в режимі 3 МК51 має у своєму складі три таймери/лічильника. У тому випадку, якщо TCNT0 використовується в режимі 3, TCNT1 може чи бути включений, чи виключений, чи переведений у свій власний режим 3, чи може бути використаний послідовним портом як генератор частоти передачі, чи, нарешті, може бути використаний у будь-якім застосуванні, що не вимагає переривання. 2.1.4 Спрощена схема переривань МК51 показана на рис. 2.5. Зовнішні переривання INT0 і INT1 можуть бути викликані або рівнем, або переходом сигналу з 1 у 0 на входах МК51 у залежності від значень керуючих біт 1Т0 і 1Т1 у регістрі TCON. Від зовнішніх переривань установлюються прапори IЕ0 і IЕ1 у регістрі TCON, що ініціюють виклик відповідної підпрограми обслуговування переривання. Скидання цих прапорів виконується апаратно тільки в тому випадку, якщо переривання було викликано по переходу (зрізу) сигналу. Якщо ж переривання викликане рівнем вхідного сигналу, то скиданням прапора 1Е керує відповідна підпрограма обслуговування переривання шляхом впливу на джерело переривання з метою зняття їм запиту. Прапори запитів переривання від таймерів TF0 і TF1 скидаються автоматично при передачі керування підпрограмі обслуговування. прапори запитів переривання R1 і Т1 установлюються блоком керування UART апаратно, але скидатися повинні програмою. Рисунок 2.5 — Спрощена схема переривань МК51 [9] Переривання можуть бути викликані чи скасовані програмою, тому що всі перераховані прапори програмно-доступні і можуть бути встановлені/скинуті програмою з тим же результатом, як якби вони були встановлені/скинуті апаратурними засобами. У блоці регістрів спеціальних функцій є два регістри, призначених для керування режимом переривань і рівнями пріоритету. Формати цих регістрів, що мають символічні імена 1Е и IP. Можливість програмної установки/скидання будь-якого керуючого біта в цих двох регістрах робить систему переривань МК51 винятково гнучкої. 2.1.5 Скидання. На відміну від МК48 скидання МК51 здійснюється шляхом подачі на вхід RST сигналу 1. Для упевненого скидання МК51 цей сигнал 1 повинний бути утриманий на вході RST щонайменше протягом Двох машинних циклів (24 періоду резонатора). Квазидвонаправлені буферні схеми зовнішніх висновків ALE і PSEN знаходяться при цьому в режимі введення. Під впливом сигналу RST скидається вміст регістрів: PC, АСС, У, PSW, DPTR, TMOD, TCON, T/C0, T/C1, IE, IP і SCON, у регістрі PCON скидається тільки старший біт, у регістр-покажчик стека завантажується код 07Н, а в порти Р0 - РЗ - коди 0FFH. Стан регістра SBUF невизначене. Сигнал RST не впливає на вміст осередків РПД. Коли включається електроживлення (VCC), уміст РПД невизначений, за винятком операції повернення з режиму зниженого енергоспоживання. Режим холостого ходу. Будь-яка команда, по якій установиться керуючий біт IDL(PCON.0) у регістрі керування потужністю переведе МК51 у режим холостого ходу. При цьому продовжує роботу: внутрішній генератор синхросигналів. Усі регістри зберігають своє значення. На висновках усіх портів утримується той логічний стан, що на них було в момент переходу в режим холостого ходу. На висновках ALE і PSEN формується рівень 1. 2.2 Мікроконтролер AT90S2313 фірми Atmel AT90S2313 - економічний 8 бітовий КМОП-мікроконтролер, побудований з використанням розширеної RISC-архітектури AVR. Пристрій має 128 байта EEPROM. Виконуючи по одній команді за період тактової частоти, AT90S2313 має продуктивність близько 1MIPS на Мгц, що дозволяє розроблювачам створювати системи оптимальні по швидкості і споживаній потужності. В основі ядра AVR лежить розширена RISC-архітектура, потужний набір команд і 32 регістра загального призначення. Усі 32 регістра безпосередньо підключені до арифметико-логічного пристрою (АЛП), що дає доступ до будь-яких двох регістрів за один машинний цикл. Подібна архітектура дає десятикратний виграш в ефективності коду у порівнянні з традиційними CISC-мікроконтролерами. Подібна архітектура ефективно підтримує умови високого рівня і дає високу щільність асемблерних програм. AT90S2313 пропонує наступні можливості: 2 кб флеш-пам'яті; 128 байта EEPROM; 15 двонаправлених ліній уведення/виводу; 32 регістра загального назначеня; настоюваний таймер/лічильник; зовнішні (2) і внутрішні(8) переривання; програмувальний строжевий таймер з убудованим генератором; SPI послідовний порт для завантаження програм; UART –універсальний асинхронний прйомопередавач; два режиму низького енергоспоживання Idle та Power Down. Економічний режим (Power Down Mode) зберігає вміст регістрів, але відключає генератор, зчироняючи функціонування всіх убудованих пристроїв до зовнішнього чи переривання апаратного скидання. Мікросхеми виробляються з використанням технології енергонезалежної пам'яті високої щільності фірми Atmel. Флэш пам'ять на кристалі може бути перепрограмована прямо в системі через послідовний інтерфейс SPI чи доступним программатором енергонезалежної пам'яті. Поєднуючи на одному кристалі удосконалений 8-бітний RISC процесор із що завантажується флеш пам'яттю, AT90S2313 є потужними мікроконтролерами, що дозволяють створювати досить гнучкі і ефективні по вартості пристрою. 2.2.1 Опис виводів МК AT90S2313 представлений на рис. 2.6. Port B (PB7..PB0) - Порт B є 8-бітовим двонаправленим портом. Для виводів порту передбачено внутрішні резистори, що підтягують (вибираються для кожного біта). Виводи PB0 і PB1 також є позитивним (AIN0) і негативним (AIN1) входами убудованого аналогового компаратора. Вихідні буфери порту B можуть поглинати струм до 20 мА і безпосередньо керувати світлодіодними індикаторами [ 4 ]. Якщо виводи PB0..PB7 використовуються як входи і ззовні встановлюються в низький стан, вони є джерелами струму, якщо включені внутрішні резистори, що підтягують. Крім того, Порт B обслуговує деякі спеціальні функції [ 4 ]. Port D (PD6..PD0) - Порт D є 7-бітовим двонаправленим портом із внутрішніми резисторами, що підтягують. Вихідні буфери порту D можуть поглинати струм до 20 мА. Як входи встановлені в низький стан, виводи порту D є джерелами струму, якщо задіяні резистори, що підтягують. Крім того, Порт D обслуговує деякі спеціальні функції. Рисунок 2.6 — Нумерація та позначення виводів МК AT90S2313 де VCC – вивід джерела живлення GND – земля RESET - Вхід скидання. Утримання на вході низького рівня протягом двох машинних циклів (якщо працює тактовий генератор), скидає пристрій. XTAL1 - Вхід підсилювача генератора, що інвертує, і вхід зовнішнього тактового сигналу. XTAL2 - Вихід підсилювача генератора, що інвертує. 2.2.2 Огляд архітектури. Блок схема контролеру зображена на рис.2.7. Регістровий файл швидкого доступу містить 32 8-розрядних регістра загального призначення, доступ до яких здійснюється за один машинний цикл. Тому за один машинний цикл виповнюється одна операція АЛП. Два операнда вибираються з реєстрового файлу, виконується операція, результат її записується в реєстровий файл - усі за один машинний цикл Рисунок 2.7 — Блок-схема контролеру AT90S2313 [4] АЛП підтримує арифметичні і логічні операції між регістрами і між константами і регістрами. Операції над окремими регістрами також виконуються в АЛП. AVR використовує Гарвардську архітектуру - роздільні шини і пам'яті програм і даних. Доступ до пам'яті програм виробляється через однорівневий буфер. Під час виконання однієї команди, що випливає вибирається з пам'яті. Така конструкція дозволяє виконувати операції за один машинний цикл. Пам'яттю програм є внутрішня що завантажується флеш пам'ять. За допомогою команд відносних переходів і відносних викликів підпрограм здійснюється доступ до всім 512 адресам пам'яті. Усі команди AVR мають формат одного 16-розрядного слова, тому по кожному адресі пам'яті програм зберігається одна команда. При обробці переривань і виклику підпрограм, адреса повернення (значення програмного лічильника) зберігається в стеці. Стек виконаний як 3- рівневий апаратний стик і використовується для підпрограм і переривань. Простір введення/виведення містить 64 адреси периферійних пристроїв ЦПУ, таких як керуючі регістри, таймер/лічильник, АЦП і інші пристрої введення/виведення. Модуль переривань має власний керуючий регістр у просторі введення/виведення і прапор глобального дозволу переривань у регістрі стану. Кожному перериванню призначений свій вектор у початкової області пам'яті програм. Різні переривання мають пріоритет у відповідності з розташуванням їхніх векторів. По молодших адресах розташовані вектори з великим пріоритетом. Шість з 32 регістрів можна використовувати як три 16-розрядних покажчика в адресному просторі даних, що дає можливість використовувати високоефективну адресну арифметику (16-розрядні регістри X, Y і Z). Один із трьох адресних покажчиків (регістр Z) можна використовувати для адресації таблиць у пам'яті програм. Це X-, Y- і Z-регістри. 2.2.3 Файл регістрів загального призначення. Всі оперуючі регістрами команди в нирці команд прямо адресуються до кожного з регістрів за один машинний цикл. Єдине виключення - п'ять команд оперуючих з константами SBCI, SUBI, CPI, ANDI, ORI і команда LDI, що завантажує регістр константою. Ці команди працюють тільки з другою половиною реєстрового файлу - R16..R31. Команди SBC, SUB, CP, AND і OR, також як і всі інші, працюють із усім реєстровим файлом. Регістр R30 також використовується як 8-розрядний покажчик для безпосередньої адресації реєстрового файлу. 2.2.4 Рижими адресації програм і даних. Удосконалені RISC мікроконтролери AVR підтримують ефективну систему адресації: Пряма реєстрова, окремий регістр Rd - адреса регістра указується в бітах 0..4 коди команди, операнд міститься в регістрі Rd. Непряма реєстрова, - регістр адресується через покажчик - Z-регістр (R30). Пряма реєстрова, два регістри Rd і Rr, - адреси регістрів вказуються в бітах 0..4 (Rd) і 5..9 (Rr) коду команди. Операнди містяться в регістрах Rd і Rr. Результат міститься в регістр Rd. Пряма введення/виведення. - Адреса операнда міститься в бітах 0..5 коду команди, адреса регістра в бітах 6..10. Відносна програмна адресація, RJMP і RCALL - Зсув щодо програмного лічильника вказується в бітах 0..11 коду операції. Виконання програми передається за адресою PC+k. Відносна адреса k лежить у діапазоні від +2кб до -(2кб-1). 2.3 Структурна організація мікроконтролера PIC16C84 2.3.1 Спеціальні схеми в режимі реального часу виділяють мікроконтролер у ряді інших процесорів. PIC16C84 має безліч удосконалень, що підвищують надійність системи, що знижують завдяки відмовленню від зовнішніх компонентів вартість, що забезпечують роботу в режимах енергозбереження і можливість захисту коду. До таких удосконалень можна віднести: вибір тактового генератора; скидання: скидання при включенні харчування POR; таймер включення харчування PWRT; таймер запуску генератора OST; переривання; сторожовий таймер WDT; захист коду; режим SLEEP; область пам'яті для ідентифікатора; - програмування в готовому виробі по послідовному інтерфейсі. 2.3.2 Загальні зведення про архітектуру. Частота коливань із входу OSC1 чи виходу внутрішнього генератора поділяється усередині процесора на чотири, щоб одержати чотири не перекриваються тактові послідовності, називані Q1, Q2, Q3 і Q4. Лічильник команд PC збільшується в такті Q1, команда зчитується з програмної пам'яті і защелкивается в регістрі команд у такті Q4. Потім команда декодується і виконується протягом наступного циклу в тактах Q1-Q4. Цикл обробки команд складається з чотирьох тактів. Вибірка команди і виконання конвеєризовані. Декодування і виконання виробляється в наступному циклі після вибірки команди. Завдяки конвеєрній обробці кожна команда фактично виконується за час одного циклу. Якщо в результаті виконання команд, як у GOTO, то вона вимагає два цикли. Цикл вибірки починається інкрементом PC у Q1. У циклі виконання обрана команда в такті Q1 закривається в регістрі команд (IR). Потім у тактах Q2, Q3 і Q4 команда декодується і виповнюється. Дані зчитуються з пам'яті в такті Q2(читання оператора) і запис у такті Q4(запису результату). 2.3.3 Організація пам'яті. PIC16C84 має 13-розрядний лічильник команд PC, здатний адресувати 1До 14-бітних слів пам'яті програм. При звертанні до пам'яті за межами доступного простору старші біти PC ігноруються. Вектор скидання розташований за адресою 0000h, а вектор переривання – 0004h. Пам'ять даних розбита на два банки, що містять регістри загального призначення РС. Вибір банку визначається станом біта RP0 у регістрі STATUS. Коли RP0 встановлений у 1, обраний банк 1, інакше – банк 0. Перші 12 байт кожного банку відведені під PCH. Деякі PCH відображаються одночасно на обидва банки. POH реалізовані у виді статичного ОЗУ, розташовуються в адресах 20h...7Fh і доступні з будь-якого банку. Регістри загального призначення можуть бути адресовані чи прямо побічно з використанням регістра непрямої адресації FSR. Регістри спеціального призначення використовуються для керування ЦПУ і функціями введення-висновку. Ці регістри являють собою набір осередків статичної пам'яті. Регістри спеціального призначення поділяються на два класи. PCH для керування периферійними пристроями описані в розділах, присвячених відповідним периферійним пристроям. Регістр STATUS (адреса 03h чи 83h) містить прапори АЛП, параметри скидання (RESET) і біти вибору банку пам'яті даних. Регістр STATUS так само, як і будь-який інший регістр, може бути операндом для будь-якої команди. Якщо регістр STATUS використовується в якості операнда для команди, що впливає на біти Z, DC і C, то безпосередній запис у ці біти заборонений. Більш того, запис у біти –ТЕ і –PD заборонена. Тому результат команди, що використовує STATUS як регістр призначення, може відрізнятися від очікуваного. Регістр OPTION (81h) доступний для читання і запису і містить різні керуючі біти для конфігурації преддільника TMR0/WDT, самого TMR0 і резисторів, що підтягують, GPIO. Регістр INTCON доступний для читання і запису і містить дозвіл переривань: загального, периферійних пристроїв і TMR0, а також прапор переповнення TMR0. 2.3.4 Довжина лічильника команд PC у PIC16C84 – 13 біт. Молодший байт PC(PCL) доступний для читання і запису. Старший байт PC(PCH) не може бути прямо прочитаний чи перезаписаний. Його буферізує PCLATH, у якому зберігаються п'ять бітів PC<12:8> старшого байта лічильника команд. Коли PC завантажується новим значенням під час виконання команд CALL, GOTO чи запису в PCL, старші біти PC завантажуються з PCLATH. PIC16C84 має апаратний стек глибиною 8 13-бітних слів. Стік не є частиною пам'яті чи програм даних, а покажчик стека не може бути явно прочитаний чи модифікований. При виконанні команди CALL чи виникненні переривання PC зберігається в стеці. При виконанні команд PETURN, RETLW чи RETFIE значення PC відновлюється зі стека. Уміст PCLATH при цьому не змінюється. Стік працює як циклічний буфер. Це означає, що після того, як у стек було поміщено вісім записів, дев'ята міститься на місце першої, десята – на місце другий, і т.д. 2.3.5 Регістр INDF не є фізичним регістром. При звертанні до регістра INDF насправді відбувається непряма адресація пам'яті даних. Непряма адресація реалізована через регістр INDF. Будь-яка команда, що використовує регістр INDF, фактично звертається до даних, на які вказує регістр адреси у файлі (FSR). Читання самого INDF за допомогою непрямої адресації дає в результаті 00h. Результатом непрямого запису в регістр INDF, буде NOP(хоча прапори АЛП можуть змінюватися). 2.3.6 PIC16C84 має два порти, а саме PORTA, PORTB. Деякі канали портів сполучають функції висновків інших периферійних пристроїв. PORTA – це 5-розрядний порт. RA4 має тригер Шмідта на вході і відкритий стік на виході. Інші канали порту мають вхідні рівні ТТЛ і вихідні буфери КМОП. Порт має регістр напрямку TRISA, за допомогою якого канали порту можуть бути індивідуально набудовані на чи Введення на висновок. Установка в 1 біта TRISA визначає відповідний канал PORTA як вхід, тобто вихідні буфери переводяться в третій стан. Установка в 0 біта регістра TRISA визначає відповідний канал PORTA як вихід, тобто вміст засувки порту виводиться на відповідний висновок мікросхеми. PORTB – це 8-розрядний порт, що має регістр напрямку TRISB, за допомогою якого канали порту можуть бути індивідуально набудовані на чи введення на висновок. Встановлення в 1 біта регістра TRISB визначає відповідний канал PORTB як вхід, тобто вихідні буфери переводяться в третій стан. Встановлення в 0 біта регістра TRISB визначає відповідний канал PORTB як вихід, тобто вміст засувки порту на відповідний висновок мікросхеми. Усі контакти POTRB мають убудовані резистори, що підтягують. Їхнім включенням керує один біт –RCPU(OPTION<7>), він повинний бути встановлений у 0. Резистори, що підтягують, автоматично виключаються, коли канали порту набудовуються на висновок і після POR. Чотири канали POTRB RB<7:4> при роботі на введення можуть генерувати переривання по зміні вхідного стану. Якщо один з каналів RC<7:4> набудований на висновок, він не може формувати це переривання. Сигнал на висновках RB<7:4> порівнюється зі старим значенням, закритими при останньому читанням PORTB. У випадку розбіжності одного зі значень виставляється прапор RBIF і виробляється переривання якщо дозволене. Це переривання може виводити мікроконтролер з режиму SLEEP. У підпрограмі обслуговування переривання можна завершити переривання одним із двох способів: - усунути невідповідність читання (чи записом) PORTB; - установити біт RBIF у нуль; Невідповідність вхідного значення PORTB збереженому в засувці завжди встановлює біт RBIF у 1, тільки після читання з PORTB можна установити біт RBIF у 0. Переривання по зміні вхідного сигналу рекомендується використовувати з SLEEP по натисканню клавіші й у випадках коли PORTB використовується тільки для інтерфейсу клавіатури. Опитування PORTB при використанні переривання по зміні вхідного сигналу може перешкодити правильному визначенню моменту визначення сигналу. Всі операції висновку в порт здійснюється як читання-модифікація-запис. Команди BCF і BSF, наприклад, зчитують значення порту в ЦПУ, виконує операцію з бітом і записують результат назад. Потрібно обережність при застосуванні цих команд до порту, що містить як входи, так і виходи. Наприклад операція BSF над битому 5 PORTB зчитує всі 8 бітів PORTB у ЦПУ, виконується і записує результат у вихідні засувки. Якщо інший канал PORTB використовується як двонаправлені (скажемо, біт 0) і набудований у даний момент на введення, то вхідний сигнал буде лічений з висновку в ЦПУ і записаний у засувку даних цього каналу поверх попереднього значення. Поки канал знаходиться в режимі введення, проблем немає. Однак, якщо біт 0 пізніше переключається в режим висновку, зміст засувки може відрізнятися від необхідного. На активний вихід не повинні підключаться зовнішні навантаження за схемою “монтажне І” або “монтажне ЧИ”. виникаючі при це великі струми можуть зашкодити кристал. Фактичний запис у порт уведення/висновку відбувається наприкінці машинного циклу, у той час як для читання дані повинні бути визначені на початку циклу. Отже потрібно обережність при читанні з порту, у який попередньою командою виробляється запис. Послідовність команд повинна бути складена так, щоб дозволити сигналу на висновках установитися після запису до наступного зчитування вмісту порту в ЦПУ, інакше замість нового значення може бути лічене попереднє. 2.3.7 Можливості таймера TMR0: 8-разряный таймер доступний для читання і запису; 8-розрядний програмувальний преддільник; вибір джерела тактового сигналу (внутрішній чи зовнішній); вибір активного фронту зовнішнього тактового сигналу; переривання по переповненню таймера. Режим роботи від внутрішнього тактового сигналу вибирається встановленням у 0 біта T0SC (OPTION<5>). Збільшення значення TMR0 виробляється в кожнім машинному циклі (без преддільника). Після запису в TMR0 нового значення інкримент лічильника заборонений два наступні цикли. При записі нового значення в TMR0 користувач повинний компенсувати цю затримку, заздалегідь відкоригувавши число. Режим роботи від зовнішнього тактового сигналу вибирається встановленням у 1 біта T0SC (OPTION<5>). Збільшення значення TMR0 виробляється по чи наростанню спаду, у залежності від стану бита0SE (OPTION<4>), сигналу з входу T0CKI. TMR0 має програмувальний преддільник. Преддільник може бути підключений або до TMR0, або до WDT. Біт PSA (OPTION<3>) керує підключенням преддільника, а біти PS2:PS0 (OPTION<2:0>) установлюють його коефіцієнт розподілу з набору 1:1 (тільки для WDT), 1:2, 1:4, 1:8, 1:16, 1:32, 1:64, 1:128 і 1:256 (тільки для TMR0). 8-розрядний лічильник може використовуватися як преддільник для TMR0 чи як пост дільник для WDT. Підключення преддільника до TMR0 означає, що WDT не може його використовувати, і навпаки. Біти PSA і PS2-PS0 (OPTION<3:0>) визначають підключення преддільника і коефіцієнт розподілу. Коли преддільник підключений до TMR0, будь-яка команда запису в TMR0 (наприклад, CLR 1; MOVWF 1; BSF 1,x) буде очищати преддільник. Коли п преддільник підключений до WDT, команда CLRWDT очистить преддільник разом з WDT. Преддільник недоступний для читання запису. При скиданні преддільник також очищається. Переривання від TMR0 виникає при переповненні TMR0, при цьому прапор T0IF встановлюється в 1 і TMR0 продовжує роботу. Заборонити це переривання можна установкою в 0 біта T0IE (INTCON<5>). Процедура обробки переривання повинна установити прапор T0IF у 0 перед тим, як знову дозволити переривання. Переривання від TMR0 не може вивести процесор з режиму SLEEP, оскільки таймер у цьому режимі виключений. 2.3.8 PIC16C84 має сторожовий таймер WDT, що може бути виключений тільки бітами конфігурації в ППЗУ і для підвищення надійності використовується власний генератор. Ще два таймери OST і PWRT роблять необхідні для старту пристрою затримки. Таймер запуску OST утримує кристал у стані скидання, поки не стабілізується вихід генератора тактового сигналу, а таймер включення харчування PWRT утримує кристал у стані скидання протягом 72 мс, поки не стабілізується напруга харчування. Завдяки наявності цих двох убудованих таймерів більшість додатків може бути реалізоване без застосування додаткових зовнішніх компонентів. Режим SLEEP реалізований для забезпечення наднизького енергоспоживання. Пристрій може вийти з цього режиму через зовнішнє скидання, скидання по тайм-ауті WDT чи переривання. Задовольнити вимогам різноманітних додатків покликані кілька режимів роботи тактового генератора. Режим RC генератора призначений для зниження вартості готового пристрою, а режим LP – для зниження енергоспоживання. Для вибору режимів роботи пристрою і його модулів використовується слово конфігурації. Біти конфігурації, розташовані в пам'яті ПЗУ за адресою 2007h, можуть бути або запрограмовані в 0, або бути залишені незапрограмованими в 1. Користувач повинний відзначити, що адреса 2007h розташована межами простору користувальницьких програм. У дійсності ця адреса розташована в особливому просторі пам'яті тестування і настроювань, що доступно тільки під час програмування. 2.3.8.1 PIC16C84 розрізняє скидання по: - включенню живлення POR; - -MCLR під час нормальної роботи; - -MCLR у режимі SLEEP; - тайм-ауту WDT під час нормальної роботи; - тайм-ауту WDT у режимі SLEEP. Деякі регістри не змінюються після будь-якого скидання; їхній стан не визначений після POR і не змінюється при скиданні з інших причин. Більшість регістрів скидається в початковий стан при скиданні по POR, -MCLR і WDT. Скидання по WDT у режимі SLEEP розглядається як продовження нормальної роботи і на них не впливає. Біти -T0 і -PD виставляються по-різному при різних причинах скидання. 2.3.8.2 Ланцюг POR утримує пристрій у стані скидання, поки VDD не перевищить граничне значення в діапазоні від 1,2 до 1,7 В. Щоб використовувати POR, просто підключите висновок –MSLR чи прямо через резистор до VDD. Це виключає зовнішній RC-ланцюжок, звичайно необхідну для скидання. Коли пристрій починає нормальну роботу після скидання, робочі параметри, такі, як напруга, частота, температура і т.д., повинні приходити в норму. Доти, поки вони не установилися пристрій повинний утримуватися в стані скидання. 2.3.8.3 Працюючий від внутрішнього RC-генератора PWRT забезпечує тайм-аут фіксованою нормальною довжиною 72 мс після фронту наростання сигналу POR чи сигналу на вході -MСLR. Кристал знаходиться в скиданні, поки PWRT активний. У більшості випадків затримка PWRT дозволяє VDD вирости до прийнятного рівня. Програмуванням відповідного біта конфігурації PWRT може бути відключений. Час затримки PWRT варіюється від кристала до кристала і залежить від VDD і температури. 2.3.8.4 Таймер запуску генератора OST забезпечує затримку в 1024 такту генератора після встановлення -MCLR у високий чи рівень виходу з SLEEP. Тайм-аут OST відбувається тільки в режимах HS, XT і LF генератора після POR чи виходу з SLEEP. 2.3.8.5 У PIC16C84 кілька джерел переривань: - зовнішнє переривання від висновку RB0/INT; - переривання по зміні сигналу на входах RB7:RB4; - переповнення TMR0; - завершення запису в Flash-пзу даних. Регістр INTCON містить прапори окремих переривань, біти їхнього дозволу і біт загального дозволу переривань. Біт загального дозволу переривань GIE (INTCON<7>) встановлюється в 0 при скиданні. Під час обслуговування переривання біт GIE встановлюється в 0, щоб заборонити будь-яке наступне переривання, у стек міститься адреса повернення і PC завантажується значення вектора переривання 0004h. Час реакції на зовнішні переривання складає 3 чи 4 такти. Точний час реакції залежить від моменту переривання. Воно однаково для 1- чи 2-тактових команд. У підпрограмі обробки переривання джерело(і) переривання можуть бути визначені через прапори переривання. Щоб уникнути повторного виклику підпрограма повинна визначити ці прапори в 0 перед тим, як знову дозволити переривання. Щоб мати можливість опитувати прапори переривання він установлюються незалежно від відповідних битов чи дозволи битка GIE. Команда повернення з переривання RETFIE повертає з підпрограми обробки переривання і дозволяє переривання встановленням біта GIE у 1. 2.3.8.6 WDT реалізований на окремому убудованому RC-генераторі не потребуючого використання зовнішніх компонентів. Цей RC-генератор відділен від убудованого генератора тактових сигналів ЦПУ. Це означає, що таймер WDT працює, навіть якщо тактові сигнали відключені, наприклад при виконанні команди SLEEP. Під час нормальної роботи з тайм-ауту WDT відбувається скидання пристрою, а в режимі SLEEP – висновок з SLEEP і продовження виконання програми. WDT може бути відключений програмуванням біта конфігурації WDTE у 0. При нормальній роботі WDT підлягає очищенню через інтервали часу, менші його періоду, інакше відбудеться тайм-аут WDT і наступне скидання пристрою. 2.3.8.7 Режим SLEEP включається командою SLEEP. При включенню режиму SLEEP WDT скидається але продовжує працювати. У регістрі STATUS біт -T0 встановлюється в 1, біт -PD – у 0, основний генератор зупиняється. Порти уведення висновку залишаються в тім же стані, у якому вони знаходилися до виконанні команди SLEEP (високий рівень, низький чи рівень третій стан). Найнижче енергоспоживання в режимі SLEEP може бути отримане при підключенню всіх каналів уведення-висновку до VDD чи до VCC при відсутності струмів із зовнішньої схеми через висновки портів. Висновки, переведені в третій стан, повинні бути підтягнуті у високий чи низький рівень, щоб уникнути струмів витоку на входах, що плавають. На висновку -MCLR повинний бути високий рівень. PIC16C84 може вийти з режиму SLEEP після одного з приведених нижче подій: - зовнішнє скидання з входу -MCLR; - тайм-аут WDT (якщо WDT включений); - переривання з входу INT; - зміна сигналу на входах RB7:RB4; - переривання по завершенні запису в Flash-пзу. 2.3.8.8 Код програм ПЗУ може бути захищений програмуванням битов захисту коду. Коли код захищений, ПЗУ програм не може бути прочитана. Слово конфігурації (2007h) у режимі захисту коду не шифрується, що дозволяє читати і записувати в біти конфігурації. 2.4 Паралельний АЦП ADS7880 фірми Burr – Brown Працює AD7880, який зображений на рис. 2.8 у такий спосіб. В початковий момент часу на всіх ніжках, з'єднаних із входами керування АЦП, мікроконтролер повинен встановити одиниці. Для запуску перетворення на CONVST необхідно подати негативний імпульс. Рисунок 2.8 — Схематичне зображення АЦП ADS7880 [4] Перепад на ньому з 0 в 1 при одиничних рівнях сигналів на CS та RD запускає цикл перетворення. Протягом приблизно 20 мкс АЦП (при тактовій частоті 2 МГц) оцифровує сигнал і заносить його в свій вихідний регістр. У цей час він утримує нульовий рівень на своєму виході BUSY, і по стану цього сигнала наш МК може визначити, чи завершив АЦП перетворення, чи ні. До речі, якщо ми за якимись причинами не можемо аналізувати сигнал BUSY, можна просто відрахувати 20 мкс після подачі сигналу старту перетворення за цей час воно завершиться. Рисунок 2.9 — Сигналу обміну між АЦП та МК51 [4] 2.5 Паралельний ЦАП DAC 1220E Схема зображення DAC1220E представлена на рис. 2.10 Рисунок 2.10 — Схематичне зображення ЦАП DAC 1220E [10] DAC1220 являє собою 20-бітний цифро-аналоговий перетворювач. Він використовує дельта-сигма-технології для досягнення своєї суті лінійної продуктивність в компактному корпусі з дуже низьким енергоспоживаням. 2.6 Цифровий рідкокристалічний індикатор HT1613 Цифровий рідкокристалічний індикатор з мікроконтролером HT1613 який може відображати 10 символів та має можливість послідовної загрузки даних. Загальні характеристики: - кількість символів – 10; - розмір модуля - 66*36*0 мм; - розмір бачимого поля -56*2 мм; - висота символу - 10мм; - напруга живлення - 1.2 -1.7В; - споживаний струм - 10мкA. Крім функції контролера в модуль включена підтримка годинника реального часу і таймера з виводом даних на індикатор. Призначення виводів: 1 - 12/24 - переключення формату часу; 2 - Vss - загальний; 3 - SK - тактовий вхід; 4 - I - вхід даних; 5 - HK - вивід показань часу /контролер; 6 - S1 - установка часу; 7 - S2 - настроювання часу; 8 - TMR - скидання таймера; 9 - Vdd – живлення. Виводи 1, 6, 7, 8 - усередині підтягнуті до загального виводу через резистор близько 5Ом . Виводи 3,4,5 - усередині підтягнуті до живлення через резистор близько 1МОм . Для роботи як контролер треба 5 з'єднати з загальним проводом, 1,6,7,8 залишити непідключеними . Дані подаються на вивод 4 і защелкиваються по спаду тактуючих імпульсів на тактовому вході 3. Контролер може відображати 16 різних символів. Часові діаграми роботи індикатору зображені на рис.2.11. Рисунок 2.11 – Часові діаграми роботи індикатор Розроблена принципова схема мікропроцесорної системи з використанням усіх вище перерахованих пристроїв представлена на рис. 2.12 Рисунок 2.12 - Принципова схем мікропроцесорної системи Змн. Арк. № докум. Підпис Дата Арк. РТ92.000000.09 ПЗ |
Посетителей: 3, из них зарегестрированных: 0, гостей: 3 Зарегистрированные пользователи: Подробно | Страница сгенерирована за 0.0664 сек. |