ch55xduinoでタイマ割り込み
CH552のタイマの機能はデータシートなどで調べられますが、ch55xduinoでの割り込み処理関数の書き方などは、ちょっとひとクセあります。イチロヲさん(@ichirowo)さんから、こんな書き方でできる、という情報をいただいたので、まとめておきます。これはTimer2を使ったタイマ割り込みの例です。
void setup() {
TR2 = 0; // Timer2をストップ(初期設定のため)
C_T2 = 0; // Timer2クロックを内蔵クロック(デフォルト値のまま)
T2MOD |= bTMR_CLK | bT2_CLK; //Timer2のクロックにFsys(24MHz)を使う
RCAP2H = 0xff; RCAP2L = 0x91; // Timer2オーバーフロー時のリロード値(0xff91=65425)
// Timer2は(65536-65425=111クロックでオーバーフローする。
// つまりTimer2割り込みの周波数は24MHz/111=216kHz
TH2 = RCAP2H; TL2 = RCAP2L; // Timer2のカウント値をリロード値(RCAP2)で初期化
TF2 = 0; // Timer2割り込みフラグをクリア
ET2 = 1; //Timer2割り込みを許可
EA = 1; // グローバル割り込みを許可
TR2 = 1; // Timer2をスタート
}
void Timer2Interrupt(void) __interrupt (INT_NO_TMR2)
{
TF2 = 0; // Timer2割り込みフラグをクリア
// do something
}
void loop() {
}