attachInterrupt()

説明する

中断された関数ではなく、割り込みサービスプログラムが発生したときに、割り込みサービスプログラムへの呼び出しを指定します。 86dinoボードには3つの外部割り込みがあります。No.0(デジタルピン42)No.1(デジタルピン43)No.2(デジタルピン44)。次の表には、各86dinoバージョンで使用できる割り込みピンピンを示します。

int.0〜5に対応するピンのリスト:

Board int.0 int.1 int.2 int.3 int.4 int.5
Zero 42 43 44      
One 42 43 44 18 19 20
EduCake 42 43 44 18 19 20
PLC 0 2 5 6    
 

int.6〜11に対応するピンのリスト:

Board int.6 int.7 int.8 int.9 int.10 int.11
Zero            
One 33 34 35 36 37 38
EduCake            
PLC            

 

知らせ

割り込み処理が速いほど、Delay()は追加の機能では優れたライティングスタイルではありません。

追加の関数でシーケンスポートを使用すると、情報が不足している場合があります。

各追加関数で変更される変数は、揮発性として宣言する必要があります。詳細については、以下のISRの説明をご覧ください。

 

割り込みを使用します

割り込みは、コントローラープログラムで外部イベントを自動的に処理でき、軸エンコーダーの読み取りやユーザー入力の監視など、いくつかの即時性の問題に対処するのにも役立ちます。

一般的に言えば、プログラムが常に軸エンコーダーからパルスを受信できることを判断する場合は、エンコーダセンサーによって生成されたすべてのパルスを正確に受信するために、他のことを行わずにプログラムに常にエンコーダセンサーを投票できるようにする必要があります。他のセンサーには、サウンドセンサーの音を読み取ろうとするなど、同様の動的インターフェイスもあります。これらのアプリケーションでは、割り込みが使用されている場合、制御プログラムは外部入力を欠いていることなく主要なことを行うことができます。

 

割り込みサービスプログラム(ISR)について

ISRは機能の特別なカテゴリであり、他の関数には持たない多くの独自の制限があり、ISRにはパラメーターがなく、何も返されません。

一般的に言えば、ISRが短くて速いほど良いです。コードが複数のISRを使用する場合、そのうちの1つのみが同時に動作し、現在のコードが完了するまで他の割り込みは無視されます(閉じます)。

Arduinoとは異なり、86Duinoのdelay()およびmillis()機能はISRで割り込みに依存せず、適切に動作しますが、これはまだ良い執筆スタイルではなく、ISRで頻繁に呼び出さないようにする必要があります。 。

ISRとメインプログラム間のデータを転送するために使用されるグローバル変数は、ISRで使用される変数が正しく更新されるように、volatileとして宣言する必要があります。 。

 

文法
attachInterrupt(interrupt, ISR, mode)

 

パラメーター

interrupt:中断された数(int)。

ISR:割り込みが発生したときにISRが呼び出されます。この関数はパラメーターを与える必要はなく、何も返されません。この関数は通常、割り込みサービスプログラムと呼ばれます。 。

mode:割り込みをトリガーするときに定義し、3つの有効な値を事前定義する定数があります。

  • CHANGEピンピンの潜在的な変化の端でのトリガー。
  • RISINGは、ピンピンのポテンシャルが低から高に上昇するエッジでトリガーされました。
  • FALLINGは、ピンピンのポテンシャルが高から低くなるエッジでトリガーされました。
  • ピンピンが高に配置されている場合、HIGHがトリガーされます。
  • LOWピンが低い状態で電気的に配置されたときにトリガーされます。

 

戻る

返品値はありません

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

int pin = 13;

volatile int state = LOW;

 

void setup()

{

  pinMode(pin, OUTPUT);

  attachInterrupt(0, blink, CHANGE);

}

 

void loop()

{

  digitalWrite(pin, state);

}

 

void blink()

{

  state = !state;

}

 

See also

- detachInterrupt()


 

文法リファレンスメインページ

このページは、Hot Blooded Youth LBUによって英語版から翻訳されています。

86Duinoリファレンスのテキストは、Arduinoリファレンスの変更であり、Creative Commons Attribution-Sharealike 3.0ライセンスの下でライセンスされています。参照内のコードサンプルはパブリックドメインにリリースされます。