[[
lesson4_タイマー割り込み
]]
Mice Wiki
現在位置:
IndexPage
»
lesson4_タイマー割り込み
文書の表示
以前のリビジョン
最近の変更
索引
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
======Lesson4====== **//注意//** タイマー割り込みを実行するためにはintprg.cの64行目あたりを以下のように書き換えてください <code c> __interrupt(vect=24) void INT_IMIA0(void) {/* sleep(); */int_imia0();} </code> **タイマー割り込みとは何でしょう。** 今まで書いてきたプログラムは、上から下まで順に実行する(サブルーチンはその通り飛ぶとして)ものです。\\ これが出来ればライントレースも**大分**近くなります。\\ **頑張りましょう!** 例えれば、 **-Aさんと話す→(話し終わる)→Bさんと話す**\\ というようなものです。とりあえずひとつづつ消化しなくてはいけません。\\ これが割り込みというシステムを使うと、\\ **-Aさんと話す→Bさんが話しかけてくる→Aさんに待ってもらう→Bさんと話す→(話し終わる)→Aさんとの話の続きをする**\\ と言う感じになります。\\ プログラム的には、main文で「Aさんと会話」、割り込み文で「Bさんと会話」と言う感じです。\\ つまり、__同時に色々なことをしたいときに__良く使うものです。\\ 例のように「Bさんが話しかけてくる」というような\\ 何かのアプローチがあって割り込みが入る場合もありますが\\ 今回は、時間で割り込みをかけてみたいと思います。\\ 1sごとに指定された割り込み文を実行する、などと言うことです。\\ **実際にやってみる** まず、時間を使って割り込む事を**タイマー割り込み**といいます。\\ タイマー割り込みをつかうには、「ITU0~4」の設定が必要です。\\ 例えば、ITU0をつかうには <code c> ITU0.TCR.BYTE=0x23; ITU0.TSR.BYTE=0x00; ITU0.TIER.BYTE=0x01; ITU0.GRA=390; </code> のような初期化(設定)が必要です。\\ それぞれの意味は赤い本のITU(タイマー割り込み)の所を見て理解してください。 とりあえず、初期化すると\\ GRAで指定したクロック(時間)ごとに <code c> void int_imia0 (void) { ITU0.TSR.BIT.IMFA = 0; //割り込みで実行したい内容 } </code> が自動で実行されるようになっています。\\ 最初の一行はそういうものだと思ってください。\\ タイマー割り込みはコレだけです。 ココまでわかれば課題です。\\ __1秒おきにLEDを点滅させるプログラム__を作ってください。\\ これは、例もありますし余裕かと思います。 それができたら\\ __0.5秒おきにLEDを点滅させるプログラム__を作ってみましょう。 余裕があれば、右から順番に0.5秒おきについていく、なんてプログラムも面白いと思います。 ** 追記 設定すべきGRAの簡単な決め方 ** GRA = (計りたいミリ秒)*(cpu周波数KHz)/(分周比)\\ 分周比は1,2,4,8等の整数とします\\ 分周比はITU0.TCR.BIT.TPSCで設定してください\\ 詳しくは赤い本を見てください
/home/users/2/deca.jp-mice/web/cgi/dokuwiki/data/pages/lesson4_タイマー割り込み.txt · 最終更新: 2013/05/12 17:45 by member
文書の表示
以前のリビジョン
文書の先頭へ