忘備録-備忘録

技術的な備忘録

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

RX62Nのタイマを使うその2

2015-11-25 14:06:39 | RX62N
RX62NのタイマCMTを使いusオーダーで時間待ちするプログラムです。割り込みを使用しています。頻繁に割り込みが発生するので実用的かどうかはわかりません。

  1. #include <machine.h>
  2. #include "timer.h"
  3. #include "iodefine.h"
  4. #include "vect.h"
  5. #define PCLK    48    //PCLK = 48MHz
  6. /* 1usecでカウントアップする変数 */
  7. static volatile unsigned int utimer;
  8. /*
  9.    タイマ初期化 使用するタイマCMT1
  10.    引数  無し
  11.    戻り値 無し
  12. */
  13. void initTimer(void)
  14. {
  15.     MSTP(CMT1) = 0;                                    // enable CMT1
  16.     CMT1.CMCR.WORD = 0x0040;                        // 1/8
  17.     //CMT1.CMCOR = PCLK*1000000L/1000L/8L - 1;        // 1000Hz(1ms)
  18.     CMT1.CMCOR = PCLK*1000000L/1000000L/8L - 1;        // 1MHz(1us)
  19.     ICU.IER[IER_CMT1_CMI1].BIT.IEN_CMT1_CMI1 = 1;    //Enable CMIE
  20.     ICU.IPR[IPR_CMT1_CMI1].BYTE = 8;                // Set interrupt priority level
  21.     CMT.CMSTR0.WORD |= 0x0002;                        // start CMT0 CMT1
  22.     
  23.     utimer = 0;    //タイマの初期化
  24. }
  25. /*
  26.    タイマカウンタの初期化
  27.    引数  タイマ番号
  28.    戻り値 無し
  29. */
  30. void clearTimer(void)
  31. {
  32.     utimer = 0;
  33. }
  34. /*
  35.    タイマの値を取得する
  36.    引数  タイマ番号
  37.    戻り値 タイマの値
  38. */
  39. unsigned int getTimer(void)
  40. {
  41.     return utimer;
  42. }
  43. /*
  44.    mSec単位でウェイトをかける
  45.    引数   待ち時間 ミリ秒
  46.    戻り値  無し
  47. */
  48. void delay_ms(unsigned int ms)
  49. {
  50.     unsigned int us;
  51.     us = 1000*ms;
  52.     clearTimer();
  53.     while(getTimer()<=us);
  54. }
  55. /*
  56.    uSec単位でウェイトをかける
  57.    引数   待ち時間 マイクロ秒
  58.    戻り値  無し
  59. */
  60. void delay_us(unsigned int us)
  61. {
  62.     clearTimer();
  63.     while(getTimer()<=us);
  64. }
  65. /*
  66.    タイマ割込みプログラム
  67.    CMT1割込みで起動
  68. */
  69. void Excep_CMT1_CMI1(void)
  70. {
  71.     utimer++;
  72. }

コメント   この記事についてブログを書く
« RX62Nのタイマを使うその1 | トップ | RX62Nのタイマを使うその3 »
最新の画像もっと見る

コメントを投稿

RX62N」カテゴリの最新記事