[H8-ML(724)] 割り込み処理失敗談
From: ToshihiroMurai <muratosh@xxxxxxxxxxxxxxxxxx>
Date: 2000年07月28日(金)22時52分38秒
初めて投稿致します。村井と申します。

IRQ0割り込みを使用してA/D変換データを受信するプログラムを作
成し、動作させてみますとなにやら怪しげな動作をしていました。
何かのご参考になればと思い投稿します。

概要
 IRQ0がLOWとなると、SCI0をクロック同期モードにし、SCI0送信
データエンプティ割り込み及び、受信データフル割り込みでDMAを
起動し、コマンド送信、データ受信を行っています。


失敗プログラム

void intad(void)
{
 unsigned char i,command;
 unsigned char data[AD_BYTE_VALUE],ch=adbuff.ch  ;

  set_ccr(0) ;/* Clear ccr I bit */
  outport(CS_PORT,SEL_AD);
  command=(READ_COMM | ad_ch_tbl[ch]);/* リード命令発行 */
  send_data(&command,1) ; /* リード命令送信 */
  txendheck() ;  

  receive_data(data,number(data)) ;   /* 変換データ受信 */ 
  rxendheck() ;
  outport(CS_PORT,SEL_NON) ;

以下略


 割り込み処理プログラム先頭でCCR Iビットをクリアーしたため
送受信途中で他の割り込みが入り送受信データが化けていたようで
した。

変更方法
 割り込みプライオリティーレベルをIRQ0,DMA,SCI0を1に設定し、
SYSCR UE=0にし、割り込みプログラム先頭でCCR UI ビットをクリ
アーする事により、プライオリティーレベル1の割り込み以外受け
付けないようにしました。

2日程はまってしまいました。

-----------------------------------
 村井利広
 muratosh@xxxxxxxxxxxxxxxxxx
-----------------------------------

スレッド概略
[表示中](起点)
 ├[725(1)]
 └[726(2)]


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


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