# MI_SetNDmaInterval

## 構文

  `#include <twl/mi.h>`
  `void MI_SetNDmaInterval( u32 ndmaNo, u32 intervalTimer, u32 prescaler );`

## 引数

ndmaNo | DMA番号 (0〜3)
intervalTimer | ブロック転送インターバル値 (0〜0xFFFF)
prescaler | プリスケーラ (MI_NDMA_INTERVAL_PS_n)

## 返り値

なし。

## 説明

TWLの新規DMAが動作する際の、ブロック転送インターバル値とプリスケーラを設定します。

設定されるのは、内部で持っているDMA config 構造体 (`MINDmaConfig`) の値で、ユーザが別途指定しない限り、以降その値が使用されます。対象となるDMAを ndmaNo の引数で指定します。

intervalTimer はダウンカウンタになっています。値が大きいほどインターバルは長くなります。0の場合は、転送ワード数分までブロックDMAを連続して実行します。

prescaler はカウンタのプリスケーラで、以下の値を取ります。

値 | 意味
--- | ---
`MI_NDMA_INTERVAL_PS_1` | システムクロック(33.514MHz)
`MI_NDMA_INTERVAL_PS_4` | システムクロックの4分周
`MI_NDMA_INTERVAL_PS_16` | システムクロックの16分周
`MI_NDMA_INTERVAL_PS_64` | システムクロックの64分周

なお、DMAイネーブルフラグが1のときは、変更が無視されます。

## 内部動作

内部のDMA config 構造体に値をセットします。これは実際のDMA動作時に、`DMAxBCNT` レジスタに設定されます。

## 参照

`MI_GetNDmaIntervalTimer, MI_GetNDmaIntervalPrescaler
`

## 履歴

2007/09/07 初版