お世話になります初心者IKUZOと申しますRL78/G1Eで高速にA/D変換できないかと考えております下図のように設定しましたが、大丈夫なんでしょうかわからないことがありましてハードウェアトリガーでINTTM01から起動にしましてだいたいこれでいいのでしょうか?入力がANI0とANI22があるのが疑問ですやりたいのはANI0を10uS以内で8ビットに変換して判断したいのですGAIN_AMP→DC→抵抗分圧→ANI0→A/D変換のようにしたいです変換時間が赤く表示されているのは、エラーなんでしょうか?変換結果も設定はどうしたら良いのでしょうか?
同じでした、1. TAU0_Channel0_Start //パルス8個の出力開始 TAU0_Channel2_Start(0x2800);//インターバルこの後からA/D開始 P1 |=0x01;
2.__interrupt static void tau0_channel2_interrupt(void){ P1 &=~0x01; TAU0_Channel2_Stop ADC_Start //A/D動作開始 TAU0_Channel1_Start //TM01動作開始}3.__interrupt static void adc_interrupt(void){ static int count=0;
if(count < 8000){ count++; }else{ TAU0_Channel1_Stop ADC_Stop count=0; } P1 &=~0x01;}2.には来ているのですが3.に飛んできません
チョコさんアドバイスありがとうございます#define ADC_Start \ ADCE = 1U;\ TAU3_Wait_33nS(30);\ ADIF = 0U;\ ADMK = 0U;\ ADCS = 1U;でやりましたところ、10uSでA/D変換完了割込み__interrupt static void adc_interrupt(void)が実行されました、これから処理を入れていきます。
作りこみしましたところ最初数十回はA/Dが比較をして入れ替えをしているようですが肝心の最大値に達する前に、A/Dが動作しなくなっているようにみうけられます、入れ替えが発生すると一番下のパルスを反転するようにしているのですが下側に張り付いたままになっております処理が10uSからはみだしているのでしょうか?
拡大したところではそうでもないようです。
すいません 割込みハンドラーのソースです __interrupt static void adc_interrupt(void) { static int count=0; if(sf.ad_max < ADC_Result){ sf.ad_max=ADC_Result; sf.ad_count=count; P1 ^= 0x01; } if(count < 8000){ count++; // P1 ^= 0x01; }else{ TAU0_Channel1_Stop ADC_Stop count=0; sf.ad_busy=0;//ADCを無効 P1 &=~0x01; } }
初回のみsf.ad_countは96とか返すのですが、それ以降は0としか返しません、また入れ替えも起きませんのでADがおかしなことになっているのではないかと思います