RXduino  1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
関数
tkdn_dac.h

内蔵DACを使用するためのルーチン [詳細]

#include "tkdn_hal.h"

ソースコードを見る。

関数

void dac_init (void)
 内蔵DACを初期化して使えるようにする [詳細]
 
void dac_terminate (void)
 内蔵DACを終了して、モジュールスタンバイ状態に戻す [詳細]
 
void dac_output (int dac_portnum, int val10bit)
 DACからアナログ値を出力する [詳細]
 
int dac_continuous_wave (int mode, unsigned short *waveform, unsigned long datacount)
 DACから自動的に波形を繰り返し出力する [詳細]
 

説明

内蔵DACを使用するためのルーチン

このライブラリをC++で使いやすくした関数が analogio.h で定義されています。

tkdn_dac.h で定義されています。

関数

void dac_init ( void  )

内蔵DACを初期化して使えるようにする

RX63Nでは、PORT0.3とPORT0.5のポートをアナログモードに変更する
RX62Nでは、ポートのモード設定は変更されない

覚え書き
最初にdac_sampleを呼び出したときに内部で自動的に呼び出されるので、この関数は明示的に呼び出さなくてもよい。
void dac_terminate ( void  )

内蔵DACを終了して、モジュールスタンバイ状態に戻す

ポートのモード設定は変更されない

void dac_output ( int  dac_portnum,
int  val10bit 
)

DACからアナログ値を出力する

ポートのモード設定は変更されない

覚え書き
valの値は
引数
dac_portnumDACチャネル 0または1。
  • 0 : DA0(PORT0.3)から出力(100pin版には存在しない)
  • 1 : DA1(PORT0.5)から出力
val10bit出力したい値、または-1
  • 0~1023 : 0V~3.3Vが出力される
  • -1 : チャネルのDA変換を禁止(ポートになる)
TODO:
変換時間は未測定。計測してここに記すべき
int dac_continuous_wave ( int  mode,
unsigned short *  waveform,
unsigned long  datacount 
)

DACから自動的に波形を繰り返し出力する

DMACとDACを連携させて、unsigned short型の配列内のデータをDACから自動的に出力する。 ファンクションジェネレータのようなものが作れる。

覚え書き
現バージョンではサンプリング周波数は1MHz固定。サンプリングトリガ用にCMT2を使う。 実は両チャネルモードは、DACの2つのレジスタに32bitの値を一括で書き込んでいるので、 本来はこのような使い方はサポートされないはず データシートによればDACのレジスタに16bitずつ書かなければならないが、 1つずつ書いていると両方のチャネルの更新されるタイミングがずれてしまうので、こうした。
引数
modeDACチャネル CONTINUOUSDAC_MODE_CH0か、CONTINUOUSDAC_MODE_CH1か、CONTINUOUSDAC_MODE_BOTHを取る。
  • CONTINUOUSDAC_MODE_CH0 : DAのCH0から出力する
  • CONTINUOUSDAC_MODE_CH1 : DAのCH1から出力する
  • CONTINUOUSDAC_MODE_BOTH : DAのCH0とCH1から出力する
waveform出力した波形データ 単一チャネルモードでは、データを配列に入れておいて渡せばよい 両チャネルモードでは、ch1,ch0,ch1,ch0,ch1,ch0・・・となっている配列を渡す waveformのアドレスはキリの良い数であること。 DMACの拡張リピートモードを使っているので、4096バイトごとにリピートさせるのであれば、 下位12bitは0でなければならない。
datacount出力したいデータの数(周期)。 1つのチャネル内のデータ数を表す。両チャネルモードでも2倍しなくてよい。
戻り値
設定に失敗すると0を返す。成功すると1を返す。