| Робота периферійних пристроїв[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.
скачати
Робота периферійних пристроїв Зміст Введення 1. Паралельні порти вводу-виводу 2. Послідовний порт введення-виведення SPI 3. Послідовний порт введення-виведення UART 4. Послідовний порт введення-виведення TWSI (I2C) 5. Таймери-лічильники загального призначення 5.1 Таймер-лічильники типу А 5.2 Таймер-лічильники типу В 5.3 Таймер-лічильники типу С 5.4 Таймер-лічильники типу D 5.5 Таймер-лічильники типу Е 6. Сторожовий таймер 7. Аналого-цифровий перетворювач 8. Аналоговий компаратор 9. Програмований апаратний модулятор 10. Блок переривань Література Введення У роботі периферійних пристроїв беруть участь регістри введення-виведення. Робота периферійних пристроїв визначається станом розрядів регістрів управління, а стан периферійних пристроїв відображається станом розрядів регістрів стану. Імена та номери регістрів введення-виведення у мікроконтролерів різних типів вказані в додатку П4. Імена та номери розрядів регістрів управління і розрядів регістрів стану наведена в додатку П5. 1. Паралельні порти вводу-виводу Число паралельних портів введення-виведення, сумарне число висновків портів і сумарне число виводів, що виконують альтернативні функції, у мікроконтролерів різних типів зазначено в табл.1.1 в колонках Р, I / O і ALT відповідно. У табл.1 наведено імена портів і вказано кількість висновків (у чисельнику) і кількість висновків, що виконують альтернативні функції (в знаменнику) для кожного порту окремо. До складу порту РХ (X = А, В, С, D, Е) входять три регістра введення-виведення з іменами DDRX, PORTX і PINX. Регістр PINX не має апаратної реалізації. Це ім'я використовується в командах, по яких виконується читання байтів на висновках порту. Число розрядів в регістрах дорівнює числу висновків порту. Таблиця 1 Тип МК | Ім'я порту |
| PA | PB | PC | PD | PE | PF | t11 |
| 6 / 6 |
|
|
|
| t12 |
| 6 / 6 |
|
|
|
| t15 |
| 6 / 6 |
|
|
|
| 2323 |
| 3 / 2 |
|
|
|
| 2343 |
| 5 / 3 |
|
|
|
| 1200 |
| 8 / 2 |
| 7 / 2 |
|
| 2313 |
| 8 / 3 |
| 7 / 7 |
|
| t28 | 4 / 1 | 8 / 5 * |
| 8 / 0 |
|
| 4433 |
| 6 / 6 | 6 / 6 | 8 / 8 |
|
| 8515 | 8 / 8 | 8 / 8 | 8 / 8 | 8 / 7 |
|
| 8535 |
| 8 / 8 | 8 / 8 | 8 / 2 | 8 / 8 |
|
|
m163 | 8 / 8 | 8 / 8 | 8 / 4 | 8 / 8 |
|
|
m103 | 8 / 8 | 8 / 8 | 8 / 8 * | 8 / 7 | 8 / 8 | 8 / 8 * |
* - PC - тільки виходи, PB, PF - тільки входи |
Стан розряду DDRX. Y визначає напрямок передачі біта через висновок порту PX. Y. При DDRX. Y = 0 висновок PX. Y працює в режимі входу, при DDRX. Y = 1 - у режимі виходу.
У режимі входу стан розряду PORTX. Y визначає стан виведення PX. Y. При PORTX. Y = 0 висновок знаходиться в високоімпендансном стані (Z-стан), при PORTX. Y = 1 висновок, порту через внутрішній резистор з опором 30-120 кОм підключається до шини VCC. У режимі входу висновок PX. Y з'єднаний з шиною даних ШД. Y.
Значення вхідного сигналу на окремому виведення порту може бути визначено з використанням команд умовного переходу з мнемокод SBIC PINX, Y (№ 113) або SBIS PINX, Y (№ 114). При одному значенні сигналу вибирається одне продовження програми, при іншому значенні сигналу - інше продовження.
У режимі виходу розряд PORTX. Y визначає значення вихідного сигналу на виведенні PX. Y. При PORTX. Y = 0 вихідний сигнал має низький рівень напруги (U0l), при PORTX. Y = 1 - високий рівень напруги (UOнI).
У табл.2 вказано стан виводу порту PX. Y при різних комбінаціях станів розрядів DDRX. Y і PORTX. Y.
Таблиця 2
DORX. Y | PORTX. Y | PX. Y |
0 | 0 | Вхід, (Z) |
0 | 1 | Вхід, (R) |
1 | 0 | Вихід, (U0L) |
1 | 1 | Вихід, (UOH) |
У статичному стані при низькому рівні вихідного сигналу струм навантаження IOL повинен бути не більше, ніж 20 мА, при високому рівні сигналу струм навантаження IOH повинен бути не більше, ніж 3 мА. При цьому сумарний струм навантаження для всіх висновків мікроконтролера повинен бути не більше, ніж деяке порогове значення (200-400 мА для мікроконтролерів різних типів) і сумарний струм навантаження для висновків мікроконтролера, розташованих на одній стороні корпусу мікросхеми, також повинен бути не більше, ніж деяке порогове значення (100-200 мА для мікроконтролерів різних типів).
Завдання значення вихідного сигналу на окремих висновках порту виконується з використанням команд з мнемокода CBI PORTX, Y (№ 65) (для низького рівня) і SBI PORTX, Y (№ 66) для високого рівня.
При спільному використанні всіх розрядів порту для прийому і видачі байтів використовуються команди з мнемокода IN Rd, PINX (№ 60) та OUT PORTX, Rr (№ 61) відповідно.
Звернення до паралельного порт) 'для прийому і видачі байтів може бути виконано з використанням команд зі зверненням з адресами в адресному просторі SRAM (№ № 34-57). При цьому в якості адрес використовуються номери регістрів введення-виведення, збільшені на $ 20.
При пуску і перезапуск мікроконтролера всі розряди регістрів DDRX і PORTX всіх портів скидаються в нульове стан і висновки портів працюють в режимі входів і знаходяться в Z стані.
Винятком є розряд PORTA.2 регістру PORTA в мікроконтролері типу t28, який встановлюється в одиничний стан.
У мікроконтролері тина m163 при установці в одиничний стан розряду PUD регістру SFIOR (№ $ 30) у всіх розрядах всіх портів розривається ланцюг, що зв'язує висновок порту з шпигун VCC через резистор. У мікроконтролері типу t15 розряд PUD входить в регістр MCUCR (№ $ 35).
У мікроконтролері типу t28 висновки порту РВ підключаються через резистори до шини VCC при одиничному стані розряду PLUPB регістру MCUCS.
2. Послідовний порт введення-виведення SPI
Порт SPI входить до складу периферійних пристроїв мікроконтролерів типу 4433, 8515, 8535, ml63 і t10З.
Основним елементом порту SPI є восьмирозрядний реверсивний зсувний регістр, який використовується для паралельного введення з шипи даних мікроконтролера байта, призначеного для видачі: послідовною видачі байти на вихід мікроконтролера з одночасним послідовним введенням байта з входу мікроконтролера і паралельної видачі введеного байта в буферний регістр для подальшої передачі в шину даних мікроконтролера. Зсувний регістр і буферний регістр мають одне ім'я - SPDR (№ $ 0F). Запис байта в зсувний регістр виконується за командою OUT SPDR, RI, читання байта з буферного регістра - за командою IN Rd, SPDR.
До складу порту SPI входять також регістр управління SPCR (№ $ 0D), регістр стану SPSR (№ $ 0Е) і елементи, що керують роботою порту. Структурна схема порту SPI зображена.
Порт SPI переводиться в робочий стан при установці в одиничний стан розряду SPE регістру SPCR. При цьому висновки порту MOSI, MISO, SCK і SS підключаються до зовнішніх висновків мікроконтролера відповідно до табл.3.
Таблиця 3
Висновки порту SPI | Тип МК |
| 4433 | 8515 | 8535 | ГП163 | m10 З |
MOSI | РВЗ | РВ5 | РВ5 | РВ5 | РВ2 |
MISO | РВ4 | РВ6 | РВ6 | РВ6 | РВЗ |
SCK | РВ5 | РВ7 | РВ7 | РВ7 | РВ1 |
SS |
Порт SPI може працювати в режимі ведучого (master) або веденого (slave). Вибір режиму визначається станом розряду MSTR регістру SPCR. При MSTR = 1 порт працює в режимі ведучого. При цьому виведення MOSI є виходом, висновок MISO - входом, висновок SCK - виходом. Функція виведення SS залежить від стану розряду DDRB. X (X = 2, 4, 0) регістра DDRB. Якщо DDRB. X = 1 (висновок РВ. Х є виходом), висновок SS порту SPI не підключено до висновку РВ. Х порту РВ. Якщо DDRB. X = 0 (висновок РВ. Х є входом), значення сигналу на цьому вході впливає на роботу порту SPI. При одиничному значенні сигналу на цьому вході порт працює в режимі ведучого, а при появі нульового значення сигналу він переводиться в режим веденого і для повернення в режим ведучого після появи одиничного значення сигналу на вході SS потрібно знов встановити розряд MSTR регістру SPCR в одиничний стан.
У режимі ведучого обмін байтами починається при записі байта в зсувний регістр SPDR (W). У схемі управління СУ1 виробляється серія з восьми імпульсів, яка управляє зрушенням в регістрі SPDR (W) і видається на вихід SCK для управління зрушенням в регістрі веденого порту.
Полярність імпульсів визначається станом розряду CPOL регістру SPCR. При CPOL = 0 сигнал на виході SCK у вихідному стані має нульове значення, імпульс формується при переході сигналу до одиничного значення. При CPOL = 1 сигнал у вихідному стані має одиничне значення і імпульс формується при переході сигналу до нульового значення.
Напрямок зсуву в регістрі і порядок проходження бітів на виході MOSI визначається станом розряду DORD регістру SPCR. При DORD = 0 видача байта починається зі старшого біта (D7), при DORD = 1 видача починається з молодшого біта (DO). При видачі кожного біта на вихід MOSI відповідний біт з відомого порту надходить на вхід MISO і вводиться в зсувний регістр.
Серія з восьми імпульсів в провідному порте формується з тактового сигналу СК шляхом ділення частоти в перерахункових схемою ПС. Коефіцієнт розподілу До визначається комбінацією станів розрядів SPR0 і SPR1 регістру SPCR відповідно до табл.4. У мікроконтролері типу ml63 в регістрі стану SPSR є додатковий розряд SPI2X, при одиничному стані якого швидкість передачі збільшується у два рази.
Таблиця 4
SPR1 | SPR0 | до | КГ |
0 | 0 | 4 | 2 |
0 | 1 | 16 | 8 |
1 | 0 | 64 | 32 |
1 | 1 | 128 | 64 |
4 - в МК типу m163 при SPI2X = 1
При завершенні видачі / прийому байта встановлюється в одиничний стан розряд SPIF регістра стану SPSR і при одиничному стані розряду SPIE регістру SPCR в блок переривань надходить запит переривання SPI STC (SPI Serial Transfer Complete).
Розряд SPIF скидається в нульовий стан апаратно при переході до виконання відповідної переривати програми або при читанні регістра SPSR перед записом нового байта в регістр SPDR (W).
Під час запису нового байта в регістр SPDR (W) в процесі зсуву Раніше записаного байта встановлюється в одиничний стан розряд WCOL регістру SPSR (помилка при вводі). Розряд WCOL скидається в нульовий стан при читанні регістра SPSR.
При MSTR = 0 порт працює в режимі веденого. У цьому випадку виведення MOSI працює як вхід, висновок MISO - як вихід, висновки SСК і SS - як входи. Висновки порту підключаються до відповідних висновків порту РВ при установці в одиничний стан розряду SPE регістру SPCR. Порт переходить у робочий стан при нульовому значенні сигналу на вході SS.
При надходженні серії імпульсів на вхід SCK з регістра SPDR (W) на висновок MISO послідовно виводиться байт, раніше записаний в цей регістр. Одночасно в регістр вводиться байт, що надходить на вхід MOSI. При завершенні обміну байтами встановлюється в одиничний стан розряд SPIF регістру SPSR і при одиничному стані розряду SPIE в регістрі SPCR в блок переривань надходить запит переривання SPI STC.
Стан розрядів CPOL і DORD в регістрі SPCR у веденого порту повинно збігатися зі станом однойменних розрядів у ведучого порту. Стан розрядів SPR0 і SPR1 не впливає на роботу порту.
Стан розряду СРНА визначає значення сигналу на виході MISO при переході порту в робочий стан (SS = 0) до і після обміну байтами. При СРНА = 0 при переході порту в робочий стан па виході MISO з'являється значення біта, який буде видаватися першим, а значення сигналу після видачі восьмого біта є невизначеним. При СРНА = 1 значення сигналу на виході MISO при переході порту в активний стан є невизначеним, а після передачі восьмого біта на виході MISO зберігається значення переданого біта.
При підключенні до ведучого порту декількох відомих портів шини MOSI, MISO і SCK є загальними для всіх портів, а висновки SS ведених мікроконтролерів повинні бути з'єднані зі спеціальними виходами ведучого мікроконтролера з допомогою окремих шин. В якості спеціальних виходів ведучого мікроконтролера можуть використовуватися будь-які висновки будь-яких портів, які не використовуються в інших цілях.
3. Послідовний порт введення-виведення UART
Порт UART входить до складу периферійних пристроїв мікроконтролерів типу 2313, 4433,8515, 8535, ml63 і m10
Порт UART містить передавач, приймач, тактовий генератор і апаратуру управління передачею і прийомом. Передавач отримує байт із шини даних мікроконтролера і формує і видає послідовність бітів (кадр.), яка крім бітів, складових байт (DO, D1,.., D7), містить стартовий біт (start), що має нульове значення, та столовий біт ( stop), що має одиничне значення. Між старшим бітом байта (D7) п стоповим бітом може поміщатися додатковий біт (СВ).
Приймач виділяє стартовий біт, приймає кадр, формат якого (число бітів) задано, розформовує прийнятий кадр і готує байт для видачі в шип даних мікроконтролера.
Тактовий генератор формує сигнал, який визначає швидкість передачі і прийому бітів і дозволяє виділяти біти при прийомі кадру.
До складу порту входять регістр даних передавача UDR (Т), регістр Даних приймача UDR (R), регістр керування UCR або UCSRB (№ $ 0А), регістр стану USR плі UCSRA (№ $ 0В), регістр завдання швидкості передачі / прийому UBRR ( № $ 09) і інші елементи. Регістри Даних передавача і приймача мають один номер - $ 0С. При зверненні для запису вибирається регістр UDR (T), при зверненні Для читання - регістр UDR (R).
Передавач готовий до роботи при установці в одиничний стан розряду TXEN регістра керування UCR. При цьому вихід передавача TXD підключається до висновку певного порту мікроконтролера. Передача кадру починається при завантаженні байта в регістр UDR (T). Завантаження можна виконувати при одиничному стані розряду UDRE регістра стану USR. При скиданні мікроконтролера в початковий стан встановлюється UDRE = 1.
Завантажений байт передається в зсувний регістр передавача TSR і відбувається видача кадру на вихід мікроконтролера TXD.
При нульовому стані розряду CHR9 регістра UCR формується кадр з десяти бітів. При CHR9 = 1 кадр містить одинадцять бітів. Значення додаткового біта в цьому випадку має бути зазначено в розряді ТХВ8 регістра UCR.
Перший байт при завантаженні негайно передається в регістр TSR і розряд UDRE регістру USR зберігає одиничний стан, що дозволяє відразу після завантаження першого байта завантажувати в регістр UDR (T) другий байт. Другий і наступні байти зберігаються в регістрі UDR (Т) до завершення видачі з регістра TSR попереднього кадру. При цьому розряд UDRE регістру USR знаходиться в нульовому стані та завантаження чергового байта в регістр UDR (T) заборонена.
При завершенні видачі кадру з регістра TSR і відсутності чергового байта в регістрі UDR (T) встановлюється в одиничний стан розряд ТХС регістру USR і при одиничному стані розряду TXCIE регістра UCR в блок переривань надходить запит переривання UART ТХС.
Розряд ТХС регістру USR скидається в нульовий стан апаратно при переході мікроконтролера до виконання відповідної переривати програми або програмно при виконанні команди установка біта в одиничний стан.
При одиничному стані розряду UDRE регістру USR та одиничному стані розряду UDRIE регістра UCR в блок переривань надходить запит переривання UART DRE. Розряд UDRE скидається в нульовий стан при записі байта в регістр UDR (T). Перериває програма, що виконується за запитом переривання UART DRE, повинна утримувати команду запису в регістр UDR (T) для припинення дії цього запиту переривання.
Приймач готовий до роботи при установці в одиничний стан розряду RXEN регістра UCR. При цьому вхід приймача RXD підключається до висновку певного порту мікроконтролера. При виявленні на вході RXD негативного фронту сигналу, приймач визначає рівень сигналу в момент часу, віддалений від фронту на половину інтервалу, відведеного на передачу біта при заданій швидкості передачі. При виявленні нульового рівня приймається рішення про прийом стартового біта і далі визначаються рівні сигналу в моменти часу, віддалені один від одного на інтервал, що відводиться на передачу біта. Отримана послідовність значень вводиться в зсувний регістр приймача RSR. Якщо приймається кадр з одинадцяти бітів (CHR9 = 1), додатковий біт приймається в Розряд RXB8 регістра UCR. Якщо на місці очікуваного стопового біта сигнал має кульове значення, встановлюється в одиничний стан Розряд FE регістру USR (помилка формату). Розряд FE скидається в нульовий стан при появі одиничного значення стопового біта.
Прийнятий байт з регістра RSR переписується в регістр UDR (R). При цьому встановлюється в одиничний стан розряд RXC регістру USR і при одиничному стані розряду RXCIE регістра UCR в блок переривань надходить запит переривання UART RXC.
Розряд RXC регістру USR скидається в нульовий стан при читанні регістра UDR (R). Перериває програма, що виконується за запитом переривання UART RXC, повинна містити команду читання з Регістру UDR для припинення дії цього запиту. Якщо при завершенні прийому кадру прийнятий раніше байт не лічений з регістра UDR (R), встановлюється в одиничний стан розряд OR регістру USR (стан переповнення). Розряд OR скидається в нульовий стан при передачі байта з регістра RSR в регістр UDR (R).
Тактовий генератор BRG формує сигнал, який визначає швидкість передачі н прийому бітів і додатковий сигнал, що забезпечує виділення бітів при прийомі кадру. Швидкість передачі і прийому BR, біт / с, залежить від частоти тактового сигналу мікроконтролера FCK і числа (UBRR), двійковий код якого записаний в регістрі UBRR, і визначається за формулою:
Для роботи зі стандартними швидкостями прийому-передачі (4800, 9600,14400, 19200, 28800, 38400, 57600, 76800 і 115200 біт / с) використовуються кварцові резонатори зі спеціальними значеннями резонансної частоти (3, 6864; 7,3728; 11,059 МГц) .
У порте UART мікроконтролерів типу 4433 і ml63 регістр управління замість імені UCR має ім'я UCSRB, а регістр стану замість імені USR - ім'я UCSRA. Регістр UCSRA має додатковий розряд МРСМ. При одиничному стані розряду приймач приймає кадри, у яких додатковий біт (СВ) має одиничне значення і ігнорує кадри при СВ = 0. При нульовому стані розряду МРСМ приймаються кадри з будь-яким значенням додаткового біта. Наявність розряду МРСМ дозволяє організувати найпростішу локальну мережу (мультипроцесорну систему), в якій є один ведучий контролер і кілька відомих. Кожному відомому контролеру присвоюється певний номер.
У вихідному стані у всіх відомих контролерів МРСМ = 1.
Провідний контролер передає кадр, в якому СВ = 1, а байт є номером веденого котроллер, який повинен прийняти дані з ведучого.
Всі ведені контролери беруть кадр. Контролер, упізнав свій номер, скидає розряд МРСМ в нульовий стан. Далі ведучий контролер передає кадри, в яких СВ = 0, а байти представляють собою дані для вибраного відомого контролера. Ці кадри приймаються тільки веденим контролером, у якого МРСМ = 0. При виявленні кадру з СВ = 1 вибраний контролер переводить розряд МРСМ в одиничний стан і переходить в початковий стан.
У мікроконтролері типу ml63, крім того, регістр UCSRA має додатковий розряд U2X, а для завдання швидкості передачі використовуються два регістри - регістр UBRR (№ $ 09) для завдання молодших восьми розрядів коду числа і регістр UBRRHI (№ $ 20) для завдання старших чотирьох розрядів коду числа. Швидкість передачі визначається за формулою
де К = 16 при U2X = 0, К = 8 при U2X = 1.
У табл.5. вказані висновки портів мікроконтролерів, що використовуються в якості входу приймача (RXD) і виходу передавача (TXD) у мікроконтролерів різних типів.
Таблиця 5
Висновок |
|
| Тип | мк |
|
|
порту UART | 2313 | 4433 | 8515 | 8535 | m163 | m10З |
RXD TXD | PD0 PD1 | PD0 PD1 | PD0 PD1 | PD0 PD1 | PD0 PD1 | РЕО ре1 |
4. Послідовний порт введення-виведення TWSI (I2C)
Порт TWSI входить до складу периферійних пристроїв мікроконтролера типу ml6
Через порт TWSI мікроконтроллер підключається до двухпроводной шині IС.
Пристрій може працювати як ведучого або веденого. Статус мікроконтролера, підключеного до шини 1С, встановлюється програмними засобами.
Лінія SCL призначена для передачі синхросигналу з веду цего Пристрої в ведене. Лінія SDA спільно з лінією SCL використовується для передачі сигналів початку і кінця обміну, адресних байтів і байтів даних і сигналів підтвердження прийому байта. Лінії SCL і SDA з'єднані з однойменними висновками підключених пристроїв.
Крім того, вони через резистори R1 і R2 підключені до шини VCC. При відсутності обміну в лініях SCL і SDA встановлюється високий рівень сигналу.
Провідне пристрій після переведення його в активний стан чекає звільнення шини від обміну між іншими пристроями і формує в шині посилку початку обміну {Start, ST), яка представлена переходом сигналу в лінії SDA від високого рівня до низького рівня при високому рівні сигналу в лінії SCL.
Після видачі посилки ST в лінії SCL встановлюється низький рівень сигналу і далі формується послідовність з дев'яти позитивних імпульсів. Установка необхідного значення біта в лінії SDA виробляється при низькому рівні сигналу в лінії SCL. Передача байта починається зі старшого розряду.
Першим байтом, виданій в шину провідним пристроєм після видачі посилки ST, є адресний байт. Старші сім бітів адресного байта представляють номер (адреса) відомого пристрою, з яким буде виконуватися обмін, (А6 ,..., АТ), а молодший біт W / R визначає напрямок обміну. При W / R = 0 байти даних будуть передаватися з провідного пристрою в ведене, при W / R = 1 - у протилежному напрямку. Ведений пристрій після отримання восьмого біта встановлює в лінії SDA низький рівень сигналу, що є підтвердженням прийому байта для ведучого пристрою, (Acknowledge, ACK).
Після адресного байта ведучий пристрій передає (при W / R = 0) або приймає (при W / R = 1) байти даних.
При передачі байта даних приймаючий пристрій після прийому восьмого біта встановлює в лінії SDA низький рівень сигналу (АСК), а передавальний пристрій при появі дев'ятого імпульсу опитує стан лінії SDA. Низький рівень сигналу є підтвердженням прийому байта даних. При виявленні високого рівня підтвердження немає (No Acknowledge, NAC), що свідчить про відсутність обміну або помилку при передачі байта.
Після успішної передачі байта даних можливі три варіанти продовження роботи ведучого пристрою:
1) передача наступного байта в тому ж напрямку з участю того ж відомого пристрою;
2) вибір іншого відомого пристрою плі зміна напрямку обміну або те й інше;
3) закінчення обміну зі звільненням лінії.
У нервом випадку ведучий пристрій формує послідовність з дев'яти імпульсів і виконується пересилання чергового байта даних. У другому випадку ведучий пристрій формує посилку ST і видає новий адресний байт. У третьому випадку ведучий пристрій формує посилку кінця обміну (Stop, SP), яка представляється переходом сигналу в лінії SDA від низького рівня до високого при високому рівні сигналу в лінії SCL.
Всі відомі пристрої для виявлення в шині посилки ST приймають адресний байт і порівнюють отриманий адресу з власною адресою, який зберігається в одному з регістрів порту. При збігу адрес формується посилка АСК і пристрій переводиться в режим очікування чергової серії з дев'яти імпульсів для прийому або передачі байта даних в залежності від значення біта W / R в прийнятому адресному байті.
Всі перераховані операції в відомому пристрої виконуються апаратно.
Порт TWSI у мікроконтролера типу ml63 містить 5 регістрів введення-виведення:
■ регістр даних TWDR (№ $ 03);
■ регістр адреси TWAR (№ $ 02);
■ регістр стану TWSR (№ $ 01);
■ регістр завдання швидкості передачі TWBR (№ $ 00);
■ регістр управління TWCR (№ $ 36).
Порт переводиться в активний стан при установці в одиничний стан розряду TWEN регістру TWCR. При цьому висновки порту SCL і SDA підключаються до зовнішніх висновків мікроконтролера PC0 і РС1 відповідно.
Порт починає працювати як ведучого після установки в одиничний стан розряду TWSTA регістру TWCR.
При роботі в якості ведучого генератор G формує імпульсний сигнал, який через буферну схему I / OCL видається в лінію SCL. Швидкість передачі бітів визначається числом, код якого записаний в регістрі TWBR. Положення фронтів імпульсів в імпульсному сигналі пов'язано з виконанням певних операцій у порту і може змінюватися в деяких межах. Осредненние значення швидкості передачі BR, біт / с, визначається за формулою
де F CK - тактова частота мікроконтролера; (TWBR) - число, код якого записаний в регістр TWBR ((TWBR)> 7); t A - показник, що враховує розтягнення деяких інтервалів між фронтами імпульсів (t А = 200-600 нс).
При роботі порту як веденого порядок його роботи визначається імпульсної послідовністю, яка через висновок SCL та буферну схему I / OCL надходить в схему управління СУ.
Регістр TWDR має ланцюги для зсуву коду вліво. У нього паралельно записуються байти, призначені для послідовного виведення в лінію SDA через буферну схему I / ODA, і послідовно вводяться байти, що надходять з лінії SDA через буферну схему I / ODA. імпулси зсуву надходять зі схеми управління.
Регістр TWAR використовується тільки при роботі порту як відомого. Код, записаний в старших семи його розрядах, представляє власну адресу мікроконтролера (А6 ,..., АТ). Цей код порівнюється з допомогою схеми порівняння СС з кодом у старших семи бітах адресного байта, прийнятого в регістр TWDR.
Молодший розряд TWGCE регістру TWAR дозволяє прийом байтів даних (при TWGCE = 1) після отримання адресного байта з адресою загального виклику для всіх відомих мікроконтролерів ($ 00).
Регістр TWCR містить розряди, що визначають роботу схеми управління, (TWEA, TWSTA, TWSTO і TWEN), що відображають стан порту (TWINT і TWWC) і розряд TWIE, що дозволяє надходження запиту переривання з порту в блок переривань. Запит переривання TWSI надходить у блок переривань при TWINT = 1 і TWIE = 1.
Код, що формується в регістрі TWSR, відображає стан порту TWSI на різних етапах його роботи.
Порт може працювати в наступних режимах:
1) ведучий з передачею байтів даних;
2) ведучий з прийомом байтів даних;
3) ведений з прийомом байтів даних;
4) ведений з передачею байтів даних.
В табл.6. описаний порядок управління портом TWSI при роботі його в якості ведучого з передачею байтів (табл.6, а) і з прийомом байтів (табл.6, 5) при відсутності помилок в процесі обміну.
У таблиці використовуються наступні позначення:
■ SLA, W / R - адресний байт, де SLA - адреса відомого пристрою;
■ DATA - байт даних;
■ (TWSR) - байт в регістрі TWSR;
■ (TWDR) - байт в регістрі TWDR;
■: = - знак операції установки розряду регістра TWCR в зазначений стан.
У початковому стані розряд TWEN в регістрі TWCR знаходиться в одиничному стані, інші розряди - в нульовому стані.
У табл.7. описаний порядок управління портом TWSI при роботі його в якості веденого з прийомом байтів (в табл.7, а) і з передачею байтів (в табл.7, б) при відсутності помилок в процесі обміну.
У початковому стані розряди TWEN і TWEA регістру TWCK знаходяться в одиничному стані, інші розряди - в нульовому стані; в регістрі TWAR записаний байт SLA, 0 / 1.
Таблиця 6
№ кроку | Операція по команді у програмі | Умова переходу до наступного кроку |
а) ведучий з передачею байтів даних |
1 | TWSTA: = 1 | TWINT = 1, (TWSR) = $ 2008 |
2 | SLA, 0 → TWDR |
|
3 | TWINT: = 0 | TWINT = 1, (TWSR) = $ 18 |
4 | DATA → TWDR |
|
5 | TWINT: = 0 | TWINT = 1, (TWSR) = $ 28 |
... | Виконання кроків 4, 5 |
N | TWSTO: = 1 - кінець передачі, звільнення шини IC |
N | TWSTO: = 1, TWSTA: = 1 | TWINT = 1, (TWSR) = $ 10 |
N +1 | Виконання кроку 2 в табл. а) або б) і далі |
б) ведучий з прийомом байтів даних |
1 | TWSTA: = 1 | TWINT, (TWSR) = $ 2008 |
2 | SLA, 1 → TWDR |
|
3 | TWINT: = 0 | TWINT = 1, (TWSR) = $ 40 |
4 | (TWRD) → R d |
|
5 | TWINT: = 0 | TWINT = 1, (TWSR) = $ 50 |
... | Виконання кроків 4, 5 |
M | TWSTO: = 1 - кінець прийому, звільнення шини IC |
M | TWSTO: = 1, TWSTA: = 1 | TWINT = 1, (TWSR) = $ 10 |
M +1 | Виконання кроку 2 в табл. а) або б) і далі |
Таблиця 7
№ кроку | Операція по команді у програмі | Умова переходу до наступного кроку |
| а) ведений з прийомом байтів даних |
1 | TWINT = 1, (TWSR) = $ 60 / $ 70 | (TWDR) → R d |
2 |
| TWINT: = 0 |
3 | TWINT = 1, (TWSR) = $ 80 / $ 90 | (TWDR) → R d |
4 |
| TWINT: = 0 |
... | Далі кроки 3, 4 |
| б) ведений з видачею байтів даних |
1 | TWINT = 1, (TWSR) = $ A8 | DATA → TWDR |
2 |
| TWINT: = 0 |
3 | TWINT = 1, (TWSR) = $ B8 | DATA → TWDR |
4 |
|
TWINT: = 0 | ... | Далі кроки 3, 4 |
Одиничне стан розряду TWINT в процесі обміну може визначатися програмними засобами з використанням команди умовного переходу або апаратними засобами за запитом переривання TWSI. У другому випадку при ініціалізації порту необхідно встановити в одиничний стан також розряд TWIE регістру TWCR.
При появі помилок у процесі обміну в регістрі стану TWSR з'являються коди інші, ніж зазначені в табл.6 і 7.
Розряд TWWC регістру TWCR встановлюється в одиничний стан при спробі записати код в регістр TWDR під час зсуву коду в регістрі.
5. Таймери-лічильники загального призначення
Таймер-лічильники Т / СГ (X = 0, 1, 2 - цифра в імені таймера-лічильника) будь-якого типу містить базовий лічильник TCNTX, який має вісім або шістнадцять розрядів, і восьмирозрядний регістр управління TCCRX. Крім того, до складу таймера-лічильника входять один або декілька розрядів регістра запитів, переривання TIFR (№ $ 38, у МК типу 128 - № $ 05) і стільки ж розрядів регістра маскування переривань TIMSK (№ $ 39, у МК типу t28 - № $ 06) . Регістри TIFR і TIMSK є загальними для всіх таймерів-лічильників мікроконтролера.
Розряд регістра TIFR встановлюється в одиничний стан при формуванні в таймері-лічильнику певного запиту переривання. Запит переривання проходить в блок переривань при одиничному стані відповідного розряду регістра TIMSK. Розряд регістра TIFR скидається в нульовий стан апаратно при переході мікроконтролера до виконання відповідної переривати програми або програмно при виконанні команди установки біта в одиничний стан (!).
До складу таймера-лічильника, що виконує функцію порівняння / PWM, входить регістр порівняння OCRX, а до складу таймера-лічильника, що виконує функцію захоплення, - регістр захоплення ICRX. Розрядність регістрів OCRX і ICRX дорівнює розрядності базового лічильника TCNTX.
Для запису коду в шестнадцатіразрядний лічильник або регістр спочатку виконується команда запису (OUT) байта в старшу половину розрядів (Н), при цьому поступав з регістра загального призначення старший байт запам'ятовується в регістрі тимчасового зберігання. Потім виконується команда запису (OUT) молодшого байта в молодшу половину розрядів (L), при цьому обидва байти одночасно записуються в лічильник чи регістр.
Для читання коду з шестнадцатіразрядного лічильника або регістра спочатку виконується команда читання (IN) байта з молодшої половини розрядів (L), при цьому лічений молодший байт надходить в регістр загального призначення, а старший байт запам'ятовується в регістрі тимчасового зберігання. Потім виконується команда читання байта зі старшої половини розрядів (Н), при цьому старший байт з регістра тимчасового зберігання надходить у вказаний в команді регістр загального призначення.
5.1 Таймер-лічильники типу А
Таймер-лічильники типу А є у мікроконтролерів всіх типів крім мікроконтролера типу ТЮГ. Він має ім'я Т / З (X = 0). Таймер-лічильники типу А формує запит переривання Т / З OVF при переповненні восьмирозрядного базового лічильника TCNT0 (№ S32, у МК типу t28 - № $ 03).
Тактовий сигнал мікроконтролера СК надходить в перерахункових схему (prescaler) ПС, що представляє собою десятирозрядний лічильник, де виконується розподіл частоти тактового сигналу на 8, 64, 256 і 1024. Сигнали з чотирьох виходів перерахункових схеми надходять в схему управління СУ (мультиплексор). При наявності в мікроконтролері таймера-лічильника Т/З1 ці ж сигнали надходять в Т/З1.
У схему управління надходять також тактовий сигнал СК і сигнал із зовнішнього джерела, який приймає на вхід ТО. В якості входу то у мікроконтролерів типу 1200, 2313 і 4433 використовується висновок порту PD4, у мікроконтролерів типу 2323, 2343 і серії ATtiny - висновок порту РВ2, а у мікроконтролерів типу 8515, 8535 і m163 - висновок порту РВО.
Схема управління в залежності від комбінації станів розрядів CSOO, CS01 і CS02 регістра керування TCCR0 (№ $ 33, у МК тип t28 - № $ 04) передасть один з вступників сигналів на рахунковий вхід базового лічильника TCNT0, ведучого рахунок па складання. Сигнали, які використовуються для рахунку в лічильнику TCNT0 при різних комбінаціях значень у розрядах регістру TCCR0, вказані в табл.8.
Таблиця 8
CS02 | CS01 | CS00 | сигнал |
0 | 0 | 0 | немає |
0 | 0 | 1 | СК |
0 | 1 | 0 | СК / 8 |
0 | 1 | 1 | СК/64 |
1 | 0 | 0 | СК/256 |
1 | 0 | 1 | СК/1024 |
1 | 1 | 0 | Негативний фронт на ТО |
1 | 1 | 1 | Позитивний фронт на ТО |
При переповненні лічильника TCNT0 встановлюється в одиничний стан розряд TOV0 регістру TIFR і при одиничному стані розряду TOIE0 регістру TIMSK в блок переривань надходить запит переривання Т / З OVF.
У мікроконтролері типу tl5 в роботі таймера-лічильника типу А Беруть участь розряд PSR0 регістру SFIOR (№ $ 2С). При установці цього Розряду в одиничний стан скидається у вихідне (нульове) стан перерахункових схема ПС. Розряд PSR0 повертається в нульовий стан апаратно. У мікроконтролері типу ш163 аналогічна операція виконується при установці в одиничний стан розряду PSR10 Регістру SFIOR (№ $ 30).
5.2 Таймер-лічильники типу В
Таймер-лічильники типу В входить до складу периферійних пристроїв мікроконтролерів типу 115 (Т/З1) і ml03 (Т/С2). Він формує запит переривання Т / СХ OVF при переповненні восьмирозрядного базового лічильника TCNTX і виконує функцію порівняння / PWM з формуванням запиту переривання Т / СХ СОМР.
Тактовий сигнал мікроконтролера СК надходить в перерахункових схему ПС, де частота сигналу ділиться на 8, 64., 256 і 1024. Сигнали з чотирьох виходів перерахункових схеми надходять в схему управління СУ1 і в таймер-лічильник Т/З1 типу Е. У схему управління СУ1 надходять також тактовий сигнал СК і сигнал із зовнішнього джерела, який приймає на вхід Т2 (висновок порту PD7). При виконанні функції порівняння / PWM висновок порту РВ7 використовується в якості виходу OC2/PWM2 для видачі сигналу, який формується при збігу порівнюваних кодів або сигналу PWM2.
Схема управління СУ1 в залежності від комбінації стані розрядів CS20, CS21 і CS22 регістра керування TCCR2 передає на рахунковий вхід базового лічильника TCNT2 одні з вступників сигналів відповідно до табл.8 (при X = 2).
При переповненні базового лічильника встановлюється в одиничний стан розряд TOV2 регістру TIFR і при одиничному стані розряду TOIE2 регістру TIMSK в блок переривань надходить запит переривання Т/С2 OVF.
Режим роботи таймера-лічильника визначається комбінацією станів розрядів PWM2, СОМ21 і СОМ20 регістру TCCR2. При нульовому стані трьох названих розрядів формується тільки запит переривання Т/С2 OVE При PWM2 = 0 і інших комбінаціях станів розрядів СОМ21 і СОМ20 виконується функція порівняння. Код, що формується в базовому лічильнику TCNT2, за допомогою компаратора До порівнюється з кодом, записаним в регістрі OCR2. При збігу кодів встановлюється певне значення сигналу на виході ОС2 (висновок порту РВ7), переводиться в одиничний стан розряд OCF2 регістру TIFR і при одиничному стані розряду OCIE2 регістру T1MSK в блок переривань надходить запит переривання Т/С2 СОМР. Значення сигналу, що встановлюється на виході ОС2 при збігу кодів, визначається комбінацією станів розрядів СОМ20 і С0М21 регістру TCCR2 відповідно до табл.9.
Таблиця 9
СОМ21 | СОМ20 | Значення сигналу |
0 1 1 | 1 0 1 | Змінюється 0 1 |
Робота базового лічильника при виконанні функції порівняння залежить від стану розряду СТС2 регістру TCCR2. При СТС2 = 0 базовий лічильник після збігу кодів продовжує рахунок до переповнення і далі виконує рахунок, починаючи з 0. При СТС2 = 1 базовий лічильник при збігу кодів скидається в кульове стан і продовжує рахунок, починаючи з 0. При PWM2 = 1 і СОМ21 = 1 виконується функція PWM. Базовий лічильник веде рахунок на складання до отримання коду максимального числа (255), переводиться в режим рахунку на віднімання і в цьому режимі веде рахунок до отримання коду мінімального числа (0) і далі знову переходить в режим рахунку на складання. Акт переповнення (перехід від коду числа 255 до коду числа 0) в даному випадку відсутній.
Запит переривання Т/С2 OVF формується при переході від числа 0 до числа 1.
Стан розряду СОМ20 визначає вид зміни вихідного сигналу при збігу кодів у лічильнику і регістрі порівняння. На зображені графіках зміни числа в лічильнику TCNT2 і тимчасові діаграми сигналу PWM на виході ОС2 при заданому коді числа в регістрі порівняння (OCR2) при різних станах розряду СОМ20.
Період сигналу PWM (T) в 510 разів більше періоду сигналу, що надходить на рахунковий вхід базового лічильника.
При записі байта в регістр OCR2 (за командою з мнемокод операції OUT) байт приймається в регістр тимчасового зберігання, з регістра другий переписується в регістр OCR2 при появі в базовому лічильнику коду числа 255.
При цьому виключається поява в сигналі PWM імпульсу з випадковою тривалістю.
а) C0M20 = 0 б) С0М20 = 1
Рис.1
Таймер-лічильники типу В в мікроконтролері типу t15 має ім'я Т/З1 (Х = 1). Вихідний сигнал для роботи таймера-лічильника (РСК) має частоту 25,6 МГц при частоті тактового сигналу мікроконтролера 1,6 МГц (1 / 16 РСК). У регістрі управління є додатковий розряд CS1 Вибір сигналу для передачі на рахунковий вхід базового лічильника визначається комбінацією станів розрядів CS13, CS12, CS11 і CS10 відповідно до табл.10. Вхід для прийому сигналу із зовнішнього джерела відсутня.
Таблиця 10
CS13 | CS12 | CS11 | CS10 | Сигнал |
0 | 0 | 0 | 0 | немає |
0 | 0 | 0 | 1 | РСК (16СК) |
0 | 0 | 1 | 0 | РСК / 2 (8 СК) |
0 | 0 | 1 | 1 | РСК / 4 (4 СК) |
0 | 1 | 0 | 0 | РСК / 8 (2 СК) |
0 | 1 | 0 | 1 | РСКЛб (СК) |
0 | 1 | 1 | 0 | СК / 2 |
0 | 1 | 1 | 1 | СК / 4 |
1 | 0 | 0 | 0 | СК / 8 |
1 | 0 | 0 | 1 | СК/16 |
1 | 0 | 1 | 0 | СК/32 |
1 | 0 | 1 | 1 | СК/64 |
1 | 1 | 0 | 0 | СК/128 |
1 | 1 | 0 | 1 | СК/256 |
1 | 1 | 1 | 0 | СК/512 |
1 | 1 | 1 | 1 | СК/1024 |
До складу таймера-лічильника входять два регістра порівняння - OCR10 і OCR11. Регістр OCR10 використовуються при виконанні функції порівняння. Регістр OCR11 використовується спільно з регістром OCR10 при виконанні функції PWM. Базовий лічильник працює в режимі рахунку на складання і веде рахунок від 0 до числа, код якого записаний в регістрі OCR11. Сигнал 0C1/PWM видається на висновок порту РВ1.
У мікроконтролері типу tl5 в роботі таймера-лічильника Т/З1 беруть участь розряди FOC1A і PSR1 регістру SFIOR (№ $ 2С).
У режимі порівняння при установці в одиничний стан розряду FOC1A на виході ОС1 встановлюється необхідне значення сигналу негайно, не чекаючи збігу кодів у базовому лічильнику і регістрі порівняння. При цьому запит переривання Т/З1 СОМР не формується і базовий лічильник не скидається в нульовий стан при СТС1 = 1. Розряд FOC1A скидається в нульовий стан апаратно. У режимі PWM він не використовується.
При установці в одиничний стан розряду PSR1 скидається у вихідне (нульове) стан перерахункових схема ПС. Розряд скидається в нульовий стан апаратно.
5.3 Таймер-лічильники типу С
Таймер-лічильники типу С входить до складу периферійних пристроїв мікроконтролерів типу 8535 і ml63 (Т/С2) і типу ml03 (Т / З). Він формує запит переривання Т / СХ OVF при переповненні восьмирозрядного базового лічильника TCNTX, може виконувати функцію порівняння / PWM і працювати в режимі рахунку реального часу. У структуру таймера-лічильника типу С входять всі елементи таймера-лічильника типу В і, крім того, регістр ASSR (№ $ 30), мультиплексор М і внутрішній генератор G.
В якості вихідного сигналу для роботи базового лічильника TCNT0 може використовуватися тактовий сигнал мікроконтролера СК або сигнал TOSC1 з додаткового внутрішнього генератора G, до якого через висновки TOSC1 і TOSC2 підключений кварцовий резонатор КР2.
При частоті резонатора 32768 Гц ("часовий" кварц) параметри процесів в таймері-лічильнику з високою точністю прив'язані до одиниці вимірювання реального часу - секунді.
При нульовому стані розряду AS0 регістру ASSR використовується тактовий сигнал СК, при одиничному стані - сигнал генератора G (режим реального часу). Обраний сигнал РСКО з виходу мультиплексора М надходить в перерахункових схему ПС, в якій виконується розподіл частоти на 8, 32, 64, 128, 256 і 1024.
Сигнали з шести виходів перерахункових схеми і сигнал з виходу мультиплексора надходять в схему управління СУ1. Вибір сигналу для передачі на рахунковий вхід базового лічильника визначається комбінацією станів розрядів CSOO, CS01 і CS02 регістра керування TCCR0 відповідно до табл.11.
Таблиця 11
CS02 | CS01 | CS00 | Сигнал |
0 | 0 | 0 | немає |
0 | 0 | 1 | РСКО |
0 | 1 | 0 | РСКО / 8 |
0 | 1 | 1 | РСКО/32 |
1 | 0 | 0 | РСКО/64 |
1 | 0 | 1 | РСКО/128 |
1 | 1 | 0 | PC КО/256 |
1 | 1 | 1 | РСКО/1024 |
При роботі в режимі реального часу (AS0 = 1) процес рахунку в базовому лічильнику прив'язаний до сигналу TOSC1, а запис у регістри TCCR0 і OCR0 п в лічильник TCNT0 - до сигналу СК. Для виключення конфліктних ситуацій у лічильнику TCNT0 в режимі реального часу використовуються регістри тимчасового зберігання. При запису коду (але команді OUT) байт приймається у відповідний регістр тимчасового зберігання, при цьому встановлюється в одиничний стан відповідний розряд регістра ASSR - TCN0UB при записі в лічильник TCNTO, OCR0UB при записі в регістр OCRO, TCR0UB при записі в регістр TCCR0. Перепис байта з регістра тимчасового зберігання в основний регістр або лічильник прив'язана до сигналу TOSC1, при цьому відповідний розряд регістра ASSR скидається в нульовий стан. Чергова запис в регістр плі лічильник по команді OUT може проводитися при нульовому стані відповідного розряду регістра ASSR.
У мікроконтролерів топа 8535 і ml63 для підключення кварцового резонатора КР2 використовуються висновки порту РС6 п РС7, а у мікроконтролерів типу ml03 - спеціальні висновки корпусу.
У таймері-лічильнику типу С в мікроконтролері тина т163 (X = 2) в регістрі TCCR2 є додатковий розряд FOC2 і в регістрі SF1OR - додатковий розряд PSD2.
У режимі порівняння при установці в одиничний стан розряду FOC2 сигнал па виході ОС2 приймає необхідне значення негайно, не чекаючи збіги порівнюваних кодів. При цьому запит переривання Т/С2 СОМР не формується і базовий лічильник не скидається. Скидання розряду FOC2 в нульовий стан виконується апаратно. У режимі PWM розряд FOC2 не використовується.
При установці в одиничний стан розряду PSR2 скидається у вихідне (нульове) стан перерахункових схема ПС.
Скидання розряду PSR2 в нульовий стан виконується апаратно.
5.4 Таймер-лічильники типу D
Таймер-лічильники тина D входить до складу периферійних пристроїв мікроконтролерів типу 2313 і 4433, п має ім'я Т/З1. Він містить шестнадцатіразрядний базовий лічильник і виконує функції захоплення і порівняння / PWM. .
На лічильний вхід шестнадцатіразрядного базового лічильника TCNT1H, L з виходу схеми управління СУ1 може надходити тактовий сигнал мікроконтролера СК, або один з чотирьох сигналів з перерахункових схеми, яка є спільною для таймерів-лічильників Т / З і Т/З1, або сигнал із зовнішнього джерела , який приймає на вхід Т1.
В якості входу Т1 використовується висновок порту PD5. Вибір сигналу визначається комбінацією станів розрядів CS10, CS11 і CS12 регістра керування TCCR1B відповідно до табл.8 (X = 1, Т0 = Т1). При переповненні базового лічильника встановлюється в одиничний стан розряд TOV1 регістру TIFR і при одиничному стані розряд TOIE1 регістру TIMSK в блок переривань надходить запит переривання T / Cl OVF.
Схема управління СУ2 управляє виконанням функції захоплення, яка полягає у передачі коду, сформованого в базовому лічильнику, через ключову схему КС у шестнадцатіразрядний регістр захоплення 1CR1H, L. При цьому встановлюється в одиничний стан розряд ICF1 регістру TIFR і при одиничному стані розряду TICIE1 регістру TIMSK в блок переривань надходить запит переривання Т/З1 СAPT.
Захоплення виконується при зміні значення зовнішнього сигналу, що надходить на вхід ICP, або внутрішнього сигналу АСО, що надходить з аналогового компаратора. Вибір сигналу визначається станом розряду ACIC регістру ACSR, який входить до складу аналогового компаратора. При ACIC = 0 використовується зовнішній сигнал, при ACIC = 1 - внутрішній. Вид зміни сигналу, при якому виконується захоплення, визначається станом розряду ICES1 регістру TCCR1B. При ICES1 = О захоплення виконується при появі негативного фронту сигналу, а при ICES1 = 1 - позитивного фронту.
В якості входу ICP у мікроконтролера тина 2313 використовується висновок порту PD6, а у мікроконтролера типу 4433 - висновок порту РВО.
Розряд ICNC1 регістру TCCR1B управляє роботою схеми придушення перешкод. При ICNC1 = 0 захоплення виконується при кожній появі фронту заданої полярності.
При ICNC1 = 1 захоплення відбувається, якщо перед появою фронту протягом чотирьох тактів сигнал зберігає постійне значення.
Схема управління СУЗ управляє виконанням функції порівняння / PWM. Функція порівняння полягає у видачі певного значення сигналу на виході ОС1 при збігу кодів у базовому лічильнику і шестнадцатіразрядном регістрі порівняння OCR1H, L, яке виявляється за допомогою компаратора К. При цьому також встановлюється в одиничний стан розряд OCF1A регістру TIFR і при одиничному стані розряду OCIE1A регістру TIMSK в блок переривань надходить запит переривання Т/З1 СОМР.
Функція PWM полягає у видачі на вихід ОС1 імпульсного сигналу з заданим періодом повторення і заданою тривалістю імпульсу. При цьому також періодично формується запит переривання Т/З1 СОМР.
Робота схеми СУЗ визначається комбінацією станів розрядів PWM10, PWM11, СОМ1А0 і СОМ1А1 регістра керування TCCR1A. При нульовому стані всіх чотирьох розрядів функція порівняння / PWM не виконується і вихід ОС1 відключений ог виводу порту.
При PWM10 = 0, PWM11 = O та інших комбінаціях станів розрядів СОМ 1 АТ і СОМ1А1 виконується функція порівняння. Значення сигналу, що встановлюється на виході ОС1 при збігу кодів, зазначено в табл.12.
Таблиця 12
СОМ1А1 | СОМ1А0 | Значення сигналу |
0 1 1 | 1 0 1 | Змінюється 0 1 |
При виконанні функції порівняння режим роботи базового лічильника залежить від стану розряду СТС1 регістра керування TCCR1B. При СТС1 = 1 базовий лічильник при збігу кодів скидається в Нульове стан і продовжує рахунок, починаючи з 0. При СТС1 = 0 він Продовжує рахунок до переповнення і далі веде рахунок, починаючи з 0.
При одиничному стані хоча б одного з розрядів PWM10 і PWM11 та одиничному стані розряду СОМ1А1 виконується функція PWM. У цьому випадку базовий лічильник веде рахунок па складання до отримання числа 255 або 511 або 1023, переходить в режим рахунку на віднімання, веде рахунок на віднімання до отримання числа 0 і знову повертається у режим рахунку на додавання. Вибір максимального числа, Wmax), до якого ведеться рахунок на складання, визначається комбінацією станів розрядів PWM11 і PWM10 регістра керування TCCR1A відповідно до табл.13
Таблиця 13
PWM11 | PWM10 | N max |
0 | 1 | 255 |
1 | 0 | 511 |
1 | 1 | 1023 |
Сигнал PWM формується шляхом зміни значення сигналу на виході ОС1 при збігу кодів у базовому лічильнику і регістрі OCR1 в процесі рахунки на додавання і на віднімання. Вид зміни сигналу залежить від стану розряду СОМ1А0.
Період сигналу PWM (T) залежить від максимального числа, до якого виконується рахунок на додавання. При N max = 255 період в 510 разів більше періоду проходження імпульсів на рахунковому вході базового лічильника. При Nmax = 511 і 1023 цей показник одно 1022 і 2046 відповідно.
Розряд СТС1 регістру TCCR1B в режимі PWM не використовується. Запит переривання T / Cl OVF формується при переході базового лічильника від числа 0 до числа 1. При запису коду в регістр OCR1 код запам'ятовується в регістрі тимчасового зберігання. Перепис коду в регістр OCR1 виконується при появі в базовому лічильнику максимального числа, що запобігає появі в сигналі PWM імпульсу з випадковою тривалістю.
Як вихід ОС1 у мікроконтролера типу 2313 використовується висновок порту РВЗ, а у мікроконтролера типу 4433 - висновок порту PB1
5.5 Таймер-лічильники типу Е
Таймер-лічильники типу Е входить до складу периферійних пристроїв мікроконтролерів типу 8515, 8535, т163 і ТЮГ і має ім'я Т/З1. Він містить шестнадцатіразрядний базовий лічильник і виконує функцію порівняння / PWM в двох каналах (А і В) і функцію захоплення.
У структуру таймера-лічильника типу Е входять всі елементи структури таймера-лічильника типу D. Елементи на схемі, що використовуються при виконанні функції порівняння / РWМ, утворюють канал А.
Додатковими елементами є компаратор каналу В (KB), регістр порівняння OCR1BH, L, два додаткових розряду СОМ1В0 і СОМ1В1 в регістрі TCCR1A, додатковий розряд OCF1B в регістрі T1FR і додатковий розряд OCIE1B в регістрі T1MSK. У каналі У формується запит переривання Т/З1 СОМРВ.
Сигнал, змінюваний при виконанні функції порівняння, і сигнал PWM надходять на вихід ОС1В.
Висновки мікроконтролера, використовувані як входів Т1 і ICP і виходів ОС1А і ОС1В у мікроконтролерів різних типів, вказані в табл.14.
Таблиця 14
Висновки Т/З1 | Тип МК |
| 8515 | 8535 | t 163 | m10 З |
Т1 | РВ1 | РВ1 | РВ 1 | PD6 |
ICP | ПРО. | PD6 | PD6 | PD4 |
ОС1А | PD5 | PD5 | PD5 | РВ5 |
ОС1В | О.В. | PD4 | PD4 | РВ6 |
О.В. - Окремий висновок корпусу.
У мікроконтролері типу ml63 в регістрі TCCR1A є два додаткові розряду - FOC1A і F0C1B. При установці розряду в одиничний стан при виконанні функції порівняння сигнал на виході ОС1А / У приймає необхідне значення негайно, не чекаючи збіги порівнюваних кодів. Запит переривання при цьому не формується і базовий лічильник в нульовий стан не скидається Розряд скидається в нульовий стан апаратно. У режимі PWlVf ці розряди не використовуються.
У регістрі SFIOR є додатковий розряд PSR10. При установці цього розряду в одиничний стан перерахункових схема скидається у вихідне (нульове) стан. Розряд PSR10 скидається в нульовий стан апаратно.
6. Сторожовий таймер
До складу сторожового таймера входять автономний генератор, пере-рахункова схема, регістр управління WDTCR (№ $ 21, у МК типу t28 - № $ 01) і схема управління.
Генератор GWDT формує імпульсну послідовність. Частота проходження імпульсів залежить від напруги живлення мікроконтролера (1 МГц при Vcc = 5 В, 350 кГц при Vcc = 3 В). У перерахункових схемою ПС, яка містить багаторозрядних лічильник, виконується розподіл частоти сигналу генератора. На восьми виходах перерахункових схеми формуються сигнали, частота яких в N разів менше частоти вхідного сигналу. Вибір виходу перерахункових схеми з необхідним коефіцієнтом розподілу доопределяют комбінацією станів розрядів WDPO, WDP1 л WDP2 регістру WDTCR відповідно до табл.15.
Таблиця 15
WDP2 | WDP1 | WDP0 | N | TOUT, Усc = 5 В | TOUT, Vcc = 3 В |
0 | 0 | 0 | 16К | 15 мс | 47 МС |
0 | 0 | 1 | 32 До | 30 мс |
| 94 мс |
0 | 1 | 0 | 64 До | 60 мс | 190 мс |
0 | 1 | 1 | 128 До | 120 мс | 380 мс |
1 | 0 | 0 | 256 До | 240 мс | 750 мс |
1 | 0 | 1 | 512 До | 490 мс | 1,5 з |
1 | 1 | 0 | 1024 До | 970 мс | 3,0 з |
1 | 1 | 1 | 2048 До | 1,9 з | 6,0 з |
При одиничному стані розряду WDE регістру WDTCR на виході схеми управління СУ з частотою обраного сигналу формується запит переривання WDT Reset, при появі якого відбувається перезапуск мікроконтролера WDT Reset (п.4.2).
За командою з мнемокод WDR (№ 117) виконується скидання перерахункових схеми у вихідне (нульове) стан.
Для запуску сторожового таймера необхідно в ході програми виконати команду WDR і потім встановити в одиничний стан розряд WDE регістру WDTCR.
Для зупинки сторожового таймера необхідно встановити в одиничний стан розряд WDTOE регістру WDTCR і одночасно повторно встановити в одиничний стан розряд WDE, потім не пізніше, ніж через чотири такту після цього скинути в нульовий стан розряд WDE. Розряд WDTOE скидає в нульовий стан апаратно через чотири такту після установки його в одиничний стан. У мікроконтролера типу 1200 розряд WDTOE відсутня.
Перезапуск сторожового таймера відбувається при виконанні команди WDR під час програми при одиничному стані розряду WDE.
Програма, в якій передбачено використання сторожового Таймера, повинна періодично з інтервалом меншим, ніж період формування запиту переривання WDT Reset, з використанням команди WDR перезапускати сторожовий таймер. Якщо при появі збою команда WDR своєчасно не виконується, відбувається перезапуск мікроконтролера. Інтервал часу TOUT, через який слід виконувати команду WDR під час програми, при різних значеннях коефіцієнта ділення N і напруги живлення Vcc зазначений у табл.15.
7. Аналого-цифровий перетворювач
Аналого-цифровий перетворювач входить до складу периферійних пристроїв мікроконтролерів типу 115, 4433, 8535, ml63 і ml0 Аналого-цифровий перетворювач містить базовий перетворювач, що виконує перетворення аналогового сигналу в десятирозрядний двійковий код методом послідовних наближенні, аналоговий мультиплексор для підключення одного з входів мікроконтролера до входу базового перетворювача, регістр управління ADMUX (№ $ 07), регістр управління-стану ADCSR (№ $ 06) п шестнадцатіразрядний регістр результату ADCH, L (№ № $ 05, $ 04).
Для подачі напруги живлення і опорного напруги використовуються окремі висновки мікроконтролера AVCC, AGND і AREF.
Висновок AGND з'єднується з виводом GND мікроконтролера. Напруга на виведенні AVCC не повинно відрізнятися від напруги на виводі VCC мікроконтролера більше, ніж на ± 0,3 В. Напруга на виведенні AREF повинно знаходитися в межах від рівня на виводі AGND до рівня на виводі AVCC.
Аналогові сигнали приймаються на висновки мікроконтролера ADC0, ADC1 ... ADC7. Величина напруги аналогового сигналу може бути в межах від рівня на шині AGND до рівня на шині AVCC. Аналоговий мультиплексор AM підключає один з входів мікроконтролера до входу базового перетворювача CONV. Двійковий код номера підключається входу задається комбінацією станів розрядів MUX2, MUX1, MUX0 регістру ADMUX.
Перетворення аналогового сигналу в цифровий код у перетворювачі CONV виконується під управлінням тактового сигналу, частота якого має бути в межах від 50 кГц до 200 кГц.
Тактовий сигнал формується в перерахункових схемою ПС шляхом ділення частоти тактового сигналу мікроконтролера СК. Перерахункових схема працює при одиничному стані розряду ADEN регістру ADCSR. Коефіцієнт розподілу частоти (К) визначається комбінацією станів розрядів ADPS2, ADPS1, ADPS0 регістру ADCSR відповідно до табл.16.
Таблиця 16
ADPS2 | ADPS1 | ADPS0 | до |
0 | 0 | 0 | 2 |
0 | 0 | 1 | 2 |
0 | 1 | 0 | 4 |
0 | 1 | 1 | 8 |
1 | 0 | 0 | 16 |
1 | 0 | 1 | 32 |
1 | 1 | 0 | 64 |
1 | 1 | 1 | 128 |
Перетворення починається при установці в одиничний стан розряду ADSC регістру ADCSR. Розряд ADSC зберігає одиничне стан до завершення перетворення і потім апаратно переводиться в нульовий стан. Сформований десятирозрядний код переписується в регістр результату ADCH, L, при цьому встановлюється в одиничний стан розряд ADIF регістру ADCSR і при одиничному стані розряду ADIE регістру ADCSR в блок переривань надходить запит переривання ADC CC (ADC Conversion Complete).
Розряд ADIF регістру ADCSR скидається в нульовий стан апаратно при переході мікроконтролера до виконання переривати програми або при виконанні команди установки біта в одиничний стан.
Читання результату з шестнадцатіразрядного регістру ADCH, L Повинно починатися з читання молодшого байта. При цьому блокується занесення нового результату з базового перетворювача в регістр Результату і лічений потім старший байт належить тому ж результату, що і лічений раніше молодший байт.
Перетворювач може працювати в одиночному режимі і в циклічному режимі. Вибір режиму визначається станом розряду ADFR регістру ADCSR. При ADFR = 0 перетворювач працює в одиночному режимі.
Перетворення починається при установці в одиничний стан розряду ADSC і виконується за 14 тактів. Для виконання наступного перетворення необхідно знову встановити в одиничний стан розряд ADSC.
При ADFR = 1 перетворювач працює в циклічному режимі. Робота починається при установці в одиничний стан розряду ADSC. Перетворення виконується за 13 тактів, після чого відразу починається наступне перетворення. Робота в циклічному режимі припиняється після скидання в нульовий стан результату ADFR.
В обох режимах на виконання першого перетворення після пуску перерахункових схеми витрачається на 12 тактів більше, ніж на виконання наступних перетворень. Ці такти забезпечують ініціалізацію перетворювача.
Для зменшення перешкод, що викликаються роботою процесора, передбачена можливість виконання перетворення з перекладом контролера в режим холостого ходу. Перетворювач повинен знаходитися в одиночному режимі (ADFR = 0), перерахункових схема працює (ADEN = 1), переривання дозволено (ADIE = 1), запуск перетворення відсутній (ADSC = 0). Контролер переводиться в режим холостого ходу (п.4.3), при цьому апаратно запускається перетворювач. При завершенні перетворення надходить запит переривання ADC CC, контролер виходить з режиму холостого ходу, виконує переривати програми і повертається до виконання програми з точки переходу в режим холостого ходу.
Аналого-цифрові перетворювачі мікроконтролерів інших типів мають деякі відмінності від розглянутого перетворювача.
У мікроконтролері типу 4433 є можливість підключення до входу базового перетворювача внутрішнього джерела еталонного напруги 1,22 ± 0,05 В. Підключення виконується при установці в одиничний стан додаткового розряду ADCBG в регістрі ADMUX.
У мікроконтролері типу t15 в якості опорного напруги крім напруги від зовнішнього джерела, що подається на висновок AREF, може використовуватися напруга на виводі VCC або напруга від внутрішнього джерела. Вибір джерела здійснюється шляхом встановлення певної комбінації станів додаткових розрядів REFSl> REFS0 регістру ADMUX. В якості вхідного сигналу може використовуватися різниця напруги на входах ADC2 і ADC У цьому випадку напруга на цих входах повинно змінюватися в межах від Про до 2,56 В, а різницевий сигнал перед перетворенням може посилюватися в 20 разів. Різницевий сигнал без посилення використовується при комбінації станів 110 в розрядах MUX2, MUX1, MUX0, а різницевий сигнал з підсиленням - при комбінації 111.
У регістрі ADMUX, крім того, є додатковий розряд ADLAR. При ADLAR = 0 код результату розміщується в молодших десяти розрядах пари регістрів ADC H, L, а при ADLAR = 1 - у старших десяти розрядах цієї пари регістрів.
У мікроконтролері типу ml03 аналого-цифровий перетворювач не працює в циклічному режимі і в регістрі ADCSR відсутня розряд ADFR. Комбінація 000 розрядів ADPS2, ADPS1, ADPS0 регістру ADCSR не використовується.
У мікроконтролері типу ml63 в якості опорного напруги може використовуватися напруга 2,56 В від внутрішнього джерела або напруги на виводі VCC. Вибір опорного напруги визначається комбінацією станів додаткових розрядів REFS1 і REFS0 регістру ADMUX. Крім того, в регістрі ADMUX є додатковий розряд ADLAR. При ADLAR = 1 десятирозрядний код результату поміщається в старші десять розрядів регістра ADCH, L. При читанні старшого байта отримують восьмирозрядний код результату.
Мікроконтролери типу tl5 і т163 можуть переводитися в енергозберігаючий режим роботи з придушенням перешкод у роботі аналогового перетворювача (п.4.3).
У табл.17 вказані висновки мікроконтролера, використовувані як входів аналого-цифрового перетворювача у мікроконтролерів різних типів. У мікроконтролера типу t15 для подачі опорного напруги використовується висновок PB0.
Таблиця 1 липня
Тип МК | Входи ADC |
| ADO | ADC1 | ADC2 | ADC3 | ADC4 | ADC5 | ADC6 | ADC7 |
t 15 | РВ5 | РВ2 | РВЗ | РВ4 |
|
|
|
|
4433 | РСО | РС1 | РС2 | РСЗ | РС4 | РС5 |
|
|
8535 | РАВ | РА1 | РА2 | РАЗ | РА4 | РА5 | РА6 | РА7 |
m 163 | РАВ | РА1 | РА2 | РАЗ | РА4 | РА5 | РА6 | РА7 |
m103 | PFO | PF1 | PF2 | PF3 | PF4 | PF5 | PF6 | PF7 |
8. Аналоговий компаратор
Аналоговий компаратор входить до складу периферійних пристроїв мікроконтролерів всіх типів, крім 2323 і 234 Аналоговий Компаратор має два входи - AIN0 і AIN1, на які надходять аналогові сигнали, порівнювані за класами напруги. До складу аналогового компаратора крім базового компаратора входить регістр управління-стану ACSR (№ $ 08) і елементи, що керують роботою схеми. Результатом роботи компаратора є запит переривання ANA COMP, який формується, коли різниця значень напруги на входах компаратора змінює знак.
Базовий компаратор К має два входи - позитивний (+) та негативний (-). Вихідний сигнал базового компаратора АСО має одиничне значення, якщо напруга на вході "+" більше напруги па вході "-".
Схема управління СУ при певному зміну сигналу АСО встановлює в одиничний стан розряд ACI регістру ACSR і при одиничному стані розряду ACIE регістру ACSR в блок переривань надходить запит переривання ANA COMP.
Розряд ACI скидається в нульовий стан апаратно при переході до виконання переривати програми або програмно шляхом запису одиниці в розряд ACI.
Вибір виду зміни сигналу АСО на вході схеми управління СУ, при якому формується запит переривання, визначається комбінацією станів розрядів ACIS0 і ACIS1 регістру ACSR відповідно до табл.18.
Таблиця 18
ACISO | Зміна сигналу АСО | 0 | 0 | будь- |
0 | 1 | - |
1 | про | 1 → 0 |
1 | 1 | 0 → 1 |
У мікроконтролерах, що мають таймер-лічильник, який виконує функцію захоплення, (Т / С типу D або Е) сигнал АСО з виходу базового компаратора при одиничному стані розряду АС1С приймається в таймер-лічильник в якості сигналу, керуючого захопленням.
При установці в одиничний стан розряду ACD регістру ACSR відключається живлення базового компаратора і зменшується струм споживання мікроконтролера.
У мікроконтролерах типу t12, t15, 4433 і m163 є можливість підключати до вхід) '"+" базового компаратора замість входу AIN0 вихід внутрішнього джерела еталонного напруги VR (1,22 ± 0,05 В). Підключення джерела VR виконується при одиничному стані розряду AINBG регістру ACSR. У мікроконтролерах інших типів елементи схеми VR і М і розряд AINBG в регістрі ACSR відсутні.
У мікроконтролері типу ml63, крім того, є можливість підключати до входу "-" базового компаратора входи аналого-цифрового перетворювача ADC0 ... ADC7. Підключення виконується при нульовому стані розряду ADEN регістру ADCSR (№ $ 06) і одиничному стані розряду ACME регістру SFIOR (№ $ 30). Вибір підключається входу визначається комбінацією станів розрядів MUX2, MUX1 і MUX0 регістру ADMUX (№ $ 07).
У табл. 19 вказані висновки мікроконтролера, використовувані як входів AIN0 і AIN1, у мікроконтролерів різних типів.
Таблиця 19
Вхід | t11 t12 | t15 t28 | 1200 2313 | 4433 | 8515 8535 | m163 | m 103 * |
AIN0 AIN1 | РВО РВ1 | РВО РВ 1 | РВО РВ 1 | PD6 PD7 | РВ 2 РВЗ | РВ 2 РВЗ | РЕ 2 РЕЗ |
* - АС +, АС-
9. Програмований апаратний модулятор
Програмований апаратний модулятор входить до складу периферійних пристроїв мікроконтролера тина t28.
Програмований апаратний модулятор включений між виходом Розряду PORTA.2 регістру PORTA (№ $ 1В) і зовнішнім виводом РА2 порту РА. Висновок РА2 працює тільки в режимі виходу. Стан розряду РА2НС регістра керування PACR (№ S1A) визначає в даному випадку не напрямок передачі біта, а навантажувальну здатність виходу. При РА2НС = 0 струм IоL може мати величину до 15 мА (при Fcc = l, 8 В), При РА2НС = 1 він може бути збільшений до 25 мА (при Vcc = l, 8 В).
До складу модулятора входить регістр управління MODCR (№ $ 02), за допомогою якого задаються тривалість імпульсу і шпаруватість імпульсного сигналу на виході РА2. Робота модулятора пов'язана з роботою таймера-лічильника Т / З типу А, який у мікроконтролера типу t28 має деякі особливості.
Керуюча імпульсна послідовність з заданими параметрами формується в перерахункових схемою модулятора (ПСМ), на один з входів якої надходить тактовий сигнал мікроконтролера (СК).
Тривалість інтервалу, протягом якого сигнал на виході РА2 має низький рівень, визначається за формулою:
де (ONTIM) - число, код якого записаний в розрядах ONTIM4 - ONTIM0 регістру MODCR; FCK ~ тактова частота мікроконтролера.
де (ONTIM) - число, код якого записаний в розрядах ONTIM4 - ONTIM0 регістру MODCR; FCK ~ тактова частота мікроконтролера.
робота периферійних пристроїв
Шпаруватість сигналу DC, яка визначається за формулою
де Т - період проходження імпульсів, задається кодом, записаним у розрядах MCONF2-MCONF0 регістру MODCR відповідно до табл. 20. У таблиці вказані також стан розряду PORTA2 регістру PORTA, період проходження імпульсів Т і стан виходу РА2 (L - низький рівень, Н - високий рівень, ІМП - імпульсна послідовність)
Таблиця 20
MCONF2 - 0 | PORTA2 | DC | T | PA2 |
000 | 0 | 100% | - | L |
001 | 0 | 50% | 2 T ON | імп. |
010 | 0 | 33% | 3 T ON | імп. |
011 | 0 | 25% | 4 T ON | імп. |
100 | 0 | 67% | 3 T ON | імп. |
101 | 0 | 75% | 4 T ON | імп. |
110 | 0 | - | - | ? |
111 | 0 | 50% | 2 / F CK | імп. |
XXX | 1 | 0% | - | Н |
- TON = 1 / F CK |
Вихідний сигнал із заданою з використанням розряду РА2НС регістру PACR припустимою величиною струму навантаження формується на виході керуючої схеми модулятора (УСМ).
У таймері-лічильнику Т / З перерахункових схема ПС ділить частоту тактового сигналу на 64, 256 і 1024. Сигнал з трьох виходів перерахункових системи надходить у схему управління СУ1, до якої також надходять сигнал з виведення ТО, тактовий сигнал мікроконтролера і сигнал з додаткового виходу перерахункових схеми модулятора.
Схема управління СУ1 в залежності від комбінації станів розрядів CS00-CS02 регістру TCCR0 (№ $ 04) передає один з сиг-лів на рахунковий вхід базового лічильника TCNT0 (№ $ 03) відповідно до табл.21.
При переповненні базового лічильника встановлюється в одиничний стан розряд TOV0 регістру IFR (№ $ 05) і при одиничному стані розряду TOIE0 регістру ICR (№ $ 06) до блоку переривань Надходить запит переривання Т / З OVF.
Крім того, сигнал переповнення надходить в схему управління СУ2, яка в залежності від комбінації станів розрядів ООМОО і ООМ01 регістру TCCRO змінює стан розряду PORT2 регістру PORTA відповідно до Табл.22.
Таблиця 21
CS02 | CS01 | CS00 | Сигнал |
0 | 0 | 0 | немає |
0 | 0 | 1 | СК |
0 | 1 | 0 | пcм |
0 | 1 | 1 | СК/64 |
1 | 0 | 0 | СК/256 |
1 | 0 | 1 | СК/1024 |
1 | 1 | 0 | негативний фронт на ТО |
1 | 1 | 1 | позитивний фронт на ТО |
Таблиця 22
ООМ01 | ООМОО | (PORTA2) |
0 | 0 | не змінюється |
0 | 1 | змінюється |
1 | 0 | 0 |
1 | 1 |
|
При установці в одиничний стан розряду FOV0 регістру TCCRO скидається в кульове стан базовий лічильник TCNT0 і надходить сигнал переповнення в схему СУ2.
Запит переривання Т / З OVF при цьому не формується. Розряд FOV0 скидається в нульовий стан апаратно.
10. Блок переривань
Блок перериванні приймає запити переривання і організує перехід до виконання певної переривати програми. Запити переривання надходять із зовнішніх джерел і з джерел, розташованих в різних пристроях мікроконтролера.
В якості входів для прийому запитів із зовнішніх джерел використовуються висновки паралельних портів введення-виведення, для яких ця функція є альтернативною. При виконанні альтернативної функції висновок порту має альтернативне ім'я INTx (х = 0, 1 ,..., 7).
Запит переривання із зовнішнього джерела може бути представлений низьким рівнем сигналу (L), переходом від високого рівня до низького (HL), переходом від низького рівня до високого (LH) або переходом будь-якого напрямку (LH / HL). Вибір способу подання визначається комбінацією стані розрядів ISCxO і ISCxl в регістрі MCUCR (№ $ D5), в мікроконтролері типу ml03 - в регістрі EICR (№ $ ЗА).
У табл.23 вказані способи подання запиту переривання при різних комбінаціях станів названих розрядів.
Таблиця 23
ISCX1 | ISCX0 | Спосіб |
0 | 0 | L |
0 | 1 | LH / HL |
1 | 0 | HL |
1 | 1 | LH |
У мікроконтролерах серії ATtiny в якості запиту переривання можуть використовуватися будь-які зміни значення сигналу (для мікроконтролерів типу t1l, t12, t15) або низький рівень сигналу (для мікроконтролера типу г28) на будь-якому виведення порту РВ. Запит переривання, що формується при цьому, має ім'я I / O PINS, а в мікроконтролері типу t28 - LLI PINS.
У табл.24 вказані висновки паралельних портів, що виконують альтернативну функцію прийому запиту переривання із зовнішнього джерела, і відзначені особливості подання запиту переривання у мікроконтролерів різних типів.
Будь-який запит переривання надходить у блок переривань, якщо переривання в мікроконтролері дозволені (I = SREG.7 = 1) і дозволено переривання по даному запиту. Переривання за окремим запитом дозволено, якщо в одиничному стані знаходиться маскує розряд (MASK) для даного запиту переривання, розташований в одному з регістрів введення-виведення.
При появі запиту переривання встановлюється в одиничний стан Флажковий розряд (FLAG) для даного запиту переривання, розташований в одному з регістрів введення-виведення. Стан флажкового розряду опитується апаратно і, крім того, може бути опитано програмними засобами.
У табл.25 вказані пристрої, в яких розташовані джерела запитів переривання, наведені у вигляді дробу імена маскують і прапорцевим розрядів (у чисельнику) і регістрів введення-виведення, в яких вони розташовані, (у знаменнику) у мікроконтролерів різних типів.
Таблиця 24
Тип МК | INTO |
| INT1 | I / O PINS |
t11, t12 | PB1 |
|
| PBO-PB5 (2) |
t15 | PB2 |
|
| PBO-PB5 (2) |
2323, 2343 | PB1 (1) |
|
|
|
1200 | PD2 (1) |
|
|
|
2313 | PD2 (1) |
| PD3 (1) |
|
t28 | PB3 |
| PB4 | PBO-PB7 (3) |
4433 | PD2 |
| PD3 |
|
8515 | PD2 (1) |
| PD3 (1) |
|
8535 | PD2 (1) |
| PD3 (1) |
|
m163 | PD2 |
| PD3 |
|
m103 |
| INTO-INT3 | INT4-INT7 |
|
| PDO-PD3 (3) | PE4 - PE7 (1) |
(1) - крім LH / HL, (2) - тільки LH / HL, (3) - тільки L |
Таблиця 25
Пристрій | Запит переривання | MASK | FLAG |
CPU, WDT | RESET |
|
|
Зовнішні | INT0 INT1 | INT0/GIMSK INT1/GIMSK | INTF0/GIFR INTF1/GIFR |
| INT0 - INT3 INT4 - INT7 | INT0 - INT3/EIMSK INT4 - INT7/EIMSK | INTF4 - INTF7/EIFR |
| I / O PINS LLI PINS | PCIE / GIMSK LLIE / ICR | PCIF / GIFR |
T/C2 | T/C2 COMP T/C2 OVF | OCIE2/TIMSK TOIE2/TIMSK | OCF2/TIFR TOV2/TIFR |
T/C1 | T/C1 CAPT T/C1 COMPA T/C1 COMP B T/C1 OVF | TICIE1/TIMSK OCIE1A / TIMSK * OCIE1B / TIMSK TOIE1 / TIMSK | ICF1/TIFR OCF1A/TIFR * OCF1B/TIFR TOV1/TIFR |
T/C0 | T/C0 COMP T/C0 OVF | OCIE0/TIMSK TOIE0/TIMSK | OCF0/TIFR TOV0/TIFR |
SPI | SPI STC | SPIE / SPCR | SPIF / SPSR |
UART | UART RXC UART UDRE UART TXC | RXCIE / UCR ** UDRIE / UCR
| RXC / USR ** UDRE / USR |
ADC | ADC CC | ADIE / ADCSR | ADIF / ADCSR |
EEPROM | EE RDY | EERIE / EECR |
|
AC | ANA COMP | ACIE / ACSR | ACI / ACSR |
TWSI | TWSI | TWIE / TWCR | TWINT / TWCR |
* - У МК типу 4433 OCIE 1 і OCF 1 * - У МК типу 163 UCR = UCSRB USR = UCSRA |
Під час отримання запиту блок переривань організовує апаратний безумовний перехід до виконання команди, адреса якої (вектор переривання) однозначно пов'язаний з ім'ям запиту переривання. За цією адресою в мікроконтролерах серій ATtiny і АТ90 повинна бути записана команда безумовного переходу з мнемокод RJMP k (№ 85), машинний код який має формат "слово", а в мікроконтролерах серії ATmega може бути записана команда безумовного переходу з мнемокод JMP, і машинний код якої має формат "два слова". За цією командою виконується програмний безумовний перехід до першої команди відповідної переривати програми, яка може бути розташована в будь-якому місці в Flash ROM.
При одночасному надходженні до блоку переривань декількох запитів в блоці виділяється запит з найвищим пріоритетом серед усіх надійшли і виконується перехід за адресою, відповідному цьому запиту.
У табл.26 і 27 вказані в шістнадцятковому коді адреси (вектори переривання), по яких відбувається апаратний перехід у мікроконтролерів різних типів. Вищий пріоритет має запит переривання RESET. Пріоритет інших запитів убуває в порядку збільшення адреси, за яким відбувається перехід. У мікроконтролерів різних типів запитам переривання з однаковим ім'ям відповідають різні вектори переходу.
Таблиця 26
Запит переривання |
|
| Тип | MK |
|
|
| t11 | t12 | t15 | 2323 | 2343 | 1200 |
RESET | 000 | 000 | 000 | 000 | 000 | 000 |
INTO | 001 | 001 | 001 | 001 | 001 | 001 |
I / O PINS | 002 | 002 | 002 |
|
|
|
T/C1 COMP |
|
| 003 |
|
|
|
T/C1 OVF |
|
| 004 |
|
|
|
T / CO OVF | 003 | 003 | 005 | 002 | 002 | 002 |
EERDY |
| 004 | 006 |
|
|
|
ANA COMP | 004 | 005 | 007 |
|
| 003 |
ADCCC |
|
| 008 |
|
|
|
При переході до виконання переривати програми розряд 1 у регістрі SREG апаратно скидається в нульовий стан і переривання по всіх запитах виявляються забороненими. Розряд I встановлюється в одиничний стан при виконанні команди повернення з переривати програми з мнемокод RETI (№ 90). Розряд I може бути встановлений в одиничний стан програмно по команді SEI в переривати програми. Програма, яка виконується при пуску мікроконтролера і за запитом RESET, не містить команди RETI і для виконання переривань повинна утримувати команду SEI.
Переривання по запиту RESET виконується незалежно від стану розряду I в регістрі SREG. Опитування стану входів блоку переривань виконується у кожному такті. При виявленні запиту код з лічильника команд заноситься в стек, на що витрачається 2 такту, і виконується безумовний перехід по команді з мнемокод RJMP до (2 такти) або JMP k (3 такту). Якщо при виявленні запиту переривання процесор не закінчив виконання поточної многотактовой команди, до переходу до переривати програми завершується виконання цієї команди.
Таблиця 27