Реферат Курсовая Конспект
Переривання - раздел Образование, У 1975 році фірма GI розробила периферійний контролер Peripheral Interface Controller або PIC Переривання В Pic16C71 Можуть Бути Від Чотирьох Джерел: · Зовнішн...
|
Переривання в PIC16C71 можуть бути від чотирьох джерел:
· зовнішнє переривання з ніжки RB0/INT,
· переривання від переповнення лічильника/таймера RTCC,
· переривання по закінченню аналого-цифрового перетворення,
· переривання від зміни сигналів на ніжках порту RB < 7:4 >.
Всі переривання мають один і той же вектор/адресу – 0004h. Однак, в управляючому регістрі переривань INTCON записується від якого саме джерела надійшов запит переривання відповідним бітом-прапорцем “хххF” (RBIF, INTF, RTIF). Такі переривання можуть бути замаскованими індивідуально або загальним бітом GIE (1 – заборонені, 0 – дозволені). Єдиним винятком є переривання по кінцю аналого-цифрового перетворення. Цей прапорець (ADIF) знаходиться в іншому регістрі ADCON0.
Біт загального дозволу/заборони переривання GIE (INTCON < 7 >) дозволяє (якщо = 1) всі індивідуально незамасковані переривання або забороняє їх (якщо = 0). Кожне переривання окремо може бути додатково дозволено/заборонено установленням/скиданням відповідного біта “хххE” (RBIE, INTE, RTIE, ADIE) в регістрі INTCON.
Біт GIE обнуляється при скиданні. Коли починає оброблятися переривання, біт GIE обнуляється, щоб заборонити повторні переривання в момент виконання поточного, і відновлюється за командою повернення з переривання.
УВАГА! Програма обробки перериванняне повиннаустановлювати біт GIE.
Адреса повернення посилається в стек, а в програмний лічильник завантажується адреса 0004h. Час реакції на переривання для зовнішніх подій, таких як переривання від ніжки INT або порту B, складає приблизно п'ять циклів. Це на один цикл менше, ніж для внутрішніх подій, таких як переривання по переповненню від таймера RTCC. Час реакції завжди однаковий.
В підпрограмі обробки переривання джерело переривання може бути визначене по відповідному біту в регістрі прапорців. Цей прапорець-біт повинен бути програмно скинутий всередині підпрограми. Прапорці запитів переривань не залежать від відповідних бітів, що маскують, і біта загального маскування GIE. Команда повернення з переривання RETFIE завершує підпрограму, що перериває, і встановлює біт GIE, щоб знов дозволити переривання.
Управляючий регістр переривань INTCON (Адреса: 0Bh. Значення при reset: 0000 000?) має наступний зміст:
GIE | ADIE | RTIE | INTE | RBIE | RTIF | INTF | RBIF |
RBIF | – Прапорець переривання від зміни на порту RB. |
Прапорець встановлюється, коли сигнал на вході RB < 7:4 > змінюється.
Прапорець скидається програмним способом.
INTF | – Прапорець переривання INT. |
Прапорець встановлюється, коли на ніжці INT з'являється сигнал від зовнішнього джерела переривання.
Прапорець скидається програмним способом.
RTIF | – Прапорець переривання від переповнення RTCC. |
Прапорець встановлюється, коли RTCC переповнюється.
Прапорець скидається програмним способом.
RBIE | – Біт дозволу/заборони RBIF переривання: |
RBIE = 0 – забороняє RBIE переривання;
RBIE = 1 – дозволяє RBIE переривання.
INTE | – Біт дозволу/заборони INT переривання: |
INTE = 0 – забороняє INT переривання;
INTE = 1 – дозволяє INT переривання.
RTIE | – Біт дозволу/заборони RTIF переривання: |
RTIE = 0 – забороняє RTIE переривання;
RTIE = 1 – дозволяє RTIE переривання.
ADIE | Біт дозволу/заборони переривання від аналого-цифрового перетворювача: |
ADIE = 0 – забороняє ADIF переривання;
ADIE = 1 – дозволяє ADIF переривання.
GIE | – Біт дозволу/заборони всіх переривань: |
GIE = 0 – забороняє переривання;
GIE = 1: – дозволяє переривання.
Він скидається автоматично при наступних обставинах:
· при включенні живлення;
· за зовнішнім сигналом /MCLR при нормальній роботі;
· за зовнішнім сигналом /MCLR в режимі SLEEP;
· по закінченню затримки таймера WDT при нормальній роботі;
· по закінченню затримки таймера WDT в режимі SLEEP.
Зовнішнє переривання на ніжці RB0/INT здійснюється по фронту: по тому, що зростає (якщо біт < 6 > INTEDG = 1 в регістрі OPTION), або по фронту, що спадає (якщо INTEDG = 0). Коли фронт виявляється на ніжці INT, то біт запиту INTF встановлюється (INTCON < 1 >). Це переривання може бути замасковане встановленням управляючого біта INTE в нуль (INTCON < 4 >). Біт запиту INTF повинен бути очищений програмою, що перериває, перед тим, як знов дозволити це переривання. Переривання INT може вивести процесор з режиму SLEEP, якщо перед входом в цей режим біт INTE був встановлений в одиницю. Стан біта GIE також визначає: буде чи ні процесор переходити на підпрограму переривання після пробудження з режиму SLEEP.
Переповнення лічильника RTCC (FFh —> 00h) встановить біт запиту RTIF (INTCON < 2 >). Це переривання може бути дозволено/заборонено встановленням/скиданням біта маски RTIE (INTCON < 5 >).
Скидання запиту RTIF – справа програми обробки.
Будь-яка зміна сигналів на чотирьох входах порту RB < 7:4 > встановить біт RBIF (INTCON < 0 > ). Це переривання може бути дозволено/заборонено встановленням/скиданням біта маски RBIE (INTCON < 3 >).
Скидання запиту RBIF – справа програми обробки.
Кінець АЦП перетворення відзначається виробленням переривання і установленням прапорця ADIF в регістрі ADCCON управління АЦП. Цей прапорець повинен скидатися програмою.
2.3.9. Порти вводу/виводу
Мікроконтролер має два порти: 5-бітний порт RA і 8-бітний порт RB з побітовим індивідуальним настройюванням на ввід або на вивід. Ці лінії порту використовуються також для підключення до АЦП і до лінії зовнішнього переривання. В цьому випадку кількість ліній вводу/виводу загального користування зменшується.
Порт А – це порт шириною 5 бітів, відповідні ніжки кристала RA < 4:0 >. Лінії RA < 3:0 > двонаправлені, а лінія RA4 – вихід з відкритим стоком.
Організація розрядів RA3 : RA0 порту А наведена на рис. 2.22. Адреса регістра порту А - 05h. Стосовний до порту А управляючий регістр TRISA розміщений на першій сторінці регістрів за адресою 85h. TRISA <4:0> – це регістр шириною 4 біти, він не управляє бітом RA< 5 >, а тільки бітами RA < 4:0 >. Ввід сигналу з виводу RA5 можна здійснювати, коли на нього виведена "1".
Якщо біт управляючого регістра TRISA має значення, рівне "1", то відповідна лінія буде встановлюватися на ввід. Нуль переключає лінію на вивід і водночас виводить на неї вміст відповідного біта регістра-защіпки.
Виводи RA< 3:0 > можуть бути також використані як канали аналогових входів AIN3-AIN0. Вивід RA3 також використовується для забезпечення зовнішньої опорної напруги для АЦП Vref. Щоб визначити конфігурацію ніжок як цифрову (тобто порт), або як аналогову, треба встановити два біти в управляючому регістрі ADCON1 (адреса 88h). Коли виводи визначені як аналогові входи, значення регістра TRISA не буде відігравати ніякої ролі. Після скидання при включенні живлення виводи RA< 3:0 > конфігуруються як аналогові входи.
Вивід RA4/RTСС (TOCKI) має трохи іншу схему. Вона наведена нижче на рис. 2.23.
Порт В – це двонаправленний порт, шириною 8 бітів (адреса регістра 06h). Стосовний до порту В управляючий регістр TRISB розміщений на першій сторінці ОЗП за адресою 86h. Якщо біт управляючого регістра TRISB має значення "1", то відповідна лінія буде встановлюватися на ввід. Нуль переключає лінію на вивід і водночас виводить на неї вміст відповідного регістра-защіпки.
Рис. 2.22. Організація розрядів RA3/RA0 порту А
У кожної ніжки порту В є невелике активне навантаження (близько 250 мкА) на лінію живлення. Воно автоматично відключається, якщо ця ніжка запрограмована як вивід. Більш того, управляючий біт RBPU (OPTION < 7 >) може відключити (RBPU = 1) всі навантаження. Скидання при включенні живлення також відключає всі навантаження.
Чотири лінії порту В (RB < 7:4 >) мають спроможність викликати переривання при зміні значення сигналу на будь-якій з них. Якщо ці лінії настроєні на ввід, то вони опитуються і защіпуються в циклі читання Q1.
Рис. 2.23. Організація розрядів RA4 порту А
УВАГА! При вузьких імпульсах на вході, опитування процесором порту може "промахуватись" мимо фронтів. Такі імпульси краще реєструвати через RTCC, або застосовувати зовнішній тригер-защіпку (“пастку” для вузьких імпульсів) .
Нова величина вхідного сигналу порівнюється зі старою в кожному командному циклі. При неспівпадання значення сигналу на ніжці і в защіпці, генерується високий рівень. Виходи детекторів "неспівпадань" RB4, RB5, RB6, RB7 об'єднуються по “АБО” і генерують переривання RBIF (яке запам’ятовується в INTCON < 0 >).
Будь-яка лінія, налаштована як вивід, не бере участь в цьому порівнянні.
Переривання може вивести кристал з режиму SLEEP. В підпрограмі обробки переривання треба скинути запит переривання одним з наступних способів:
1. Заборонити переривання за допомогою обнулення біта RBIE в INTCON < 3 >.
2. Прочитати порт В. Це завершить стан порівняння.
Переривання по неспівпаданню і програмно встановлювані внутрішні активні навантаження на цих чотирьох лініях можуть забезпечити простий інтерфейс, наприклад з клавіатурою, із виходом з режиму SLEEP по натиску клавіш.
Вивід RB0 суміщено із входом зовнішнього переривання INT.
– Конец работы –
Эта тема принадлежит разделу:
СТРУКТУРНА ОРГАНІЗАЦІЯ ТА РЕЖИМИ РОБОТИ ОМК PIC...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Переривання
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов