- Врсте прекида
- Прекиди у Ардуину
- Коришћење прекида у Ардуину
- Компоненте потребне
- Кружни дијаграм
- Ардуино Интеррупт Программинг
- Демонстрација прекида Ардуино
Размислите о аутомобилу који се брзо креће. Ако га изненада удари други аутомобил у супротном смеру, прво што се догоди је да сензор акцелерометра присутан у аутомобилу осети нагло смањење убрзања и активира спољни прекид микроконтролера присутан у ауто. Затим на основу тог прекида микроконтролер производи електрични сигнал за тренутно активирање ваздушних јастука. Микроконтролери присутни у аутомобилу истовремено прате многе ствари попут осећања брзине аутомобила, провере других сензора, контроле температуре клима уређаја итд. Шта онда нагло отвара ваздушни јастук у секунди? Одговор је прекиди, овде се користи сигнал прекида који има највећи приоритет од свих.
Још један једноставан пример прекида су мобилни телефони са додирним екраном који имају највећи приоритет у смислу „додира“. Готово сваки електронски уређај има неку врсту прекида како би „прекинуо“ редован процес и урадио неке ствари вишег приоритета на одређеном догађају. Редовни поступак се наставља након што се уручи прекид.
Дакле, технички, прекиди су механизам помоћу којег И / О или инструкција може да заустави нормално извршавање процесора и сервисира се као да има већи приоритет. На пример, неки сензор може прекинути процесор који ради нормално извршавање да би извршио одређени процес који је присутан у ИСР (Интеррупт Сервице Рутине). Након извршавања ИСР процесора може поново наставити нормално извршење.
Врсте прекида
Постоје две врсте прекида:
Хардверски прекид: Догађа се када се спољни догађај догоди као што спољни прекидач промени своје стање из ЛОВ у ХИГХ или ХИГХ у ЛОВ.
Софтверски прекид: То се дешава према упутствима из софтвера. На пример, тајмер прекиди су софтверски прекиди.
Прекиди у Ардуину
Сада ћемо видети како да користимо прекиде у Ардуино Боард-у. Има две врсте прекида:
- Спољни прекид
- Прекид промене пина
Спољни прекид:
Ови прекиди се интерпретирају хардверски и врло су брзи. Ови прекиди се могу подесити да се активирају у случају РИСИНГ или ФАЛЛИНГ или ЛОВ нивоа.
Ардуино Боард |
Спољне игле за прекид: |
УНО, НАНО |
2,3 |
Мега |
2,3,18,19,20,21 |
Прекиди промене пина:
Ардуиноси могу да омогуће више пинова за прекиде помоћу прекида за промену пина. У Ардуино плочама заснованим на АТмега168 / 328 било који пинови или свих 20 сигналних пинова могу се користити као пинови за прекидање. Такође се могу покренути помоћу РИСИНГ или ФАЛЛИНГ ивица.
Коришћење прекида у Ардуину
Да би се користили прекиди у Ардуину, потребно је разумети следеће концепте.
Рутинска услуга прекида (ИСР)
Рутина услуге прекида или обрађивач прекида је догађај који садржи мали скуп упутстава. Када се догоди спољни прекид, процесор прво извршава овај код који је присутан у ИСР-у и враћа се у стање у којем је напустио нормално извршење.
ИСР има следећу синтаксу у Ардуину:
аттацхИнтеррупт (дигиталПинТоИнтеррупт (пин), ИСР, режим);
дигиталПинТоИнтеррупт (пин): У Ардуино Уно, НАНО пинови који се користе за прекиде су 2,3 и у мега 2,3,18,19,20,21. Овде наведите улазни пин који се користи за спољни прекид.
ИСР: То је функција која се позива када се изврши спољни прекид.
Режим: Тип прелаза за активирање, нпр. Пад, успон итд.
- РИСИНГ: За покретање прекида када пин прелази из ЛОВ у ХИГХ.
- ПАДАЊЕ: Да би се покренуо прекид када пин прелази из ВИСОКОГ у НИСКИ.
- ПРОМЕНА: Да би се покренуо прекид када пин прелази из ЛОВ у ХИГХ или ХИГХ у ЛОВ (тј. Када се стање пина промени).
Неки услови током коришћења прекида
- Рутинска функција услуге прекида (ИСР) мора бити што краћа.
- Функција Делаи () не ради унутар ИСР-а и треба је избегавати.
У овом упутству за Ардуино прекид, број се увећава од 0, а два тастера се користе за покретање прекида, сваки је повезан са Д2 и Д3. ЛЕД се користи за означавање прекида. Ако се притисне један тастер, лед се УКЉУЧИ и на екрану се приказује прекид2 и гаси, а када се притисне други тастер, лед се искључује, а на екрану се приказује прекид1 и гаси.
Компоненте потребне
- Ардуино Боард (У овом упутству се користи Ардуино НАНО)
- Тастер - 2
- ЛЕД - 1
- Отпорник (10К) - 2
- ЛЦД (16к2) - 1
- Даска за хлеб
- Повезивање жица
Кружни дијаграм
Кружна веза између Ардуино Нано и ЛЦД екрана 16к2:
ЛЦД |
Ардуино Нано |
ВСС |
ГНД |
ВДД |
+ 5В |
В0 |
На ПИН центра за потенциометар За контролу контраста ЛЦД-а |
РС |
Д7 |
РВ |
ГНД |
Е. |
Д8 |
Д4 |
Д9 |
Д5 |
Д10 |
Д6 |
Д11 |
Д7 |
Д12 |
А. |
+ 5В |
К. |
ГНД |
Два тастера су повезана на Ардуино Нано на пин Д2 и Д3. Користе се за коришћење два спољна прекида, један за УКЉУЧИВАЊЕ ЛЕД-а и други за ИСКЉУЧЕЊЕ ЛЕД-а. Сваки тастер има отпорник од 10 к који је повезан на масу. Дакле, када се притисне тастер, то је логика ХИГХ (1), а када се не притисне то је логика ЛОВ (0). Вучни отпор је обавезан, иначе ће на улазном пину Д2 и Д3 бити плутајуће вредности.
Лед се такође користи да означи да је прекид био активиран или тастер је притиснут.
Ардуино Интеррупт Программинг
У овом упутству број се увећава са 0 који се непрекидно приказује на (16к2) ЛЦД-у повезаном са Ардуино Нано-ом, кад год се притисне леви тастер (прекидач Д3), ЛЕД се укључује и на екрану се приказује Интеррупт2, а када десни тастер (прекидач Д2) се притисне ЛЕД се искључује и на екрану се приказује Интеррупт1.
Комплетан код са радним видео записом дат је на крају овог водича.
1. Прво је укључена датотека заглавља за ЛЦД екран, а затим су дефинисани ЛЦД пинови који се користе за повезивање са Ардуино Нано.
#инцлуде
2. Унутар функције воид сетуп (), прво прикажите неку уводну поруку на ЛЦД дисплеју. Овде сазнајте више о повезивању ЛЦД-а са Ардуином.
лцд.бегин (16,2); лцд.сетЦурсор (0,0); лцд.принт ("ДИГЕСТ ЦИРЦУИТ"); лцд.сетЦурсор (0,1); лцд.принт ("АрдуиноИнтеррупт"); кашњење (3000); лцд.цлеар ();
3. Тада се у истој функцији воид сетуп () морају навести улазни и излазни пинови. Пин Д13 је повезан са ЛЕД анодом, тако да овај пин мора бити дефинисан као излаз.
пинМоде (13, ИЗЛАЗ);
4. Сада долази главни важан део програмирања, који је функција аттацхИнтеррупт (), такође је укључен у воид сетуп ().
аттацхИнтеррупт (дигиталПинТоИнтеррупт (2), буттонПресс1, РИСИНГ); аттацхИнтеррупт (дигиталПинТоИнтеррупт (3), буттонПресс2, РИСИНГ);
Овде је назначено да је пин 2 за спољни прекид, а функција буттонПресс1 се позива када постоји РИСИНГ (ЛОВ то ХИГХ) на Д2 пину. А пин 3 је такође за спољни прекид и функција буттонПресс2 се позива када постоји РИСИНГ на Д3 пину.
5. Унутар празнине петље (), број (и) се увећава од нуле и штампа на ЛЦД-у (16к2).
лцд.цлеар (); лцд.принт ("БРОЈИЛО:"); лцд.принт (и); ++ и; кашњење (1000);
У истој празној петљи (), дигиталВрите () се користи на пину Д13 где је ЛЕД анода повезана. У зависности од вредности у променљивом излазу, ЛЕД ће се укључити или искључити
дигиталВрите (13, излаз);
6. Најважнији део је стварање функције руковаоца прекида према имену које се користи у функцији аттацхИнтеррупт () .
Како се користе два клина прекида 2 и 3, тако су потребна два ИСР. Овде се у овом програмирању користе следећи ИСР
буттонПресс1 ():
буттон воидПресс1 () { оутпут = ЛОВ; лцд.сетЦурсор (0,1); лцд.принт ("Прекид 1"); }
Ова функција се извршава када се притисне тастер на затик Д2 (РИСИНГ ЕДГЕ). Ова функција мења стање излаза у ЛОВ (НИСКО) због чега се ЛЕД искључује и исписује „прекид1“ на ЛЦД екрану.
буттонПресс2 ():
воид буттонПресс2 () {оутпут = ХИГХ; лцд.сетЦурсор (0,1); лцд.принт ("Интеррупт2"); }
Ова функција се извршава када се притисне тастер на затик Д3. Ова функција мења стање излаза у ХИГХ, што доводи до укључивања ЛЕД диоде и исписује „прекид2“ на ЛЦД дисплеју.
Демонстрација прекида Ардуино
1. Када се притисне тастер ПУСХ на левој страни, ЛЕД се УКЉУЧУЈЕ, а ЛЦД приказује прекид2.
2. Када се притисне тастер ПУСХ на десној страни, ЛЕД се искључује и ЛЦД приказује прекид1
Тако прекид може бити користан за покретање било ког важног задатка између нормалног извршавања.