# MIC_DoSamplingAsync

## 構文

  `#include <nitro/spi.h>`

      MICResult MIC_DoSamplingAsync(
                  MICSamplingType  type,
                  void*            buf,
                  MICCallback      callback,
                  void*            arg );

## 引数

type | `MICSamplingType`列挙型のサンプリング種別
buf | サンプリング結果を格納するバッファへのポインタ
callback | コールバック関数へのポインタ このコールバックは割り込みハンドラ内から呼び出されます。
arg | コールバック関数へ渡す引数

## 返り値

`MICResult`列挙型の処理結果を返します。
非同期処理を正常に開始できた場合に MIC_RESULT_SUCCESS が、何らかの原因で失敗した場合にはそれ以外の返り値が返されます。

## 説明

マイクのサンプリングを非同期に一回行います。
サンプリング前には `PM_SetAmp*()` によってプログラマブルゲインアンプをオンにして下さい。
この関数はARM7にサンプリング実行要求を発行し、ARM7からの応答を待たずに呼び出し元に戻ります。
ARM7における処理結果はユーザコールバック関数に渡されるresult引数によって取得する必要があります。
なお、入力音量が最大値及び最小値を越える場合には出力データはクランプされます。 サンプリング可能な入力音量は、`PM_SetAmpGain*()`により事前に調整しておくことができます。
この関数が失敗した場合は非同期的な操作は行われず、ユーザコールバック関数も呼び出されません。

## 注意

buf引数によって指定したバッファには関数とは非同期に値が書き込まれますので、ユーザコールバック関数によって非同期処理の完了を確認するまでは別の用途に使用しないようにして下さい。

TWL のマイク入力には、微小なノイズが混入することが判明しています。対策はこちらをご覧下さい。

## 参照

`MIC_DoSampling, PM_SetAmpGain*`

## 履歴

Ver. 2009/06/25 PM_SetAmp*() の使用について追記
Ver. 2005/06/27 コールバックが割り込みハンドラから呼び出される旨を補足
Ver. 2005/01/11 返り値の修正
Ver. 2004/08/10 入力音量に関する説明追加
Ver. 2004/06/01 初版