ATtiny13の外部割込みメモ

ATtiny13

はじめに

ATtiny13の外部割込みメモです。

主に備忘録となっていますが、できるだけわかりやすくまとめたいと思いますのでよかったらどうぞです。

ATtiny13の外部割り込みは【INT0】【PCINT0~5】の2種あります。前者は割り込みの条件を詳細に設定でき、スリープ状態の復帰にも使用することが可能です。後者はPINの状態変化のみによる外部割込みが可能です。パワーダウンのような深いスリープ状態の解除にはINT0のみの状態変化割り込みしか使用できません。

外部割込み【INT0】

概要

INT0の外部割込みに関連するレジスタは以下の3つになります。

  • MCU制御レジスタ (MCU Control Register) MCUCR
PUB SE SM1 SM0 ISC01 ISC00
ISC01 ISC00 INT0割り込み発生条件
0 0 LOWレベル
0 1 状態変化
1 0 立下り
1 1 立ち上がり
  • 一般割り込み許可レジスタ (General Interrupt Mask Register) GIMSK
INT0 PCIE
  • 一般割り込み要求フラグ レジスタ (General Interrupt Flag Register) GIFR
INT0 PCIE

使用手順としてはMCUCRで外部割込みの設定を行い、GIMSKでINT0の外部割込みの許可を行います。

外部割込みが起きるとGIFRの外部割込み0要求フラグ(INTF0)がセットされます。もし、外部割込みのハンドラで処理を行う場合は外部割込みルーチン処理後0になります。フラグのみで処理を行う場合は手動でフラグを0に戻す必要があります。

外部割込み0を呼び出すハンドラは以下のように記述します。

プログラム例

【回路】INT0とGNDの間にスイッチ接続。PB0にLED接続。

■例1)ピン変化割り込みフラグを使用したフラグ処理のみでの割り込み使用。

■例2) 外部割込みハンドラによる割り込み処理。

おわりに

今回はATtiny13の外部割込み機能についてまとめてきました。INT0のみの使用でしたが、ピン状態変化割り込みであれば、PCMSKで設定を行えばINT0以外の他のピンでも割り込み可能です。

ルーチン動作と外部割込みによるイベント動作のみの機能であれば、割り込み処理のみでメインループがブランクなプログラムも珍しくないので、割り込み動作については知っていて損はないと思います。

では、今回はここまでです。

ではでは~

コメント

タイトルとURLをコピーしました