Мазмұны:

Arduino - мерзімді үзіліс: 4 қадам
Arduino - мерзімді үзіліс: 4 қадам

Бейне: Arduino - мерзімді үзіліс: 4 қадам

Бейне: Arduino - мерзімді үзіліс: 4 қадам
Бейне: Урок 96: Датчик атмосферного давления, температуры, приблизительной высоты BMP390 с ЖК-дисплеем 2024, Шілде
Anonim
Arduino - мерзімді үзіліс
Arduino - мерзімді үзіліс

Бұл нұсқаулық Arduino бағдарламаларында уақыт бойынша үзілісті қолдану туралы. Бұл Arduino көп нәрсені жасай алатынын білетін, бірақ мұны қалай жасау керектігін білмейтін Arduino бағдарламашысының қадамы.

Егер өнімділік мәселесі болса, мен сіз бір немесе бірнеше delay () функцияларын қолданасыз деп ойлаймын. Кешіктіру () функциясынан құтылу және үзілісті ауыстыру. Delay () функциясы Arduino -ны кешіктіру () аяқталғанша күтіп тұрғанда ештеңе істеуге мәжбүр етеді. Үзілісті пайдалану сіздің бағдарламаңызға кешіктірудің аяқталуын күтіп, басқа нәрселерді жасауға мүмкіндік береді. Әдетте delay () функциясын қолданған кезде басқа нәрселерге пайдалануға болатын пайдаланылмаған өлі уақыттың үлкен көлемі бар. Үзілісті пайдалану бұл мәселені шешеді.

1 -қадам: үзіліс өңдегіші

1. Үзіліс өңдегішін бағдарламаға қосыңыз. Орнатудан жоғары бір жерге көшіріп, қойыңыз ();

const белгісіз ұзақ TIMER0_COUNT = 500; // 500 мс таймер аралығы

// TIMER0 үзу өңдегіші тұрақсыз боль уақыты = жалған; ISR (TIMER0_COMPA_vect) {статикалық белгісіз ұзақ санау = 0; if (++ count> TIMER0_COUNT) {count = 0; уақыт = ақиқат; // уақыт әрбір TIMER0_COUNT мс} мәніне шын мәнінде орнатылады // (уақытты негізгі тәртіпте тазалау қажет)}

2 -қадам: Мерзімді уақыт аралығын орнатыңыз

2. Уақыт аралығын орнатыңыз. Бұл әдеттегі пиггер TIMER0 үзілісіне оралады, ол әр ~ 1 мсек сайын күйіп тұрады.

Сіздің «интервал» - бұл өңдеуге арналған TIMER0 үзілістерінің саны. Әр интервал ~ 1 мс құрайды, сондықтан сіз интервалды қоспас бұрын қанша TIMER0 үзілісін санауға болатынын анықтайсыз. IOW, TIMER0_COUNT айнымалы мәнін қанша миллисекунд күткіңіз келетініне қойыңыз. Мысалы, секундтың жартысына 500 пайдаланыңыз. 3000 секундты 3 секундқа қолданыңыз.

3 -қадам: Үзіліс инициализациясы

3. «TIMER0 инициализациясы» кодын setup () әдісіне қосыңыз. Тағы да, setup () ішінде көшіріп, қойыңыз.

// *** TIMER0 инициализациясы ***

cli (); // барлық үзілістерді өшіру TIMSK0 = 0; // төменгі діріл үшін таймерді өшіру OCR0A = 0xBB; // ерікті үзіліс саны TIMSK0 | = _BV (OCIE0A); // piggy interrupt sei () -ға қайтып оралды; // бұрылу үзілістері қайта қосылады

4 -қадам: Кодты қайда қосуға болады

4. «Time check» кодын loop () әдісіне қосыңыз. Циклге көшіру және қою ().

егер (уақыт) {

уақыт = жалған; // мұнда бірдеңе жаса}

«Уақыт = жалған;» сызық маңызды. Бұл сызықсыз «мұнда бірдеңе істеу» жолдары бағдарлама циклды () орындаған сайын орындалады.

Әрине, сіз өзіңіздің жеке әрекеттеріңізді «мұнда бірдеңе істеу» жолында ауыстырасыз. Мәтінді басып шығарудан немесе жарық диодты жыпылықтаудан бастаңыз.

Бітті!

Ұсынылған: