Робота периферійних пристроїв

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Робота периферійних пристроїв

Зміст

Введення

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

РВ2

РВ4

РВ4

РВ4

РВО

Порт 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

ACIS1

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

Запит переривання

Тип МК



2313

t28

4433

8515

8535

m163

m103

RESET

000

000

000

000

000

000

000

INTO

001

001

001

001

001

002

002

INT1

002

002

002

002

002

004

004

INT2







006

INT7







010

LLI PINS


003






T/C2 COMP





003

006

012

T/C2 OVF





004

008

014

T/C1 CAPT

003


003

003

005

00A

016

T/C1 COMPA

004


004

004

006

OOC

018

T/C1 COMPB




005

007

00E

01A

T/C1 OVF

005


005

006

008

010

01C

T / CO COMP







01E

T / CO OVF

006

004

006

007

009

012

020

SPI STC



007

008

00A

014

022

UART RXC

007


008

009

00B

016

024

UART UDRE

008


009

00A

OOC

018

026

UART TXC

009


00A

00B

00D

01A

028

ADCCC



00B


00E

01C

02A

EERDY



OOC


OOF

01E

02C

ANA COMP

00A

005

00D

OOC

010

020

02E

TWSI






022


Література

  1. Кібернетика - основа наук-під ред. проф. Карул К.В. - К. - 2009 р.

  2. Основи мікропроцесорних числень - під ред. Моза Г.М. - М. - 2007 р.

  3. Мікроконтролери - під ред. д. т. н. Неліпова А.С. - Х. ХІРЕ - 2008 р.

  4. Невлюдов І.Я. - Комп'ютеризація суспільства - Х. ХІРЕ - 2007 р.

  5. Комп'ютерна техніка і технології - НПЖ - К. - 2008-2009 р. р.

    Додати в блог або на сайт

    Цей текст може містити помилки.

    Програмування, комп'ютери, інформатика і кібернетика | Курсова
    308кб. | скачати


    Схожі роботи:
    Електроживлення пристроїв
    Проектування аналогових пристроїв
    Стандартизація клавішних пристроїв
    Діагностування частотнопараметрованих пристроїв
    Елементи оптоелектронних пристроїв
    Типи скануючих пристроїв
    Драйвери зовнішніх пристроїв
    Розрахунок радіоприймальних пристроїв
    Загальний опис внутрішніх пристроїв ПК
© Усі права захищені
написати до нас