Типові мікроконтролери фірми Motorola
Вхідний контроль:
1 Які пристрої входять до програмної моделі мікропроцесора М680х0?
2 Які відмінності мають фоннейманівська і гарвардська архітектури МП?
3 До якої з архітектур належать МП фірми Motorola, які вивчалися в попередніх розділах?
4 Призначення регістра прапорців (ознак результату)?
5 У який спосіб змінюється вміст регістра прапорців?
6 Стекова пам’ять та її використовування у МП.
7 Призначення регістра-лічильника команд.
Розрядні мікроконтролери
Сімейство М68НС05/705
Всі моделі найбільш поширеного сімейства 8-розрядних МК М68НС05/705 мають однакове процесорне ядро CPU05 і відрізнюються за наявністю, обсягом та типом пам’яті, яка входить до їхнього складу, певними характеристиками, а також номенклатурою периферійних пристроїв, розміщених на кристалі. Загальна кількість 8-розрядних контролерів, рекомендованих сьогодні до використовування, становить близько 40 моделей.
Мікроконтролери М68НС05 та М68НС705 відрізнюються лише наявністю у складі останнього репрограмованого ПЗП з електричним стиранням – РПЗП-ЕС (EEPROM).
Загальну структурну схему МК сімейства М68НС05/705 наведено на рис. 13.1.
До складу всіх 8-розрядних контролерів входять: процесор CPU05, блок програмування, блок контролю функціонування, генератор тактової частоти і блок внутрішнього запам’ятовувального пристрою. Склад паралельних портів і периферійних пристроїв відрізнюється у МК різних типів . Блок внутрішнього запам’ятовувального пристрою складається з оперативного запам’ятовувального пристрою даних, обсягом від 32 до 920 байт (для різних моделей), постійного запам’ятовувального пристрою програм обсягом до 32 кбайт та службового постійного запам’ятовувального пристрою обсягом 240 байт. До складу деяких моделей входять репрограмовані ПЗП з електричним стиранням – РПЗП-ЕС (EEPROM), обсягом до 920 байт.
Рисунок 13.1 – Загальна структурна схема МК сімейства М68НС05/705
Генератор тактової частоти формує імпульси, частота котрих визначається кварцовим або керамічним резонатором, RC-ланцюгом або зовнішнім генератором, які підмикаються до виводів OSC1, OSC2. Частота імпульсів тактової частоти МК для більшості моделей становить Ft = 2,1 МГц за напруги живлення Vп = 5 В і Ft = 1,0 МГц за Vп = 3,3 В. Деякі моделі мають підвищену тактову частоту Ft = 3,0 або 4,0 МГц за Vп = 5 В.
Блок програмування використовується задля завантаження інформації до РПЗП-ЕС. Завантаження здійснюється через асинхронний послідовний порт відповідно до програми завантаження, яка зберігається у службовому ПЗП. При цьому здійснюється контроль правильності запису кожного байта.
Блок конфігурування використовується задля визначення режиму роботи пристроїв, які входять до складу МК.
Блок контролю функціонування забезпечує контроль за виконанням програми за допомогою вартового таймера WDT (Watch-Dog Timer), а також контроль частоти імпульсів тактової синхронізації.
Блок паралельних та послідовних портів у різних моделях МК вміщує від двох до чотирьох 8-розрядних паралельних портів, всі виводи котрих можуть використовуватися задля двоспрямованого обміну. в деяких моделях окремі виводи може бути призначено лише для виведення або введення, а також задля приймання сигналів запитів переривань, входів аналого-цифрового перетворювача, входу таймера, виходів сигналів контролера рідинно-кристалічного індикатора і для організації виводів синхронних та асинхронних портів.
Задля послідовного обміну використовуються асинхронні порти SCI (Serial Communication Interface) або SCI+ і синхронні порти SPI (Serial Peripheral Interface) або SIOP (Simple Synchronous serial input-output Port) або SSPI (Simple Serial Peripheral Interface). Деякі серії мають у своєму складі спеціалізовані послідовні порти, призначені для організації мікроконтролерних мереж. Такі МК широко використовуються у складі пристроїв автоматики, вимірювальної апаратури тощо.
До складу блока периферійних пристроїв можуть входити таймери, широтно-імпульсний модулятор, спеціальні вихідні схеми задля підключення пристроїв індикації тощо.
МК сімейства М68НС05/705 можуть працювати у двох режимах зі зниженим енергоспоживанням: очікування і зупину.
У режимі очікування (Wait mode) зупиняється робота процесора, але продовжується робота послідовних портів, таймерів, інших периферійних пристроїв та блока контролю функціонування. Перехід до цього режиму виконується при надходженні команди Wait. Повернення до робочого режиму здійснюється при надходженні зовнішнього запиту переривання, сигналів переривання від таймера, сигналу запуску від блока контролю функціонування і зовнішнього сигналу RESET#. Повернення відбувається за один період тактової частоти. Залежно від джерела надходження сигналу повернення до робочого режиму до програмного лічильника РС буде завантажено або адресу відповідного вектора переривання, або вектор початкового завантаження. В цьому режимі споживана потужність зменшується в кілька разів.
Перехід до режиму зупину відбувається при надходженні команди STOP. В цьому режимі припиняється робота генератора тактових імпульсів, процесора, послідовних портів, таймерів, інших периферійних пристроїв та блока контролю функціонування. В цьому режимі споживаний струм зменшується до одиниць і навіть часток мікроамперів. Вихід з цього режиму відбувається при надходженні зовнішнього запиту на переривання (на вхід IRQ# або на вивід МК, який запрограмовано як вхід сигналів переривань) або зовнішнього сигналу RESET#. До програмного лічильника РС буде завантажена адреса зовнішнього переривання або вектор початкового завантаження. Повернення до робочого режиму відбувається за час, що дорівнює 4064Тt.
При переході до режиму зниженого енергоспоживання у регістрі ознак CCR встановлюється значення ознаки І = 0, щоби забезпечити дозвіл переривання і повернення до робочого режиму.
В деяких моделях МК сімейства передбачено режим неповного зупину (Halt mode), який відрізнюється від режиму очікування лише тим, що генератор тактових імпульсів відключається від процесора, що зменшує споживану потужність. Задля повернення до робочого режиму в такому разі потрібен більший час, щоби забезпечити встановлення заданих параметрів тактових імпульсів.
Регістрову модель процесора CPU05 подано на рис. 13.2.
Процесор виконує обробку 8-розрядних операндів і зреалізовує 65 команд. До складу регістрової моделі входять:
– 8-розрядний акумулятор, використовуваний задля зберігання одного з операндів та результату виконування арифметичних чи логічних операцій;
– 8-розрядний індексний регістр Х, використовуваний задля формування адреси при індексному адресуванні. Цей регістр також є джерелом одного з операндів при виконуванні операції множення, а також може використовуватися задля тимчасового зберігання операндів та результатів;
Рисунок 13.2 – Регістрова модель процесора CPU05
– 8-розрядний регістр прапорців CCR, який зберігає значення п’яти ознак результату, як показано на рис. 13.2:
- С (Carry/Borrow Flag)– ознака перенесення (набирає значення С = 1, якщо при виконуванні операції відбувається перенесення зі старшого розряду результату);
- Z (Zero Flag) – ознака нульового результату (Z = 1, якщо результат операції дорівнює нулю);
- N (Negative Flag) – ознака знаку результату (N = 0, якщо результат додатний, та N = 1 за від’ємного результату);
- І (Interrupt Mask) – ознака дозволу переривання (І = 0 – обробляння переривань дозволено, І =0 – заборонено);
- Н (Half-Carry Flag) – допоміжне (міжтетрадне) перенесення. Використовується при виконуванні операцій над двійково-десятковими числами;
– 16-розрядний програмний лічильник РС вміщує адресу поточної виконуваної команди. Кількість використовуваних розрядів залежить від обсягу внутрішньої пам’яті МК. Максимальний обсяг, що може адресуватися, становить 32 кбайти (розряди 0...14). При включенні МК (виконання команди RESET) до програмного лічильника автоматично завантажується адреса першої команди програми (вектор початкового завантаження) з двох останніх комірок пам’яті ($FFFE...$FFFF);
– 16-розрядний вказівник стека SP, який використовується для роботи зі стеком. Стек в МК сімейства М68НС05/705 має обсяг 64 байти і розміщується наприкінці молодших 256 байтів ОЗП даних, тому задля адресування використовується лише 6 молодших розрядів регістра SP, куди при запуску МК автоматично завантажується $00FF. Стан старших 10 розрядів вказівника стека при роботі не змінюється.
Блок конфігурування призначено задля визначення певних характеристик та режимів роботи МК. Він складається з регістрів конфігурування. Ці регістри в МК підсімейства 68НС05 є комірками пам’яті ПЗП, програмованими маскою на етапі виготовлення мікросхеми, тому їхній вміст при експлуатації не змінюється. В МК підсімейства 68НС705 ці регістри є комірками одноразово програмованих ПЗП, які програмуються при першому вмиканні мікросхеми і за подальшої роботи не змінюються. Лише при використовуванні МК з РПЗП-ЕС вміст цих комірок можна змінювати. Кількість регістрів і призначення окремих бітів в них зумовлюється типом МК. Так, в МК МС68НС705J1А, який досліджується при виконуванні лабораторного практикуму з дисципліни, блок конфігурування представлено одним регістром MOR. Формат вмісту цього регістра подано на рис. 13.3.
Рисунок 13.3 – Формат вмісту регістра MOR
Біти цього регістра мають таке призначення:
– SOSCD – визначає значення затримки вмикання при запуску МК, яка потрібна задля входження до робочого режиму генератора тактових імпульсів. Якщо біт SOSCD = 0, то затримка становить 4064Тt, а за SOSCD = 1 – 128Тt. Цей варіант зреалізовується при використовуванні зовнішнього генератора тактових імпульсів;
– EPMCEC – біт захисту. Значення біта EPMCEC = 1 забороняє читання вмісту РПЗП-ЕС;
– OSCRES – при значенні цього біта OSCRES = 1 зреалізовується підмикання внутрішнього резистора поміж виводами OSC1 та OSC2 при використовуванні високочастотного кварцового резонатора в якості елемента, який визначає часові характеристики;
– SWAIT – значення цього біта SWAIT = 1 забезпечує переключення МК до режиму неповного зупину при надходженні команди STOP;
– SWPDI – значення цього біта SWPDI = 1 забезпечує підключення резисторів, які “підтягують” їхній потенціал до рівня логічного 0, для виводів портів, запрограмованих на введення даних;
– PIRQ – значення цього біта PIRQ = 1 забезпечує роботу виводів молодшої тетради порту А (РА3 – 0) в якості входів для зовнішніх запитів переривання;
– LEVEL – визначає вид сигналу зовнішнього переривання. LEVEL = 1 відповідає сигналові переривання, котрий має низький рівень (логічний 0), LEVEL = 0 визначає сигнал переривання як зріз потенціалу;
– COPEN – дозволяє при значенні COPEN = 1 роботу блока функціонування.
Найбільш складну організацію має регістр конфігурування МК МС68НС705С8А, котрий зреалізовується за допомогою трьох регістрів: OPTION, MOR1 та MOR2.
Регістр OPTION входить до складу блока пам’яті МК і має адресу $1FDF, регістри MOR1 та MOR2 входять до складу блока конфігурування. Формат цих регістрів подано на рис. 13.4.
Рисунок 13.4 – Формат вмісту регістрів OPTION (а), MOR1 (б) та MOR2(в)
Регістр OPTION визначає тип розділів пам’яті, що конфігуруються, і вид сигналів зовнішнього переривання. Його біти мають такі значення:
– RAM0 визначає тип першого розділу пам’яті, що конфігурується, (адреси комірок $0020...$004F). Значення RAM0 = 0 свідчить, що у цьому розділі розташовано комірки РПЗП-ЕС, а за RAM0 = 1 у цьому розділі розташовано комірки ОЗП;
– RAM1 визначає тип другого розділу пам’яті, що конфігурується, (адреси комірок $0020...$015F). Значення RAM1 = 0 свідчить, що у цьому розділі розташовано комірки РПЗП-ЕС, а за RAM1 = 1 у цьому розділі розташовано комірки ОЗП;
– IRQ визначає вид сигналу зовнішнього переривання, який сприймається як запит переривання. IRQ = 1 відповідає сигналові переривання, що має низький рівень (логічний 0), а IRQ = 0 схарактеризовує сигнал переривання як зріз імпульсу;
– SEC – біт захисту. Значення біта SEC = 1 забороняє читання вмісту РПЗП-ЕС.
Регістр MOR1 (адреса $1FF0) визначає призначення виводів порту В: при значенні PBPUх = 0 відповідний вивід Puх використовується як вхід зовнішніх запитів переривання, за PBPUх = 0 цей вивід використовується задля обміну даними. Молодший біт (PBPU0 COPC) цього регістра також використовується задля скидання вартового таймера у блоці контролю функціонування.
Регістр MOR2 (адреса $1FF1) використовується в режимі емуляції моделі МС68НС0512А і виконує функції скидання вартового таймера у блоці контролю функціонування цієї моделі.
Блок контролю функціонуванняскладається з блоків контролю функціонування COP (Computer Operating Property), до складу котрих входить вартовий таймер, а також монітор тактових імпульсів (в деяких моделях).
Вартовий таймер блока контролю функціонування (WDT) МК сімейства М68НС05/705 контролює правильність виконування програми. Правильність виконування перевіряється за результатами запису певних значень до відповідних регістрів. Якщо такий запис не виконується за певний час Тw, то блок контролю формує сигнал RESET# – і відбувається перезавантаження контролера. Період контролю визначається при конфігуруванні МК.
В МК МС68НС705J1А робота WDT дозволяється при встановленні біта COPEN = 1 до регістра конфігурування MOR. Скидання вартового таймера відбувається під час запису нуля до молодшого біта регістра COPR, адреса якого є $07F0. Період скидання має не перевищувати
Тw = 262144 Кw / Ft,
де Кw – коефіцієнт задля задавання можливих інтервалів часу контролю, визначається значенням бітів RT1-0 у регістрі керування таймером MFT. Визначається за табл. 13.1; Ft – тактова частота МК.
Таблиця 13.1 – Відповідність значень Кw бітам RT1-0
RT1-0 | Кw | |
Така процедура використовується у більшості моделей і має назву – непрограмоване скидання. Вона зреалізовується періодичним завантаженням нуля до молодшого біта регістра COPR:
LDA #$x0 ; завантаження до акумулятора числа, яке має значення 0
; у молодшому розряді
STA $07F0 ; перезапис числа з акумулятора до регістра COPR
Ці команди слід включити до тексту робочої програми, і вони мають виконуватися не рідше одного разу за час контролю Тw.
Режим непрограмованого скидання для МК МС68НС705С8А зреалізовується при запису 1 до біта NCOPE регістра MOR2, а скидання вартового таймера відбувається під час запису 0 до молодшого біта регістра MOR1. Задля визначення періоду скидання в цьому разі значення коефіцієнта Кw = 1.
В деяких моделях МК, в тому числі МС68НС705С8А, можна зреалізовувати програмне скидання замість описаного вище. При цьому для керування роботою вартового таймера використовується вміст двох регістрів у блоці контролю функціонування: регістра керування COPCR (адреса $001E) і регістра скидання COPR. Вміст регістра COPCR подано на рис. 13.5.
Рисунок 13.5 – Формат вмісту регістра COPCR
Біти регістра COPCR мають таке призначення:
– COPF – ознака перезапуску блока контролю функціонування; біт набирає значення COPF = 1, якщо відбувся перезапуск МК після спрацьовування вартового таймера чи зниження частоти тактових імпульсів (значення цього біта можна лише читати);
– CME – значення CME = 1 дозволяє роботу схеми контролю частоти тактових імпульсів, протилежне значення – забороняє;
– COPE – значення COPE = 1 дозволяє контроль за виконанням програми за допомогою вартового таймера, котрий зреалізовує непрограмне скидання;
– CM1, CM0 – визначають значення коефіцієнта Кw аналогічно до значень RT1-0 регістра керування таймером MFT.
Читання вмісту регістра COPCR призводить до скидання значення біта COPF = 0. При вмиканні МК всі біти, окрім COPF, встановлюються в 0. Після запуску біти CME, COPE, CM1–0 можуть встановлюватися в 1 лише один раз, а потім лише читатися.
Задля контролю виконування програми в цьому разі встановлюється значення біта PCOPE = 1, а до регістра COPR (адреса $001D) здійснюється періодичний запис чисел $55, потім $AA. Часовий інтервал поміж цими записами не повинен перевищувати значення Тw, яке здобувається як
Тw = 32768 Кw / Ft,
де значення Кw та Ft віднаходяться в наведений вище спосіб.
Якщо за час Тw запису обох чисел не відбувається, то формується сигнал RESET# і здійснюється перезавантаження МК.
Блок контролю функціонування МК МС68НС705С8А також вміщує монітор тактових імпульсів, котрий контролює значення частоти генератора тактових імпульсів. Ця схема формує сигнал RESET# , якщо за час Тх не надходить тактового імпульсу. Цю схему слід виключати, якщо передбачається робота з низькими тактовими частотами.
Блок паралельних та послідовних портівМК МС68НС705J1А вміщує лише два паралельних порти А та В з можливих п’яти, передбачених у складі блока паралельних та послідовних портів сімейства М68НС05/705.
Вісім виводів порту А МК МС68НС705J1А може бути запрограмовано на введення-виведення даних у паралельному форматі або чотири з них можуть використовуватися в якості входів для сигналів переривань. Порт В має лише шість виводів для організації обміну у паралельному форматі.
Робота портів зорганізовується за допомогою регістрів даних PORTA та PORTB, котрі мають адреси відповідно $00 та $01, а також двох регістрів напрямку пересилання DDRA та DDRB. Регістри напрямку пересилання визначають режим роботи відповідних виводів, котрі після початкового завантаження запрограмовані на приймання даних (в регістрах DDRх записано 0 у всіх розрядах). Для використання виводу в якості виходу даних, відповідні розряди регістрів напрямку слід встановити у стан 1.
Встановлення біта SWPDI = 1 дозволяє підключення (”підтягування”) входів портів до рівня логічного нуля задля виключення завад, які можуть виникати у вхідних колах МК, при переході виходів джерела сигналів до високоімпедансного стану.
Виходи портів забезпечують значення струмів навантаження Iн0 = 1,6 мА при формуванні сигналу логічного 0 і Iн1 = 0,8 мА – при формуванні сигналу логічної 1.
У складі МК МС68НС705J1А блока послідовних портів немає.
У складі інших МК сімейства М68НС05/705 він складається з таких пристроїв.
Асинхронний послідовний порт (SCI), який входить до складу МК типу МС68НС705С8А, забезпечує стандартний асинхронний формат приймання-передавання даних у вигляді кадру, який вміщує один стартовий і один стоповий біти, вісім інформаційних бітів (D0...D7) і, за потреби, може доповнюватися одним додатковим контрольним бітом (D8*). Формат кадру подано на рис. 13.6.
Рисунок 13.6 – Формат кадру даних порту SCI
Обмін даними здійснюється через буферний регістр SCDR, вхід і вихід котрого з’єднуються з відповідними виводами паралельного порту D, які використовуються для послідовного обміну (РD0 та РD1).
Перед передаванням даних на лінії встановлюється сигнал очікування (сигнал логічної 1) з часом передавання не менше за період тактової синхронізації Тs = 1/Fs. Відсутність цього сигналу упродовж часу понад (10...11)Тs сприймається як сигнал завершення обміну – BREAK.
Якщо кадр вміщує в усіх інформаційних бітах, а також у контрольному біті сигнал, що дорівнює 1, то такий кадр сприймається як сигнал завершення передавання – BREAK, а в разі передавання сигналу логічного 0 – як сигнал очікування наступного циклу передавання даних – IDLE.
Керування обміном даними через порт SCI здійснюється відповідно до вмісту 8-розрядних регістрів керування SCCR1 (адреса $0E) і SCCR2 (адреса $0F), регістра стану SCSR (адреса $10) і регістра BRR (адреса $0D), формат вмісту котрих подано на рис. 13.7.
Рисунок 13.7 – Формат вмісту регістрів SCCR1 (a), SCCR2 (б),
SCSR (в), BRR (г)
Регістр SCCR1 (рис. 13.7, а) вміщує такі біти:
– WAKE – сигнал активізації приймача;
Значення WAKE = 0 активізує приймач при надходженні на вхід даних RDI символа IDLE, а значення WAKE = 1 – якщо старший (адресний) розряд даних, що надійшли на вхід, має одиничне значення;
– М – сигнал, що визначає розрядність даних;
М = 0 визначає, що дані мають розрядність 1 байт (контрольного біта немає), а значення М = 1 відповідає даним, що мають довжину 9 розрядів (дані вміщують контрольний біт);
– R8 – розряд призначено для запису значення біта контролю до прийнятого сигналу;
– Т8 – біт, значення котрого записується у кадр і передається як біт контролю.
Біти регістра SCCR2 (рис. 13.7, б) мають таке призначення:
– TIE – біт дозволу формування запиту контролю переривання; значення TIE = 1 дозволяє формування сигналу при встановленні в регістрі SCSR ознаки звільнення буферного регістра при передаванні даних – TDRE = 1;
– TCIE – значення TCIE = 1 дозволяє формування запиту контролю переривання при встановленні в регістрі SCSR ознаки завершення передавання даних – TС = 1;
– RIE – значення RIE = 1 дозволяє формування запиту контролю переривання при встановленні в регістрі SCSR ознаки заповнення буфера або переповнення приймача – RDRF = 1 або OR = 1;
– ILIE – біт дозволу формування запиту контролю переривання (ILIE = 1) при надходженні на вхід даних RDI сигналу завершення обміну (встановлення біта IDLE = 1 в регістрі SCSR);
– TE – біт включення передавача (TE = 1), а також його відключення (TE = 0);
– RE – біт включення приймача (RE = 1), а також його відключення (RE = 0);
– RWU – біт керування приймачем; значення RWU = 1 переводить приймач до режиму очікування, а також дозволяє (відповідно до значення WAKE) активізацію приймача;
– SBK – біт завершення обміну; при значенні SBK = 1 формується і передається на вихід передавача символ завершення обміну BREAK (послідовність 0).
Перед передаванням даних, записаних до регістра SCDR, біт SBK встановлюється в 1, потім це значення скидається і передавач передає символ завершення обміну (10 або 11 нулів) – встановлює на виході рівень 1 упродовж одного періоду сигналу синхронізації; після цього розпочинається передавання кадру даних.
Регістр стану SCSR (рис. 13.7, в) вміщує ознаки, формовані в перебігу передавання чи приймання даних. Для користувача він є доступний лише для читання. Біти регістра стану мають таке призначення:
– TDRE – ознака звільнення буфера передавача; цей біт набирає значення TDRE = 1 після завершення перезапису вмісту регістра SCDR до вихідного зсувового регістра для подальшого передавання лінією зв’язку;
– TC – ознака завершення передавання; набирає значення TC = 1 після передавання останнього біта даних з вихідного зсувного регістра;
– RDRF – ознака заповнення буфера приймача; значення RDRF = 1 встановлюється після завершення перевантаження даних з вхідного зсувного регістра до буферного регістра;
– IDLE – ознака надходження сигналу очікування; якщо на вході даних сигнал дорівнює 1 упродовж 10...11 тактів сигналу синхронізації, то біт набирає значення IDLE = 1;
– OR – ознака переповнювання приймача. Встановлюється значення OR = 1, якщо поточний символ надходить до зсувного регістра приймача до зчитування з регістра SCDR попереднього. В такому разі вміст SCDR зберігається, а символ, що надійшов, втрачається;
– NF – ознака наявності шумів на лінії приймання. Встановлюється значення NF = 1, в разі зміни стану входу до завершення приймання поточного біта;
– FE – ознака порушення кадру. Значення FE = 1 встановлюється, якщо тривалість стопового біта є меншою за період сигналу синхронізації Тs.
Ознаки запитів переривань TDRE, TC, RDRF, IDLE, OR формуються, якщо це дозволено відповідними бітами регістра SCCR2. Програми обслуговування цих переривань повинні зчитати і проаналізувати вміст регістра SCSR задля правильної обробки переривання. Ознаки NF та FE не формують запитів на переривання, читаються і аналізуються за результатами програмного опитування.
Значення ознак TDRE і TC скидаються в 0, якщо при передаванні даних читання вмісту SCSR виконується після запису даних до регістра SCDR, а значення ознак RDRF, IDLE та OR скидаються в 0, якщо при прийманні даних читання вмісту SCSR виконується після зчитування даних з регістра SCDR.
Вміст регістра BRR (рис. 13.7, г) зумовлює швидкість обміну даними встановленням значення тактової частоти Fs відповідно до виразу Fs = Ft / (Kd·Ks). Значення коефіцієнтів Kd та Ks обираються встановленням відповідних значень бітів регістра BRR. Значення Kd зумовлюється значенням бітів SCP1-0, а коефіцієнта Ks – SCP2-0. Це надає змогу зреалізовувати великий діапазон значень швидкостей обміну від 10 біт/с до 100 кбіт/с.
В деяких моделях МК сімейства використовується модифікований асинхронно-синхронний порт SCI+. Використовування такого порту надає змогу визначати швидкість обміну окремо для лінії передавання і приймання даних, а також забезпечує можливість синхронного передавання даних. Для забезпечення синхронного передавання даних порт має окремий вихід синхросигналу, який не суміщено з виходами паралельних портів.
Синхронний послідовний порт (SPI), який входить до складу порту D МК МС68НС705С8А, складається з регістра даних SPDR (адреса $0C), регістра керування SPCR (адреса $0А) і регістра стану SPSR (адреса $0В).
Обмін здійснюється 8-розрядними даними, які зчитуються з регістра даних SPDR або записуються до нього.
Керування процесом обміну здійснюється відповідно до стану бітів регістра SPCR, формат вмісту якого подано на рис. 13.8, а схемна реалізація організації послідовного обміну поміж двома абонентами через синхронний послідовний порт SPI–на рис. 13.9.
Вивід SCK (рис. 13.9) призначено для передавання сигналу синхронізації. На боці ведучого SPI цей вивід використовується як вихід сигналу, а на боці веденого – як вхід. Лінія MOSI використовується для передавання інформації від ведучого до веденого SPI. Лінією MISO здійснюється передавання інформації від веденого SPI до ведучого. Виводи SS# використовуються для вибору режиму функціонування; рівень 1, який надходить на цей вивід, визначає відповідний SPI як ведучий, а рівень 0 – як ведений.
Рисунок 13.8 – Формат вмісту регістра керування SPCR
Рисунок 13.9 – Організація синхронного обміну даними через порт SPI
Обмін проводиться по лініях MOSI або MISO і в кожному такті здійснюється запис одного біта до молодшого розряду зсувного регістра і вивід одного біта зі старшого. Обмін виконується байтами, які зчитуються або записуються до регістра SPDR.
Обмін здійснюється відповідно до коду, який записано у регістрі SPCR (див. рис. 13.8):
– значення SPE = 1 призводить до включення порту і використання його виводів (див. рис. 13.9);
– значення біта MSTR визначає порт для програмування в якості веденого або ведучого; MSTR = 1 визначає відповідний порт як ведучий, а значення 0 – як ведений;
– значення бітів SPR1-0 ведучого SPI зумовлює швидкість обміну; значення цих бітів задають значення коефіцієнта ділення Kd у виразі Fs = Ft/Kd;
– біт CPOL визначає полярність синхросигналу. Значення CPOL = 0 підтримує на лінії SCK незмінний рівень 0 до початку циклу обміну, а значення CPOL = 1 – рівень 1. Після завантаження даних до регістра SPDR ведучого порту на його вихід SCK надходять сигнали тактової синхронізації. Фронт або зріз цих сигналів, залежно від значення біта CPOL, зумовлюють момент початку передавання поточного біта або початок запису його до зсувного регістра;
– CPHA – біт фази синхронізації. Визначає активний перепад сигналу синхронізації, який зумовлює формат передавання даних, як показано на рис. 13.10. Робота порту SPI може здійснюватися у форматі 0 (рис. 13.10, а) або у форматі 1 (рис. 13.10, б).
Рисунок 13.10 – Часові діаграми процесу передавання даних через SPI
Порти SPI працюють у форматі 0 при встановленні у регістрі SPCR значення біта CPHA = 0. При цьому ведений SPI формує старший біт сигналу, що передається після отримання від ведучого SPI сигналу SS# = 0 (як показано на рис. 13.10, а). Значення біта CPOL = 0 означає, що після запису даних до регістра SPDR ведучого SPI розпочинається процес обміну даними і видавання даних з ведучого та веденого портів здійснюється при встановленні на виводі SCK рівня 0, а введення даних до зсувних регістрів – при встановленні на виводі SCK рівня 1. Якщо значення біта CPOL = 1, то виведення даних відбувається за значення SCK = 1, а введення – за рівня 0.
Після завершення передавання символу на вхід SS# веденого порту треба подати сигнал рівня 1, а перед початком передавання наступного символу встановити рівень 0.
При роботі у форматі 1 ведучий і ведений порти розпочинають передавання даних водночас. Якщо значення біта CPOL = 0, то початок передавання визначається надходженням фронту сигналу синхронізації і надходженням зрізу, якщо значення CPOL = 1.
Введення даних здійснюється при надходженні фронту, якщо CPOL = 1, і зрізу, – якщо CPOL = 0. При цьому значення сигналу SS# на вході веденого порту може зберігати своє значення поміж циклами передавання різних символів.
Контроль за процесом обміну здійснюється за допомогою вмісту регістра стану SPSR, формат котрого подано на рис. 13.11. Значення бітів – ознаки виконування поточного циклу обміну – встановлюються після завершення кожного циклу обміну.
Рисунок 13.11 – Формат вмісту регістра стану SPSR
Біти регістра стану SPSR мають таке призначення:
– SPIF – ознака завершення обміну. Після передавання байта даних цей біт набирає значення SPIF = 1. При цьому формується запит переривання SPI, якщо в регістрі SPCR біт дозволу переривання встановлено SPIE = 1;
– WCOL – ознака помилки запису. Встановлюється значення WCOL = 1, якщо здіснюється спроба запису до регістра даних SPDR до завершення процесу зчитування даних з нього;
– MODF – ознака помилки режиму. Встановлюється значення MODF = 1 за спроби перевести порт, який працює в режимі ведучого, до режиму веденого.
Вміст регістра SPSR може бути лише зчитано. Обнулення бітів цього регістра відбувається після зчитування його поточного стану і запису до регістра SPDR даних для наступного циклу обміну.
Послідовний периферійний порт (SIОP), котрий використовується в МК МС68НС705Р6А, може використовуватися для обміну даними, який буде відбуватися розпочинаючи зі старшого або молодшого розряду.
Задля обміну використовуються три виводи: SDI – для передавання інформації від веденого порту до ведучого (аналог MISO), SDO – для передавання інформації від ведучого порту до веденого (аналог MOSI) і лінії SCK – для передавання сигналу синхронізації. Виводи порту SIОP зорганізовуються на виводах РВ5-7 паралельного порту В. Сигнал SS# – відсутній, тому що в цьому порті не формується запит переривання після завершення передавання і стан порту після завершення поточного циклу обміну можна контролювати лише програмно.
Послідовний периферійний порт (SSPI)переважно є аналогічний до порту SIОP.