このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| exercise4_タイマー割り込みcmt [2015/03/01 15:20] – member | exercise4_タイマー割り込みcmt [2016/03/08 18:58] (現在) – member | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ======Exercise4 タイマー割り込み====== | ||
| + | |||
| 注意 | 注意 | ||
| - | タイマー割り込みを実行するためにはinterrupt_handlers.cの385行目あたりを以下のように書き換えてください(HEWであればintprg.cに載っています) | + | タイマー割り込みを実行するためには**interrupt_handlers.c**の385行目あたりを以下のように書き換えてください(HEWであればintprg.cに載っています) |
| <code c> | <code c> | ||
| void interrupt_cmt0(void); | void interrupt_cmt0(void); | ||
| - | #pragma interrupt | + | #pragma interrupt |
| void INT_CMT0_CMI0(void){ | void INT_CMT0_CMI0(void){ | ||
| interrupt_cmt0(); | interrupt_cmt0(); | ||
| 行 11: | 行 13: | ||
| </ | </ | ||
| - | さて、タイマー割り込みとは何でしょう。 | + | ただし、e2studioを使っている場合は、次のとおり書き換えてください。 |
| + | |||
| + | <code c> | ||
| + | void interrupt_cmt0(void); | ||
| + | void INT_CMT0_CMI0(void){ | ||
| + | interrupt_cmt0(); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | また、**reset_program.c**の21行目のSR_Initの0x000000F0を0x00000000にしましょう。 | ||
| + | |||
| + | |||
| + | さて、**タイマー割り込み**とは何でしょう。 | ||
| 今まで書いてきたプログラムは、上から下まで順に実行する(サブルーチンはその通り飛ぶとして)ものです。 | 今まで書いてきたプログラムは、上から下まで順に実行する(サブルーチンはその通り飛ぶとして)ものです。 | ||
| 行 27: | 行 42: | ||
| 何かのアプローチがあって割り込みが入る場合もありますが | 何かのアプローチがあって割り込みが入る場合もありますが | ||
| 今回は、時間で割り込みをかけてみたいと思います。 | 今回は、時間で割り込みをかけてみたいと思います。 | ||
| - | 1sごとに指定された割り込み文を実行する、などと言うことです。 | + | 1msごとに指定された割り込み文を実行する、などと言うことです。 |
| 行 34: | 行 49: | ||
| タイマー割り込みをつかうには、初期設定が必要です。 | タイマー割り込みをつかうには、初期設定が必要です。 | ||
| - | main文の上のほうに初期設定を以下のように書きます。 | + | main文の上のほうに1msで割り込むCMTの初期設定を以下のように書きます。 |
| <code c> | <code c> | ||
| 行 66: | 行 81: | ||
| void interrupt_cmt0(){// | void interrupt_cmt0(){// | ||
| - | CMT1.CMCSR.BIT.CMF = 0;// | + | CMT0.CMCSR.BIT.CMF = 0;// |
| //中身 | //中身 | ||
| - | |||
| } | } | ||