初めてお世話になります。axonteraです。
RL78/G13を7つ使って、マスタ1、スレーブ6のCSI通信を行おうとしていますが、うまくいっていません。【症状】・マスタから送信したデータが1バイト遅れてマスタの受信データになる・スレーブ側はオーバーランエラーが出て送受信できていない【条件】・マスタ、スレーブともコード生成を使用・通信条件(CSI00):シングル転送モード、8ビット、MSB、タイミングタイプ1、312500bps、割り込み優先度レベル2・マスタでCS後、100usのディレイ後に送受信開始(R_CSI_Send_Receive実行)・スレーブ側はCSを検知してすぐに送信バッファ(配列変数)にデータ格納し、続いてR_CSI_Send_Receive実行
現在はスレーブを1つにして、他の5つのスレーブはR_CSI_Createを実行せず、P10とP12をNchオープンドレインに設定したところ、SI00(マスタ)が0固定になってしまいました。そこで上記5つのスレーブでPM1 = 0x02、P1 = 0x05を追記して出力を1にしてみましたが、今度は立ち上がりの鈍い波形になり、マスタのマイコンが熱くなって(60℃くらい)しまいました。その鈍い波形もやはり当初の1バイト遅れデータのように見えます。
何か思い当たるアドバイスがあればお願いいたします。
あ。遅延はインターバルタイマ(チャネル2)で1usを作ってて、INTTM2の優先順位は低でした。。
ということで優先順位をINTCSIより一つ上にして、r_csi00_interrupt()のアタマにEI();を入れたところ、とりあえず1対1のCSI通信が問題なくできるようになりました\(^o^)/
この後は1対6に挑んでいってみます。ただ、他の不具合で基板改版になったついでにCSI通信しなくてもいい方法を思いついたので、新基板ではそっちを採用してしまいました。。(スレーブマイコンすら不要になりました)ただ、今後CSIマスタスレーブ通信を使うこともあると思いますので、今回のチョコさんのご対応とご指導は必ず生きてくると信じています。
本当にありがとうございました!
チョコです。
とりあえずは、解決したことはよかったです。
このような通信を使う機会もあるかもしれませんので、今回の経験を生かしてもらえれば幸いです。
以上