忘備録-備忘録

技術的な備忘録

RX210でAD変換

2017-04-16 10:11:53 | RX210
ルネサスエレクトロニクス社のマイコンRX210を使用した12bitAD変換のサンプルコードです。AN01端子の電圧を変換します。入力端子により結果の保存されるレジスタが変化するので注意が必要です。
  1. #include <stdio.h>
  2. #include <machine.h>
  3. #include "iodefine.h"
  4. /*
  5.  * ADコンバータと温度センサーの初期化
  6.  */
  7. void ad_init(void)
  8. {
  9.     SYSTEM.PRCR.WORD = 0xA502;                    /* protect off */
  10.     MSTP(S12AD) = 0;                            /* ADコンバータ */
  11.     SYSTEM.PRCR.WORD = 0xA500;                    /* protect on */
  12.     PORT4.PDR.BIT.B1 = 0;                        /* ポートを入力に */
  13.     MPC.PWPR.BIT.B0WI = 0;                        /* enable to write PFSWE bit */
  14.     MPC.PWPR.BIT.PFSWE = 1;                        /* enable to write PFS register */
  15.     //MPC.P40PFS.BIT.ASEL = 1;                    /* AN000 */
  16.     MPC.P41PFS.BIT.ASEL = 1;                    /* AN001 */
  17.     MPC.PWPR.BIT.PFSWE = 0;                        /* disable to write PFS register */
  18.     MPC.PWPR.BIT.B0WI = 1;                        /* disable to write PFSWE bit */
  19.     S12AD.ADANSA.BIT.ANSA1 = 1;                 /* A/D チャネル選択レジスタA */
  20.     S12AD.ADCSR.BIT.ADCS = 0;                    /* シングルスキャンモード */
  21.     //S12AD.ADSSTR1 = 10;                        /* アナログ入力サンプリング時間 */
  22.     S12AD.ADCSR.BIT.EXTRG = 0;
  23. }
  24. /*
  25.  * 電圧の取得
  26.  */
  27. unsigned int get_ad(void)
  28. {
  29.     volatile int i;
  30.     unsigned int temp;
  31.     S12AD.ADCSR.BIT.ADST = 1;                /* AD変換開始 */
  32.     while(S12AD.ADCSR.BIT.ADST == 1);        /* 終了まで待つ */
  33.     temp = S12AD.ADDR1;                        /* 結果の読み出し */
  34.     /* 変換結果の入るレジスタはピンで決まる ADDR0~ADDR15 */
  35.     return temp;
  36. }
  37. int main(void)
  38. {
  39.     int adv,i;
  40.     ad_init(); //AD変換初期化
  41.     printf("A/D converter test.\n");
  42.     while (1) {
  43.         adv = get_ad();
  44.         printf("AD value %d\n",adv);
  45.         for(i=0;i<50000;i++) nop();
  46.     }
  47. }

最新の画像もっと見る

コメントを投稿