Attachinterrupt arduino: Аппаратные прерывания

SAMD_TimerInterrupt — библиотеки Arduino

Эта библиотека позволяет использовать прерывания от аппаратных таймеров на платах на основе SAMD, таких как SAMD21 Nano-33-IoT, Adafruit SAMD51 Itsy-Bitsy M4, SeeedStudio XIAO, Sparkfun SAMD51_MICROMOD и т. д.

Автор
Кхой Хоанг
Веб-сайт
https://github.com/khoih-prog/SAMD_TimerInterrupt
Категория
Управление устройствами
Лицензия
Массачусетский технологический институт
Тип библиотеки
Добавлено
Архитектуры
Самд

Эти аппаратные таймеры SAMD, использующие прерывание, продолжают работать, даже если другие функции блокируются. Более того, они намного более точны (конечно, в зависимости от точности тактовой частоты), чем другие программные таймеры, использующие millis() или micros(). Это обязательно, если вам нужно измерить некоторые данные, требующие большей точности. Теперь он поддерживает 16 таймеров на основе ISR, потребляя при этом только 1 аппаратный таймер.

Интервал таймера очень длинный (ulong миллисекунды). Наиболее важной особенностью является то, что они основаны на таймерах ISR. Следовательно, их выполнение не блокируется функциями или задачами с плохим поведением. Эта важная функция абсолютно необходима для критически важных задач. SAMD21 теперь может использовать 6 таймеров

Имя файла Дата выпуска Размер файла
SAMD_TimerInterrupt-1.10.1.zip 2022-09-29 495,12 КиБ
SAMD_TimerInterrupt-1.10.0.zip 2022-09-29 494,93 КиБ
SAMD_TimerInterrupt-1.9.0.zip 2022-05-08 469,13 КиБ
SAMD_TimerInterrupt-1.8.0.zip
2022-05-07
464,90 КиБ
SAMD_TimerInterrupt-1. 7.0.zip 2022-04-25 465,18 КиБ
SAMD_TimerInterrupt-1.6.0.zip 2022-01-21 416,85 КиБ
SAMD_TimerInterrupt-1.5.0.zip 2021-10-08 417,98 КиБ
SAMD_TimerInterrupt-1.4.0.zip 2021-06-02 301,00 КиБ
SAMD_TimerInterrupt-1.3.1.zip 2021-05-09 278,18 КиБ
SAMD_TimerInterrupt-1.3.0.zip 2021-04-03 274,09 КиБ
SAMD_TimerInterrupt-1.2.0.zip 2021-01-10 252,40 КиБ
SAMD_TimerInterrupt-1.1.1.zip 2020-12-07 234,32 КиБ
SAMD_TimerInterrupt-1. 0.1.zip 2020-11-07 218,56 КиБ
SAMD_TimerInterrupt-1.0.0.zip 2020-11-04 212,13 КиБ

Прерывание подключения Arduino | КодигоЭлектроника

  • Описание
  • Сосны наперстянки с перерывами
  • Acerca de las rutinas de servicio de interrupción
  • Номер прерывания
  • Синтаксис
  • Параметры
  • Деволюция
  • Ссылки

Описание

Las Interrupciones Son útiles para hacer que las acciones o eventos sucedan automáticamente en los programas de microcontrolador y pueden ayudar a resolver Problemas de tiempo y ejecucion de los mismos. Las buenas tareas para usar una interrupción pueden incluir leer un interruptor o pulsador, hasta codificador rotatorio o monitorear la entrada del usuario.[1]

Сосны наперстянки с перерывами

Начальный параметр для attachInterrupt() — номер прерывания. Normalmente debe usar digitalPinToInterrupt(pin) для преобразования цифрового реального PIN-кода в специальный номер прерывания. Например, подключите его к контакту 3, используя digitalPinToInterrupt(3) , как основной параметр для attachInterrupt() .

La siguiente tabla muestra los pines de interrupción que posee cada placa de arduino:

Столеро Сосны наперстянки пригодные для использования на перерывах
Uno, Nano, Mini, otros basados ​​en 328 2, 3
Uno WiFi Rev.2, nano cada todos los pines digitales
Мега, Мега2560, МегаАДК 2, 3, 18, 19, 20, 21
Micro, Leonardo, otro basado en 32u4 0, 1, 2, 3, 7
Серо todos los pines digitales, кроме 4
Tableros de la familia MKR 0, 1, 4, 5, 6, 7, 8, 9, А1, А2
Нано 33 Интернет вещей 2, 3, 9, 10, 11, 13, 15, А5, А7
Nano 33 BLE, Nano 33 BLE Sense тодос лос пайнс
Дебидо todos los pines digitales
101 Todos los pines digitales (только сосны 2, 5, 7, 8, 10, 11, 12, 13 с функцией CHANGE)

Acerca de las rutinas de servicio de interrupción

Los ISR son types especiales de funciones que tienen algunas limitaciones únicas que la mayoría de las otras funciones no tienen. Un ISR нет puede tener ningún parametro, y no debe devolver nada.

В целом, ISR debe ser lo más corto y rápido posible. Si su programa usa múltiples ISR, solo uno puede ejecutarse a la vez, otras interrupciones se ejecutarán después de que finalice la fact en un orden que depende de la Prioridad que tengan. миллис () се basa en las interrupciones para contar, por lo que nunca se incrementará dentro de un ISR. Dado que delay() requiere interrupciones para funcionar, no funcionará si se llama dentro de un ISR. Функциональная

micros() Первоначальная компенсация за счет исправления ошибочного поведения в течение 1–2 мс. delayMicroseconds() не используется, если он не используется, для нормальной работы.

В общем, глобальные переменные используются для передачи данных между ISR и основной программой. Para asegurarse де que las переменные compartidas entre un ISR y el programa main se Actualicen Correctamente, объявляют como volatile.

Номер прерывания

Normalmente debería usar digitalPinToInterrupt(pin) , в котором указан номер прерывания, направляемый в систему. Los pines específicos con interrupciones y su número de mapeo a interrupción varían para cada tipo de placa. El uso directo де números де interrupción puede parecer simple, pero puede causar Problemas де compatibilidad cuando su programa se ejecuta en una placa diferente.

Синтаксис

 attachInterrupt(digitalPinToInterrupt(pin), ISR, режим) //рекомендуется
attachInterrupt(interrupt, ISR, mode) // не рекомендуется
attachInterrupt(pin, ISR, mode) //(Не рекомендуется. Además, esta sintaxis single funciona en las placas SAMD Arduino, Uno
                                //WiFi Rev2, до 101.) 

Параметры

прерывание
Номер прерывания. Tipos de datos Permitidos: внутр.
pin
Номер контакта Arduino.
ISR
El ISR a llamar cuando se произвести ла прерывание; Esta función no debe tomar parametros y no devolver nada.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *