アルファプロジェクトのCPUボード「AP-RX65N-0A」を使用し、RX65Nのソフト開発をしています。
スマートコンフィグレータを使用して、SCI2をスマートカードインターフェースとして使用し
ソフトを組んだのですが、1byte受信した時点でオーバーランエラーが発生し、それ以降のデータが受信できません。
オシロを使い受信割り込みのタイミングをみたところ、20byteのデータを受信した後に
受信割り込みが発生していました。
通常であれば、1byte受信した時点で受信割り込みが発生するものと思います。
受信データについてはオーバーランエラーは発生するものの最初の1byteは正常に
RDRに取得できていました。
現象としては受信割り込みが遅延しているかのようです。
対処方法などご教授いただけないでしょうか?
スマートコンフィグレータの設定値は以下の通りとなっています。
データ長:8bit
パリティ:偶数
データ転送方向:LSBファースト
受信データ・レベル設定:標準
ブロック転送モード:ノーマル
GSMモード:ノーマル
転送クロック:内部クロック
ビットレート:26882bps
ビットレートモジュレーション機能:無効
SCK2端子機能:クロック出力
送信データ処理:割り込みサービスルーチンで処理する
受信データ処理:割り込みサービスルーチンで処理する
TXI2優先順位:レベル5
RXI2優先順位:レベル5
受信エラー割り込み許可(ERI2):有効
ERI2優先順位:レベル5
コールバック送信完了:有効
コールバック受信完了:有効
コールバック受信エラー:有効
クロックの設定は以下の通りです。
発振子:24MHz
PLL分周比:×1
逓倍比:×10.0
FCLK:1/4 60MHz
ICLK:1/2 120MHz
PCLKA:1/2 120MHz
PCLKB:1/4 60MHz
PCLKC:1/4 60MHz
PCLKD:1/4 60MHz
BCK:1/2 120MHz
スマートカードインターフェース信号をオシロでみたところ
SCK:10MHz
IO:26882bps(1bitデータ長 37.2usec)
以上よろしくお願いいたします。
brotherさん、こんにちは。NoMaYです。ああっ、、、分かった。(と思います、、、) この6msの間は、割り込みが効いていないのでは無くて、プログラムの実行が一時停止しているのだと思います。ブレークポイントを設定したところから実行開始した場合の、デバッガとしては一般的な(というか避けられない)挙動だと思います。今回のカラクリの詳細は、以下のようなことではないかなぁ、という気がします。●ブレークポイントを設定したところから実行開始する場合は、デバッガの内部処理として、一時的に(というか一瞬だけ)ブレークポイントを解除する必要がある。(そうしないと1命令も実行することなく、すぐにまたブレークしてしまい、全く先へ進めなくなるので。) そこで、ブレークポイントを設定したところから実行開始する場合は、デバッガの内部で以下のような処理が行われます。ブレークポイントを設定したところから実行開始する場合のデバッガの内部処理(1) 実行開始するところに設定されていたブレークポイントを一旦解除する(2) 実行開始するところの命令を1命令だけ実行する(3) 先ほどの(1)で解除したブレークポイントを復元する(4) 先ほどの(2)の続きの命令から再度実行開始する●今回、ブレークポイントを設定してあった実行開始したところは、RST信号をLowからHighに変える為の、ポート出力レジスタへの書き込み命令ではないでしょうか、、、(上の(2)に該当します。)●そして、今回、上の(2)と(4)の間で、6msの間、プログラムの実行が一時停止していたのではないでしょうか、、、(その後、おそらく上の(4)のまさに直後に、受信割り込みルーチンへと飛んだのであろうと思います。)