Renesas Rulz
Renesas Rulz
  • User
    Join or sign in
  • Site
  • Search RenesasRulz.com
  • User
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-SAKURA フォーラム 12bitADCを機能割り込みで使いたい
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 1 reply
  • Subscribers 278 subscribers
  • Views 1632 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • Ehternet
  • ethernet
  • gr-sakura
  • GR-SAKURA GR-KURUMI I2C
  • gr-sakura rtc
  • GR-SAKURA SDMMC
  • GR-SAKURA 液晶 aitendo
  • I2c
  • lcd
  • mruby
  • sd_card
  • sdmmc
  • SDカード
  • serial
  • SPI
  • udp
  • USB仮想シリアル
  • Windows8 serial com driver
  • がじぇっとルネサス
  • がじぇるね
  • シリアル
  • タイマ割込み
  • ネットワーク
  • ライブラリ
  • 割り込み
Related

12bitADCを機能割り込みで使いたい

taka
taka over 3 years ago

12bitADCを機能割り込みで使いたいのですが調べても分かりません。

分かる方助けていただければ幸いです。

調べたところ外部割込みしか探せず機能割り込みのやり方が分かりません。

 

書いたプログラムも載せておきます。

↓

#define GLOBAL_DEFINE
#include <Arduino.h>
#include "iodefine.h"
#include "global_define.h"

void ad_init(void);
void temps(void);

char c; //変数cを初期化

void setup() {
/* 変数の宣言 */

/* 初期設定 */
ad_init();

Serial.begin(9600); //シリアル通信開始
}

void loop() {

if(Serial.available() > 0){ //データを待つ

c = Serial.read(); //シリアルで送られてきた文字を変数cに入れる

}

if(c == 'H'){ //変数の中身が「H」だったら

temps();

Serial.println(t_value + 1); //テキストを送り返す

}

c = 0;

}

/* Initialize関数 */
void ad_init(void)
{
/* 動作モード、消費電力低減機能等関連レジスタへの書き込み許可 */
SYSTEM.PRCR.WORD = 0xa502;
/* 12ビットA/Dコンバータモジュール ストップ解除 */
SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;
/* 温度センサモジュール ストップ解除 */
SYSTEM.MSTPCRB.BIT.MSTPB8 = 0;
/* 動作モード、消費電力低減機能等関連レジスタへの書き込み禁止 */
SYSTEM.PRCR.WORD = 0xa500;

/* 12ビットAD変換設定 */
S12AD.ADCSR.BIT.EXTRG = 1; //非同期トリガによるAD変換
S12AD.ADCSR.BIT.TRGE = 1; //AD変換開始の許可
S12AD.ADANS0.BIT.ANS0 = 0;
S12AD.ADANS1.BIT.ANS1 = 0;
S12AD.ADCSR.BIT.ADIE = 1; //AD変換割り込み許可
S12AD.ADCSR.BIT.ADCS = 0; //シングルスキャンモード
S12AD.ADCSR.BIT.CKS = 3; //ADCLK = PCLK = 48MHz

S12AD.ADEXICR.BIT.TSS = 1; //温度センサ出力をAD変換
S12AD.ADEXICR.BIT.OCS = 0; //内部基準電圧AD変換禁止
S12AD.ADCER.BIT.ADRFMT = 0; //温度センサデータレジスタ 右詰めのフォーマットに設定

/* AD割り込み許可 */
/* S12ADI0による割り込みプライオリティ レベル1 */
ICU.IPR[102].BYTE = 0x01;
/* S12ADI0による割り込み要求出力(要求先へ)許可 */
ICU.IER[0x0c].BIT.IEN6 = 1;
}

void temps(void)
{
/* 温度センサ設定 */
TEMPS.TSCR.BIT.TSEN = 1; //温度センサ動作
delay(1);
TEMPS.TSCR.BIT.TSOE = 1; //温度センサ出力許可
S12AD.ADCSR.BIT.ADST = 1; //AD変換開始
TEMPS.TSCR.BIT.TSOE = 0; //温度センサ出力禁止
TEMPS.TSCR.BIT.TSEN = 0; //温度センサ停止
}

 

割り込みの処理

#include "global_define.h"
#include "interrupt_handlers.h"
#include "iodefine.h"
#include "usb_hal.h"

void InterruptHandler_USBHost() __attribute__((weak));
void InterruptHandler_USBHost() {}

 

以下省略

void INT_Excep_S12AD_S12ADI0(void){
 ad_value = S12AD.ADTSDR;
 t_value = ((ad_value - 1.143) / 0.0041) + 26;

}

以下省略

 

 

  • Reply
  • Cancel
  • Cancel
Parents
  • kekero
    kekero over 1 year ago
    調べ物をしてたまたまこのコミュニティに来ましたので、意図を間違えてましたらすいません。
    すいませんが、12bitADCを機能割り込みとはどのようなイメージでしょうか?
    RX62のマニュアルの確認ですが、12bitADの割込みは変換終了割込みしかないです。
    インターバル(定期的)な時間でAD変換をしたいとかですか?
    それともADの値がある値になったら割込みしたいとかですか?
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Reply
  • kekero
    kekero over 1 year ago
    調べ物をしてたまたまこのコミュニティに来ましたので、意図を間違えてましたらすいません。
    すいませんが、12bitADCを機能割り込みとはどのようなイメージでしょうか?
    RX62のマニュアルの確認ですが、12bitADの割込みは変換終了割込みしかないです。
    インターバル(定期的)な時間でAD変換をしたいとかですか?
    それともADの値がある値になったら割込みしたいとかですか?
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
Children
No Data
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.