Часть 2: Прерывания по изменению состояния на ЛЮБОМ пине (Pin Change Interrupts)

Все знают про стандартные прерывания attachInterrupt() на пинах 2 и 3 (INT0 и INT1). Но что, если нужно обрабатывать 5 энкодеров, 10 кнопок или считывать 6 датчиков вибрации одновременно?

На помощь приходят Pin Change Interrupts (PCINT) — они работают на всех пинах, кроме 2 и 3.

Как это работает внутри:

У каждого порта есть свой вектор прерывания:

  • PCINT0 — для пинов PD0–PD7 (пины 0–7)
  • PCINT1 — для пинов PC0–PC6 (пины A0–A5 и Reset)
  • PCINT2 — для пинов PB0–PB7 (пины 8–13)

Когда любой пин в порте меняет состояние, срабатывает общее прерывание для всего порта. Ваша задача — внутри обработчика выяснить, какой именно пин изменился.

Вам также может понравиться

About the Author: ардуинчиков

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

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