(toppers-users 4474) GR-SAKURA「TOPPERS/ECNL」 S12AD→DMAC でUnre
柴田正
tshibata.snw @ gmail.com
2016年 1月 4日 (月) 22:54:38 JST
はじめまして。柴田と申します。
以下の環境で、S12ADの結果をDMACで取得するプログラムを実装しています。
1) マイコン: GR-SAKURA(RX63N:http://sakuraboard.net/gr-sakura.html)
2) IDE: CubeSuite+ 1.02.01
3) JTAG: E1
4) ビルドツール: CC-RX v1.02.01
割込みハンドラで再度割込みを要求(※)すると、以下のメッセージが
syslogに出力され、DMACの割込みが発生しないようになります。
”Unregistered Interrupt occurs.”
※このエラーが発生する直接の原因は、time_event.cのsignal_time関数の
下記コードで呼出され先でBRKコマンドが実行され、
おそらく、無条件トラップ割込みで
__kernel_default_int_handler_entryが呼ばれ、
syslogに出力しています。
S12AD→DMACのコードは、Renesasのサンプルコード(※)を、
Toppersに移植したもので、私が影響あると考える部分だけを
下記に抜粋しました。
お手数とは思いますが、どなたか、対策/不具合調査方法を教えてください。
よろしくお願いします。
#現在は、1CHですが、将来的には、AD、DMAC共に、2チャンネルにする予定です。
#当たり前かも知れませんが、dmaca_dmac1_handler2関数内のコードを
コメントアウトすると、それ以降、割込みが発生しないため、
エラーが発生しません。
---- cfgファイル ----
ATT_INI({ TA_HLNG, 0, init_task });
CFG_INT(199, {0, -1});
DEF_INH(199, {TA_HLNG, dmaca_dmac1_handler2});
---- ソース ----
void init_task(VP_INT exinf) {
dis_int(199);
Init_Adc();
ena_int(199);
}
void Init_Adc(void) {
mtu_init();
s12ad_init();
dmac_init();
}
void dmaca_dmac1_handler2(void) {
DMAC1.DMCNT.BIT.DTE = 1;
}
※http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/mpumcu/rx/an_r01an1265jj_rx63n_numerical_lib.jsp
以上です。よろしくお願いします。