お世話になっています。hamayan です。 Katsushi> hamayan様,suzuki様, Katsushi> Katsushi> %を使わず,”count & 0x3f”とすることですが, Katsushi> 最初の投稿にありますように,次のリストを Katsushi> Katsushi> void interrupt_timer0(void) Katsushi> { Katsushi> DA.DR0=dat[ratio][ampR][count%divNum]; Katsushi> DA.DR1=dat[ratio][ampL][count%divNum]; Katsushi> count++; Katsushi> } Katsushi> Katsushi> 次のようにすでに変更しています。ビット演算とポイント演算で Katsushi> これだけでも劇的に早くなりました。 すいません、先頭の部分しか読んでいませんでしたね。 Katsushi> void interrupt_timer0(void) Katsushi> { Katsushi> register unsigned a= (count&(divNum-1));/*=count%divNum 高速化*/ Katsushi> DA.DR0=*(adrR+a);/*右足,=adrR[count%divNum];*/ Katsushi> DA.DR1=*(adrL+a);/*左足*/ Katsushi> count++; Katsushi> } Katsushi> Katsushi> でも,これにIOポートのビット出力を2行加えただけで,もう間に合いません。 Katsushi> 巨大な配列を使わない,改良前のプログラムでは, Katsushi> 条件分岐を多数書いて,ビット出力していましたが,十分間に合っていました。 配列が巨大で問題が発生するのではなく、3次元配列の処理で、mulとか、divとか、 modとかが多数呼ばれているから、処理が間に合わなくなるのでは。全ての次元に 変数を使っていますしね。 Katsushi> list出力もみられないし・・・。こまりました。 Katsushi> いずれにしても,これからまた考えてみますが, Katsushi> アドバイス頂ければ幸いです。 LIST出力が得られないのは、私も同じだったりして(~_~;) 日立半導体セミナー提供のデバックモニターは、入手していないのでしょうか。 配列は作らず、割り込み処理も、単なるサブルーチンとして、簡潔なプログラム を作成して、デバックモニターでRAMに転送して、逆アセンブルを見る手も有 ります。 divやmul等のアドレスはMAPに出力されるので、これでどの程度呼ばれているか 判ります。 それでも解決できない時、結局処理能力が、既にH8の能力を超えている (演算全部、割り込みも通常処理も含めて、それに掛かる時間の総量がCPU時間を 越えている、と言う意味です。)ので、もっと高速なCPUを選ぶ事になりますね。 ------------------------------------------------------------ )^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^( ☆☆☆☆☆☆☆☆☆☆☆☆designed by hamayan☆☆☆☆☆☆☆☆☆ from はまやん アドレスは hamayan@xxxxxxxxxxxxxxxx FILEを添付される場合は hamayan@xxxxxxxxxxxxxxx ★★★★★★★★★end of message and thank you★★★★★★★