• 検索結果がありません。

課題 5: RTC 割り込みの代わりにイベントシステムを使う

Training Manuals DS00002533A_JP - p. 46

© 2018 Microchip Technology Inc.

tinyAVR 1 シリーズのイベント処理入門

tinyAVR 1 シリーズのイベント処理入門

6-1. イベントソースの選択

設定手順は以下の通りです。

– ウィンドウの左側にある[EVENTS]アイコンをクリックします(上図内の赤枠1)。

[Asynchronous Event Channel 0] (赤枠2)を選択して[EVENT SYSYEM SETTINGS] ウィンド ウを開きます。

– このウィンドウでスクロールダウンして[Real Time Counter overflow] オプションを選択し、

ウィンドウを閉じます。

6. 次に、図6-2(赤枠1~3)に示す通り、イベントユーザを設定します。

[USERS ] の下の[ADC0] の歯車アイコン(赤枠1)をクリックします。

[EVENT SYSTEM SETTINGS] ウィンドウが開くので、その中の[Start Event Input Enable] (赤

枠2)チェックボックスをONにします。

– [ASYNCUSER1]に対して[Asynchronous Event Channel 0] (赤枠3)を選択し、ウィンドウを閉 じます。

6-2. イベント チャンネルの選択

Training Manuals DS00002533A_JP - p. 48

© 2018 Microchip Technology Inc.

tinyAVR 1 シリーズのイベント処理入門

Info:   以上でイベント ジェネレータ、イベント チャンネル、イベントユーザの定義によ

るイベントシステムの設定が下図の通りに完了します。

6-3. イベントユーザの選択

7. RTCは、Atmel | START 内で以下の通りに再構成します。

ウィンドウの左端で[DASHBOARD] をクリックし、既存の[RTC_0] モジュールをクリックしてRTC 設定ウィンドウを再度開きます。[OVF: Overflow Interrupt enable] チェックボックス(下図内の赤 枠)をOFFにします。

6-4. RTCの再構成

8. [GENERATE PROJECT] ボタンをクリックします。下図に示す通り、[Project Summary]ウィンドウ が開きます。

tinyAVR 1 シリーズのイベント処理入門

6-5. 再生成後の[Project Summary]ウィンドウ

9. src/adc_window.c ファイルに対する[View Diff] (図内の赤枠)をクリックして、下図の通りに、コー ドの違いを確認します。

6-6. src/adc_window.cView Diff

10. src/adc_window.c は上書きするため、対応するチェックボックスをONにします。

11. [OK] をクリックしてプロジェクトを再生成します(adc_window は上書きされます)。

6.2 イベントシステム ドライバコードの開発

To do:   結果値が設定したウィンドウのレンジ外であった場合にターミナルへADCデータを送

信するため、driver_isr.c にコードを追加します。

1. driver_isr.c ファイルを以下の通りに更新します。

Training Manuals DS00002533A_JP - p. 50

© 2018 Microchip Technology Inc.

tinyAVR 1 シリーズのイベント処理入門

– 下のコードに示す通り、#include “main.h” を追加します。

– ISR(ADC0_WCOMP_vect) 関数に2行(ADC_get_result(); と sendflag=1;)を追加しま す。

– ISR(RTC_CNT_vect)() 関数は削除します(代わりにイベントシステムを使うため)。 2. driver_isr.c ファイル内の完全なコードは以下の通りです。

3. <F7>を押してソリューションをビルドします。

Info:   ソリューションはエラーなしでビルドされます。

4. [Starting Without Debugging] をクリックするか<CTRL+ALT+F5>を押す事により、プロジェクト を実行します。

Info:   アプリケーションはキット上で実行を開始します。

5. [Data Visualizer] タブをクリックし、ポテンショメータを調整します。すると、図5-6に示す通り、

ADCデータがターミナルに出力されると共にグラフにプロットされます。

Result:  イベントシステムは、RTCオーバーフロー割り込みの代わりとして、期待通り

に機能しました。

#include <driver_init.h>

#include <compiler.h>

#include "main.h"

ISR(ADC0_WCOMP_vect) {

/* Insert your ADC window comparator interrupt handling code here */

ADC_get_result();

sendflag = 1;

/* The interrupt flag has to be cleared manually */

ADC0.INTFLAGS = ADC_WCMP_bm;

}

tinyAVR 1 シリーズのイベント処理入門

関連したドキュメント