[Armadillo:01027] 1ms でのインターバル

Hiroshi Doi email@hidden
2006年 5月 31日 (水) 18:43:02 JST


こんにちは、土居と申します。

 MIDI を演奏させるためにティック・ジェネレータを実装しようとして
います。H8 マイコンでは 2ms 間隔でのインターバルタイマを利用して
いたのですが、標準の linux では 10ms 間隔の設定が限界ということで
何とかしたいと思っています。

 てっとり早くやろうとして

    for (;;) {
      gettimeofday(現在の時間);

      前回の結果と比較して 1000us 経過していたら任意の処理を実行

      現在の時間を前回の結果として保存
    }

という実装をしてみたのですが、きっちり 1ms 間隔となりません。

# 一定間隔で 1ms を大幅に超えます。

 Google で検索したところカーネルに手を加えることで 10ms 間隔という
限界を 1ms 程度にすることは可能という記述を見つけたのですが、
その記述が対象としているプラットフォームが i386 だったので ARM では
どうなのか、またはカーネルに手を加える以外に方法がありそうならば
アドバイスしていただけませんか?

 現在開発している対象は Armadillo-9 です。最終的には今度発売される
Armadillo-220 を考えています。

 ちなみに、シリアルポートは 38400bps で出力して、別のマイコンにて
38400bps -> 31250bps 変換を行い更に RS232 から MIDI に変換します。
ですから Armadillo からは純粋に 1ms の解像度でシリアルポートに対して
出力できれば OK です。
--
Hiroshi Doi




armadillo メーリングリストの案内