[H8-ML(4399)] Re: 割り込みの C の記述
From: Takehiro Amaike <ml@xxxxxxxxxx>
Date: 2004年02月03日(火)18時49分42秒
たんぱぁ@割り込みが激しすぎて動作不安定 です。

私も会社で使っている開発環境がイエローソフトのものなので、
趣味でやるときも慣れたイエローのを使っています。
(体験版はうれしいです。ただ、ライブラリ使うと16KBは結構微妙ですが)

RAM実行・リモートデバッグの方法を覚えてしまえば後は試行錯誤するだけので
すごく楽です。
(ローダプログラムの設定を書き直してローダ格納領域はできるだけRAMの後ろ
へ押し込むと良いですね。DRAM付きの3069なんか買えば天国です。)

最近はデバッグのために割り込みベクタも割り込みルーチン(レジスタ待避等を
行う受け口部分)も自分でアセンブラで書くようにしました。
関数名もアンダーバーを追加するだけなので特に問題ありません。
コーディングに関しては面倒は面倒ですけど(^^;

;----------------
rxi2_int:
	PUSH.L	ER0
	PUSH.L	ER1
	PUSH.L	ER2
	PUSH.L	ER3
	PUSH.L	ER4
	PUSH.L	ER5
	PUSH.L	ER6
	JSR @_Intr_CommRx	;Cプログラムの受信割り込み処理関数へ
	BCLR	#6,@SSR2	;SCI2 受信割込みフラグクリア
	POP.L	ER6
	POP.L	ER5
	POP.L	ER4
	POP.L	ER3
	POP.L	ER2
	POP.L	ER1
	POP.L	ER0
	RTE
;----------------

イエローで不満なのはコンパイラのエラー検出の甘さ。
下手なコードを書くといきなり強制終了してくれます・・・。

っと・・・イエローの話は置いておいて。

ルネサスで配布しているビットフィールドを使ったヘッダファイルはHEWであれ
ば当然動くと思います。しかし、その他の環境だとエンディアンや
int,unsigned charでの定義などの差で、曖昧な部分が多い気がします。
デバッガを使っているのであればまだしも、「動く」「動かない」でしか判定で
きない状況では確実でないものの使用はできるだけ避けた方が良いと思います。
machine.hの例などもしかりです。

PADR |= 0x0F;
などと書けばこれ以外の事が実行されるはずはないのですから・・・。

-- 
たんぱぁ(天池 岳雄) <ml@xxxxxxxxxx>
URL: http://www.ss-lab.com/

スレッド概略
[4380(R)](起点)
 └[4389(U)]
   └[表示中]
     └[4400(1)]


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


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