平田@マイクロフトです
>みてみると、CCRのゼロクリアの部分がコメントになっていました。
>セミコロンをはずしてコンパイル実行してみましたが、
CCRの設定はスタートアップでしても良いのですが、私はI/O関係の初期化がすべて
終わったときに制御するようにしています。(初期化の過程で不正な割り込みが入る
可能性が怖いので)以下のようなソースでCの中から制御しています。
void EI()
{
#asm LDC.B #H'00, CCR ; 全割り込み許可
}
void DI()
{
#asm LDC.B #H'80, CCR ; 全割り込みディセーブル
}
IRQ4を使ったときのソースをGrepしてみたのですが、こんな感じで初期化していま
した(ちなみにμPD72001をつないだとき)
SYSCR : 0xb(初期状態のまま)
IPRA,B:初期状態
ISCR:初期状態
OutB( IER, InB( IER) | 0x10); /* Enable IRQ4 */
EI();
>回路がおかしいのかと思い、割り込みを使用せずに
回路的には動いていそうですね。ちなみに「割り込みが入らない」とはどのような状
態か切り分けてみましたか? たとえば割り込みベクターに届かないのか、ベクター
の先で暴走して動かないのか等・・・・ たとえばベクターまでは飛んでいるけど、
割り込み処理がまずくてそれ以降の処理が進んでいないということはありませんか?
割り込み関数の最後にISRの設定を忘れているとか・・・・ たとえば、上記のIRQ4
の場合、こんな感じでベクターの先を用意しています。
void interrupt
MpscIRQEntry( void)
{
BYTE no;
no = InSR( MPSC_BC, SR2) & 0x3;
IrqEntry[ no](no);
OutB( MPSC_AC, MpscEOI);
no = InB( ISR);
OutB( ISR, ~0x10); /* Clear IRQ4 Flag */
}
==================================
平田祥司 (shouji@xxxxxxxxxxxxx)
株式会社マイクロフト
神奈川県横浜市青葉区あかね台2-11-29
Tel:045-989-2570 Fax:045-989-2571
==================================