attachInterrupt()

Page

Stránky / Arduino / C++ pre Arduino / Funkcie API /

Funkcia pripojí užívateľskú funkciu obsluhy prerušenia na pin externého prerušenia. To umožňuje vyhnúť sa periodickej kontrole nejakého pinu a reagovať iba na konkrétnu udalosť na pine. Typické úlohy, kedy je to potrebné je napríklad reagovať na rotačný enkodér alebo tlačidlo.

Syntax

void attachInterrupts(uint8_t interruptNum, void (userFunc*)(void), int mode);

Parametre

  • interruptNum - Číslo prerušenia. Toto číslo sa nezhoduje s číslom pinu a je vhodné využiť makro digitalPinToInterrupt na jeho získanie. Môžete použiť iba také piny, ktoré umožňujú externé prerušenia.
  • userFunc - Užívateľská funkcia, ktorá spracuje prerušenie.
  • mode - Na akú zmenu na pine má prerušenie reagovať.
    • LOW - Prerušenie nastane, pokiaľ je na pine logická nula.
    • CHANGE - Prerušenie nastane pri zmene logickej úrovne.
    • RISING - Prerušenie nastane pri zmene z LOW na HIGH.
    • FALLING - Prerušenie nastane pri zmene z HIGH na LOW.
    • HIGH - Prerušenie nastane pri logickej jednotke na pine. Iba pre Arduino Due, Zero a MKR1000.

Návratová hodnota

  • Funkcia nevracia žiadnu hodnotu.

Použiteľné piny

Doska Použiteľné digitálne piny
Uno, Nano, Mini 2, 3
Mega 2, 3, 18, 19, 20, 21
Micro, Leonardo 0, 1, 2, 3, 7
Zero Všetky digitálne piny okrem 4
MKR1000 0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Due Všetky digitálne piny.

Čísla pinov, ktoré podporujú prerušenia, sú iné než digitálne piny. Aby ste si ich nemuseli pamätať, môžete použiť makro digitalPinToInterrupt(pin). Vo veľa príkladoch, ktoré nájdete na Internete, nie je toto makro použité. Ani ja nie som výnimkou a mnohé moje staršie kódy toto makro nepoužívajú.

Príklady

Na stránke nájdete niekoľko príkladov použitia.


20.07.2016


Menu