Съдържание:

Arduino - Периодично прекъсване: 4 стъпки
Arduino - Периодично прекъсване: 4 стъпки

Видео: Arduino - Периодично прекъсване: 4 стъпки

Видео: Arduino - Периодично прекъсване: 4 стъпки
Видео: VL53L1X Лазерный дистанционный датчик времени полета 400 см 2024, Юли
Anonim
Arduino - Периодично прекъсване
Arduino - Периодично прекъсване

Този Instructable е за използване на периодично прекъсване за време в програмите на Arduino. Това е стъпка за начинаещ Arduino програмист, който знае, че Arduino може да направи повече, но не знае как да го направи.

Ако има проблем с производителността, предполагам, че използвате една или повече функции delay (). Номерът е да се отървете от функцията (ите) delay () и да замените прекъсване. Функцията delay () принуждава Arduino да не прави нищо, докато чака изчакването на delay () да завърши. Използването на прекъсване позволява на вашата програма да прави други неща, докато чака края на забавянето. Обикновено има огромно количество неизползвано мъртво време, което може да се използва за други неща при използване на delay (). Използването на прекъсване решава този проблем.

Стъпка 1: Прекъсване на манипулатора

1. Добавете манипулатора на прекъсвания към вашата програма. Просто копирайте и поставете някъде над setup ();

const unsigned long TIMER0_COUNT = 500; // Интервал на таймера от 500 msec

// TIMER0 манипулатор на прекъсване променливо време за бул = false; ISR (TIMER0_COMPA_vect) {статично без подписа дълго броене = 0; if (++ count> TIMER0_COUNT) {count = 0; време = вярно; // времето е настроено на true на всеки TIMER0_COUNT ms} // (времето трябва да бъде изчистено в основната рутина)}

Стъпка 2: Задайте периодичен интервал от време

2. Задайте времевия интервал. Тази рутина се връща към прекъсването TIMER0, което е настроено да се задейства на всеки ~ 1 msec.

Вашият "интервал" е броят на TIMER0 прекъсванията за обработка. Всеки интервал е ~ 1 msec, така че наистина задавате колко прекъсвания TIMER0 да броят, преди да активирате вашия интервал. IOW, задайте променливата TIMER0_COUNT на колкото милисекунди искате да изчакате. Например, използвайте 500 за половин секунда. Използвайте 3000 за 3 секунди.

Стъпка 3: Прекъсване на инициализацията

3. Добавете кода "TIMER0 Initiation" към вашия метод setup (). Отново просто копирайте и поставете в setup ().

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

cli (); // изключваме всички прекъсвания TIMSK0 = 0; // изключваме timer0 за по -ниско трептене OCR0A = 0xBB; // произволен брой прекъсвания TIMSK0 | = _BV (OCIE0A); // прасенце обратно на прекъсване sei (); // отново включване на прекъсванията

Стъпка 4: Къде да добавите кода си

4. Добавете кода "проверка на времето" към метода си loop (). Копирайте и поставете в цикъл ().

if (време) {

време = невярно; // направете нещо тук}

"Времето = невярно;" линията е важна. Без този ред редът (ите) „направи нещо тук“ще се изпълнява всеки път, когато програмата изпълнява loop ().

Разбира се, вие замествате собствените си дейности в реда „направете нещо тук“. Започнете с отпечатване на текст или мигане на светодиода.

Готови сте!

Препоръчано: