[H8-ML(2639)] Re: 大きな配列をタイマー割り込みで参照
From: Hori Kotaro <kotaro@xxxxxxxxx>
Date: 2002年12月27日(金)20時28分24秒
ほりです。久しぶりの投稿です。

At 午後 02:50 02/12/27 +0900, you wrote:
>スタートアップのアセンブラファイルで,次の様にしています。
>
>     .SECTION P, CODE, ALIGN = 2  ;Int Program
>ITU_0:
>     PUSH.L ER0
>     PUSH.L ER1
>     PUSH.L ER2
>     PUSH.L ER3
>     PUSH.L ER4
>     PUSH.L ER5
>     BCLR #0, @TIER0              ;Stop Int
>     BCLR #0, @TSR0               ;Clear IMFA
>
>     JSR @_interrupt_timer0       ;Jump C Int Func
>
>     BSET #0, @TIER0              ;Restart Int
>
>     POP.L ER5
>     POP.L ER4
>     POP.L ER3
>     POP.L ER2
>     POP.L ER1
>     POP.L ER0
>
>     RTE


レジスタの待避が ITU_0 と interrupt_timer0 の両方にあるので
その時間が少しかかっていますね。

#pragma interruptの宣言でinterrupt_timer0を割り込みルーチンとして
宣言して、割り込みベクタにITU_0のかわりに_interrupt_timer0と
すると少し高速になるかもしれません。
(interrupt_timer0の中で割り込み要因のクリアも追加)

コンパイルするときの最適化オプションを'高速'にすると使うレジスタだけ
待避するコードをはくとおもうのでさらに高速になるとおもいます。


---
株式会社 ビー・ユー・ジー 堀 耕太郎
TEL 011-807-6669    FAX 011-807-6647
http://www.bug.co.jp 

スレッド概略
[2623(R)](起点)
 └[2626(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]