H8 3048のIRQ0の設定における注意点
IRQがかからないという事態に遭遇して、解決に至るまでの課程です。
まず、回路。(テスト用に作った回路です。)
自分が作った、上の回路はちゃんと立ち上がり下がり検出の回路になっていたので、問題なかったようで。
スイッチ押したときに電圧の変化がテスターでとれたから
ばっちりとおもっていたものの動かないとどうしても疑ってしまいますね。
ちなみにこの回路では、IRQ0が接続されているポートが
10mAまでの電流しか許容してくれないので、抵抗を約10KΩにして、
0.5mA流れるようにしてます。
で、なんでIRQかからなかったというと、
どうもC言語で定義した
#define EI asm(\"andc.b 0x7F,ccr\")
が動作していないみたいで、
(コンパイルは、通るんですけどね・・・)
結局アセンブラで
_EI: ANDC.B B\'01111111,CCR RTS
と書いて、EXPORTしたものを
EIの代わりにEI()
ってかんじでcallしたら、うまく割り込み許可が動き、
割り込みかかったわけです。
当然、ベクターへの登録とかIRQの設定は、別に必要ですけどね。
自分の場合は、その辺は問題なくて、EI,DIのところだったわけです。
割り込みかかってヤッター!!って感じですが。
あと1つ問題があるのでこれは解決したらまた
掲載します。