Оглавление:
- Шаг 1: обработчик прерывания
- Шаг 2: Установите периодический временной интервал
- Шаг 3: Инициализация прерывания
- Шаг 4. Куда добавить код
Видео: Arduino - периодическое прерывание: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Это руководство посвящено использованию периодического прерывания для синхронизации в программах Arduino. Это шаг для начинающего программиста Arduino, который знает, что Arduino может делать больше, но не совсем знает, как этого добиться.
Если есть проблемы с производительностью, я предполагаю, что вы используете одну или несколько функций delay (). Уловка состоит в том, чтобы избавиться от функции (-ов) delay () и заменить прерывание. Функция delay () заставляет Arduino ничего не делать в ожидании завершения delay (). Использование прерывания позволяет вашей программе делать другие вещи, ожидая окончания задержки. Обычно существует огромное количество неиспользованного мертвого времени, которое можно использовать для других целей при использовании delay (). Использование прерывания решает эту проблему.
Шаг 1: обработчик прерывания
1. Добавьте в свою программу обработчик прерывания. Просто скопируйте и вставьте где-нибудь выше setup ();
const unsigned long TIMER0_COUNT = 500; // интервал таймера 500 мсек
// Обработчик прерывания TIMER0 volatile bool time = false; ISR (TIMER0_COMPA_vect) {статическое длинное число без знака = 0; если (++ 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; // отключаем таймер 0 для уменьшения джиттера OCR0A = 0xBB; // произвольное количество прерываний TIMSK0 | = _BV (OCIE0A); // вернуться к прерыванию sei (); // снова включаем прерывания
Шаг 4. Куда добавить код
4. Добавьте код «проверки времени» в свой метод loop (). Скопируйте и вставьте в loop ().
if (время) {
время = ложь; // здесь что-то делаем}
"Время = ложь;" линия важна. Без этой строки строки «сделай что-нибудь здесь» выполнялись бы каждый раз, когда программа выполняет loop ().
Конечно, вы подставляете свои собственные занятия в строку «сделай что-нибудь здесь». Начните с печати текста или мигания светодиода.
Готово!
Рекомендуемые:
Распознавание лиц на Raspberry Pi 4B за 3 шага: 3 шага
Обнаружение лиц на Raspberry Pi 4B за 3 шага: в этом руководстве мы собираемся выполнить обнаружение лиц на Raspberry Pi 4 с помощью Shunya O / S, используя библиотеку Shunyaface. Shunyaface - это библиотека распознавания / обнаружения лиц. Проект направлен на достижение максимальной скорости обнаружения и распознавания с помощью
Как установить плагины в WordPress за 3 шага: 3 шага
Как установить плагины в WordPress за 3 шага: в этом уроке я покажу вам основные шаги по установке плагина wordpress на ваш сайт. В основном вы можете установить плагины двумя разными способами. Первый способ - через ftp или через cpanel. Но я не буду перечислять это, потому что он действительно комп
Прямая трансляция HD-видео 4G / 5G с дрона DJI с малой задержкой [3 шага]: 3 шага
Прямая трансляция HD-видео 4G / 5G с дрона DJI с малой задержкой [3 шага]: следующее руководство поможет вам получать прямые видеопотоки HD-качества практически с любого дрона DJI. С помощью мобильного приложения FlytOS и веб-приложения FlytNow вы можете начать потоковую передачу видео с дрона
Протез руки, напечатанный на 3D-принтере за 4 шага !: 4 шага
Протез руки, напечатанный на 3D-принтере за 4 шага !: Этот проект - протез руки, напечатанный мной, я хочу получить больше знаний о протезировании и 3D-печати. Хотя это не лучший проект, это отличный способ получить практический опыт и научиться создавать
Интерфейс сенсора ADXL335 на Raspberry Pi 4B в 4 шага: 4 шага
Интерфейс датчика ADXL335 на Raspberry Pi 4B за 4 шага: в этом руководстве мы собираемся связать датчик ADXL335 (акселерометр) на Raspberry Pi 4 с Shunya O / S