|
Cosmo-Z Library
2.0.5
|
オシロスコープのように波形をキャプチャするには、 csz_capture_execute() 関数を使います。
この関数は波形を取得してDMAメモリに格納します。
格納された波形データは csz_capture_datacopy() 関数を使ってユーザ用のバッファにコピーします。
この関数ではプレトリガ機能といって、トリガよりも前の波形を取り込むことができます。 プレトリガの設定は csz_set_pretrig() 関数で行います。
csz_capture_execute() 関数の引数にCAPTYPE_AUTOを指定した場合は、
オシロスコープのように少しの時間待ってからキャプチャを開始します。
void capture_test() {
int MAX_CH = 8; // チャネル数
int LENGTH = 10000; // キャプチャしたい長さ
csz_capture_timeout(10000); // 10sでタイムアウト
// ユーザ用バッファを作る
uint16_t **wave = (uint16_t **)malloc(sizeof(uint16_t *) * MAX_CH);
for(int ch=0;ch < MAX_CH; ch++) {
wave[ch] = (uint16_t *)malloc(sizeof(uint16_t) * LENGTH);
}
// キャプチャの実行
csz_capture_execute( 0xff,LENGTH,CAPTYPE_AUTO);
// DMAメモリからユーザバッファへコピーする
for(int ch = 0; ch < MAX_CH; ch++) {
csz_capture_datacopy(0xff,ch+1,LENGTH,wave[ch]);
}
// 取得した値をダンプする
for(int i=0;i < LENGTH; i++) {
printf("%4d,",i);
for(int ch=0;ch < MAX_CH; ch++) {
printf("%4d,",wave[ch][i]);
}
printf("\n");
}
for(int ch=0;ch < MAX_CH; ch++) {
free(wave[ch]);
}
free(wave);
}
1.8.14