見出し画像

マイコンde学習しよう(レッスン2)AVR128DA28

「ポート割込み」


<目的>
マイコンのピン入力値の変化があった場合に割込みを発生させます。
どのピンを割込み対象にするのか、値の変化がどうであった場合に割込みとするのかなどの設定について学びます。

<動作概要>
・SW1 が押されたらLED1 を点灯させる。(割り込み)
・SW2 が押されたらLED2 を点灯させる。(割り込み)
・SW3 が押されたらLED1 と2 を消灯させる。

<ポイント>
・ポート変化割込み処理に入った後、どのピンに変化があったかを判定する必要があります。

<レジスタ説明>

レッスン1 ではSW1、SW2 の入力値をみて処理を分けていましたが、レッスン2 ではSW1、SW2 ともに割り込みを使います。
下記が関係するレジスタです。PORT 単位で用意されています。

INTFLAGSレジスタ

例えば、PORTAであればPORTA.INTFLAGS、PORTBであればPORTB.INTFLAGSとなります。
INTFLAGSレジスタは、割込み設定したピンに割込みが発生した場合に1になります。プログラムにおいては対象ビットを見て判定処理を行います。
1になったビットは、次の割込みに備えてプログラムで0にする必要があります。


PINnCTRLレジスタ

INVEN:入出力反転 1:反転
PULLUPEN:プルアップ許可  1:許可
ISC[2:0]:割込み条件 (下表参照)

ISC[2:0]ビット

PINnCTRLレジスタはポートの0~7の各ビット毎に用意されたレジスタです。
例えば、PORTAであればPORTA.PIN0CTRL~PORTA.PIN7CTRL、PORTBであればPORTB.PIN0CTRL~PORTB.PIN7CTRLとなります。

割込み対象とするピンの設定を行います。
具体的には、PULLUPENでピンを(内部的に)プルアップするかを設定します。1にするとプルアップとなります。
ISC[2:0]で割込み条件を設定します。
割込み条件としては電位が、立上り(L→H)、立下り(H→L)、立上りまたは立下り、低値などがあります。本プログラムではプルアップと立下りに設定します。


<プログラム>

ここから先は

3,760字 / 1ファイル
この記事のみ ¥ 100
期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?