目次
最新の10件を表示しています。 コメントページを参照
前回のタイマを使用したPWM波形は、TimerRC専用の出力ピンを使用しているため、それを別のピンに割り当てることはできない。
なので、今度はタイマ割り込みを発生させてLEDに接続されているピンPWM波形を発生させたい。
TimerRCの割り込み制御レジスタはなぜか3つもあるorz
レジスタ名 | 機能 |
TRCSR0 | タイマRC割り込みのインプットキャプチャ/アウトプットコンペアの機能切り替え |
TRCIER | タイマRC割り込みを許可するかどうかを決めるレジスタ |
TRCIC | タイマRC割り込みのレベルを決定するレジスタ |
R8Cには割り込みレベル(Processor Interrupt Priority Level: IPL)という値がある。
タイマを含めた、あらゆる割り込み処理に対してレベルを決めるレジスタが用意されていて、
割り込みのレベル>IPL
を満たさないものは割り込み処理が実行されない。
IPLは、例えば以下の処理を実行すると変更できる。
//IPLを3に変更 asm("LDIPL #3") ;
割り込み時に実行される関数定義については、#pragma interrupt によって定義する。関数名は任意。
(vect=○○)というのは、 割り込みベクタ番号 を与えている。すべての割り込み処理に対して一意の値があり、これによって何の割り込み処理のための関数であるかを認識させるっぽい。
ちなみに、TimerRCのSoftware Interrupt Numberは 7 。
#pragma interrupt _timer_rc(vect=7) void _timer_rc(void);
▼ソース
とりあえずリンク
R8C/2Dシリーズのサンプルコード集
とりあえず、R8Cのマニュアルはとっても分かりにくいと言うことが分かった!
網羅的に記述してあるけど、とりあえず動かすにはどうすればいいのかっていうのが全然理解できない。
このままではLEDをチカチカさせることもままならない!!
PWM波形が出た!!っと言ってもほとんどサンプル通りですが。。
msttrcというレジスタがあることを完全に見落としていたため、
かなり足止めを食らいました。
▼ソース
▼PWM波形
R8Cでタイマをセットアップするまで、面倒な設定が多すぎるorz
タイマのカウント用CLKやPWMモードやら、柔軟な設計ができるのはいいけど、
いちいち設定すべきレジスタが代わるのがめんどくさい。
レジスタの名前も覚えにくい。。
HEW,High-performance Embedded Workshopは開発環境の名前。
プロジェクト生成後、マイコンのSFR(Special Function Resistor)を制御しやすくするため、ヘッダファイルを別途ディレクトリにコピーする必要がある。以下の中にある sfr_r82d.h というファイル。
C:\Program Files\Renesas\Hew\System\Pg\Renesas\M16C\V5_42_0\Generate\sfr\R8C\R8C2C_2D
このヘッダファイルの一番上の行に、なぜか日付が書いてあり、これがあるとコンパイルできないので消す。
kanouさんに相談して、これを買ってみました。
http://akizukidenshi.com/catalog/g/gK-03018/
早速LCDモジュールの半田付けをミスりましたorz