![見出し画像](https://assets.st-note.com/production/uploads/images/129435724/rectangle_large_type_2_382167292f54389d55b825a12ae12ddc.jpeg?width=800)
ATMEGAで学習しよう(レッスン7)
「ピン変化割込み」
<目的>
・ピン変化割込みについて学ぶ。
<動作概要>
・SW1 が押されたらLED1 を点灯させる。
・SW2 が押されたらLED2 を点灯させる。
<ポイント>
・ピン変化割込みはポート単位で用意されている。
・よって、ピン変化割込みが発生した際は、プログラムでどのピンに変化が発生したかを判定する必要がある。
・各ピンに割込みのマスク設定が可能なので、割込み対象にしないピンはマスクをかける。(0 を設定)
<レジスタ説明>
![](https://assets.st-note.com/img/1706332889856-M7tLecjUXd.png?width=800)
![](https://assets.st-note.com/img/1706332910016-pvwDpI8cWF.png?width=800)
レッスン2 で外部割込みを学習しましたが、ATmega88 には外部割込みは2 つしかないため、外部割込みの割り当てが無いピンを割込みピンとして使うのが本来の目的です。
今回は、たまたま外部割込みと同じピンを使っていますが、外部割込み機能は使わず、ピン変化割込みとして使っています。
SW1 及びSW2 は、それぞれPD2、PD3 に割り当てています。
つまりSW1 とSW2 はポートD に属します。
なのでPCICR(ピン変化割込み制御レジスタ)はPCIE2 を1:有効にする必要があります。
また、PD2 はPCINT18、PD3 はPCINT19 に対応するので、この2 つのみ有効にする必要があります。
![](https://assets.st-note.com/img/1706700534421-f4IkeVbM0C.jpg)
<プログラム>
この記事が気に入ったらサポートをしてみませんか?