PIC32MX220F032BでCTMUを試してみた。
一応プログラムもあるけど、ひとつ問題が。
普通触った時は容量の取得値が下がるはずなんだけど、
色々ためしてもどうも触った時に増えてしまうという逆の反応になってしまっている。
通常時が23くらいで触ると30くらい。
回路かプログラムのどっちかが悪いと思うのだけど調べられていない。
なのでもし使う方がいたらその辺ご注意を。
lcdなんとかの関数は他のファイルのlcd関連を呼んでるだけなので
適宜自分のものに置き換えて下さい。
(過去の記事に似た関数群は掲載してます)
あと、AD変換は自動サンプリングでなく、手動サンプリング。
自動でも動いてたけど、公式?のPDFに手動が載っていたので
最初に書いた不具合の改善に繋がるかと思って変更した。
(改善はしなかった)
なのでAD変換まわりの設定を間違えると
AD変換が完了しなくなってwhileループで停止してしまう。
|c|
DWORD CTM_ReadRobe() {
DWORD temp, cap , i;
temp = 0 ;
for (i=0 ; i < CMT_COUNT ; i++) {
//sampling開始
AcquireADC10();
// ゼロ電位から開始させる為に電荷を放電させる
CTMUCONbits.IDISSEN = 1 ;
lcdDelayUs(125) ;
CTMUCONbits.IDISSEN = 0 ;
// 電極に充電を行う
CTMUCONbits.EDG2STAT = 0 ;
CTMUCONbits.EDG1STAT = 1 ;
lcdDelayUs(125) ;
CTMUCONbits.EDG1STAT = 0 ;
//sampling終了
mAD1ClearIntFlag();
ConvertADC10();
// 電極の電圧を読み取る
while (!mAD1GetIntFlag()) ;
cap = ReadADC10(0);
temp = temp + cap;
mAD1ClearIntFlag();
}
return temp / CMT_COUNT; // 10回の平均値を返す
}
int main(void)
{
char s[17];
SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
mJTAGPortEnable(DEBUG_JTAGPORT_OFF);
CloseADC10(); // ensure the ADC is off before setting the configuration
#define PARAM1 ADC_MODULE_ON | ADC_IDLE_CONTINUE | ADC_FORMAT_INTG | ADC_CLK_MANUAL | ADC_AUTO_SAMPLING_OFF | ADC_SAMP_OFF
#define PARAM2 ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_1 | ADC_ALT_BUF_OFF | ADC_ALT_INPUT_OFF
#define PARAM3 ADC_CONV_CLK_SYSTEM | ADC_SAMPLE_TIME_0
#define PARAM4 ENABLE_AN2_ANA
#define PARAM5 0
// use ground as neg ref for A | use AN2 for input A
SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN2); // configure to sample AN2
OpenADC10( PARAM1, PARAM2, PARAM3, PARAM4, PARAM5 ); // configure ADC using the parameters defined above
EnableADC10(); // Enable the ADC
CTMUCON = 0x40408000;
lcdInit(SYS_FREQ);
lcdPuts("Monitor Debug");
DWORD i = 0, temp;
while(1)
{
lcdDelayMs(200);
temp = CTM_ReadRobe();
itoa(s, temp, 10);
lcdClearLine(1);
lcdPuts(s);
}
}
||
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント