RL78/G13 のCSI機能で、データ送信を行おうとしていますが、通信速度を上げると送信が完了しないことがあります。CSIの設定は以下のようになります。
ここで、4,000,000 の設定では通信ができるのですが、 5,333,333.333 (上記図)の設定では、送信完了の割込みが入らない事があります。 このような場合、何を調べたら、原因が分かるでしょうか? 通信そのものは、評価中のため、通信中に別の通信その他の処理が入る事はありません。(今のところ)
なお、通信の相手は、ST7789Vの LCD Driverとなります。
何か情報がありましたら、よろしくお願いします。
また、画面のメニューですが、 4,000,000の前の設定が、 312,500 で間が空いていますが、その間の設定は無いでしょうか?ユーザーマニュアルを見ても省略されているようです。こちらもご存じの方がいましたら、お願いします。
KatoNaganoさん、こんにちは。NoMaYです。前半は以下のスレッドの話ではないかなと思いました。チョコさんが以前に指摘されていたRL78コード生成機能によるCSI連続送信の終了の割り込みコードの問題を調べていますjapan.renesasrulz.com/cafe_rene/f/forum18/6217/rl78-csi対処法は以下の2つのいずれかです。(1) 連続転送モードを使用しない(高速転送時はコード生成されたソースでは連続転送モードを使えない)(2) 受信割り込みルーチンを書き換える(残念ながらコード生成毎に書き換えが必要(そうしないですむ小細工案をローカルに考えていた記憶もあるけれども))後半は、数値を直接手入力出来るので多数の選択候補を用意しなくても良いかな、とコード生成機能の開発者さんが考えたのではないだろかと、思うのです。
NoMaYさん、情報ありがとうございます。
多分、これに該当するみたいです。高速での転送を行いたいので、割込み処理の書換えかと思うのですが、対応方法を検討したいと思います。
KatoNaganoさん、こんにちは。NoMaYです。あのスレッドは問題点を説明するのがメインでしたので対処法として書き忘れたのですが、クロック周波数が高速な場合は、DMAや(あるいはRL78/G14とかでは)DTCも併用するのが良いことではないだろうか、とも思います。
チョコです。
>(2) 受信割り込みルーチンを書き換える(残念ながらコード生成毎に書き換えが必要(そうしないですむ小細工案をローカルに考えていた記憶もあるけれども))
Renesasのアプリケーションノート(サンプルプログラム)でも小細工やっていますよ。
コード生成というかSCなのですが、同じようなものでしょう。
割り込み処理用のConfig_IICA0_user.cで最初のユーザー領域(下の赤で囲んだところ)に細工がされています。これで、SCが生成したコードは全てifndefでコンパイル対象から外されています。
実際のプログラムは、コード生成された最後のユーザ領域に配置されているようです。
これが参考になるかもしれません。
NoMaYさん、チョコさん、情報ありがとうございます。
今、別の原因で動かなくなっていて、こちらの検討ができない状況となっています。早めに対処する必要があるのですが、、。
[追記]
チョコさんの割込みルーチンを書き換える方法で対処したところ、8MHzで動作を確認しました。しばらく、この方法で行いたいと思います。コード生成で書き換えられる問題については、ソース管理に登録することで、差分として検出できるのでそちらでカバーするつもり。
ありがとうこざいます。 (といっても時間を取ってもっと検証する必要はありますが)