Arduino 外部中斷


第一篇Arduino的日志嘖嘖。

中斷的概念。

中斷裝置和中斷處理程序統稱為中斷系統

我們從一個生活中的例子引入。你正在家中看書,突然電話鈴響了,你放下書本,去接電話,和來電話的人交談,然后放下電話,回來繼續看你的書。這就是生活中的“中斷”的現象,就是正常的工作過程被外部的事件打斷了。

在Arduino庫中定義,UNO有兩個中斷,MEGA2560有六個中斷。具體如下表,來自 http://arduino.cc/en/Reference/AttachInterrupt

image

DUE普及率非常一般,暫不涉及。

語法。

attachInterrupt(interrupt, function, mode)

變量使用。

1)interrupt:中斷號,UNO只能使用 0或1 ,即代表D2 與D3口。

2)function:調用中斷函數,中斷發生時調用的函數。

3)mode:中斷觸發模式。

UNO R3 支持四種中斷觸發模式:

LOW 當針腳輸入為低時,觸發中斷
CHANGE 當針腳輸入發生改變時,觸發中斷
RISING 當針腳輸入由低變高時,觸發中斷
FALLING 當針腳輸入由高變低時,觸發中斷

 

中斷函數不返回任何值。

中斷函數的使用方法:

首先給出一段來自官方的例程:

int pin = 13;          //首先我們需要找一個燈來觀察
volatile int state = LOW;    //設置燈狀態

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);    //設置觸發,中斷號0,即數字2口
}

void loop()
{
  digitalWrite(pin, state);        //對觀察燈寫入狀態值
}

void blink()            //觸發函數
{
  state = !state;            //將狀態變量求反
}

我們從中可以看出,使用中斷函數時,不需要定義針腳狀態,直接使用中斷函數即可。

當我們需要取消中斷時,我們有下面的命令。

detachInterrupt(interrupt)

interrupt 是中斷號。執行此語句后,系統不會對中斷有反應,即上例中,系統不會再對燈狀態進行改變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM