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() {
}

いいなと思ったら応援しよう!