E10Aエミュレータ接続時の動作との相違

こんにちは、かたつむりです。プログラミング初心者です。現在、SH7237でSCIFを使用してシリアル通信のプログラムを作成中です。通信はPLCとRS485で行います。

E10Aエミュレータを接続した状態で確認しながらコーディングを行っていました。E10Aエミュレータを接続した状態ではPLCから送信されるスタートビットに対してRXIの割り込みが発生して、マイコン側で受信して、そのままシーケンス的に送信まで行うという動作が確認できました。

しかし、E10Aエミュレータを使用せずにマイコン単体で動作させたときにRXI割り込みが発生しなくなってしまいます。

確認したこととしては

・送信を強制的に行わせる。結果、信号の出力があるのでSCIFの割り込みが無効になっているわけではないと考えられる。

・SCIFの割り込み優先をあげる。SCIFー>8、CMT0->5、PWMに関する割り込みー>1としても変わらない。

・PWM割り込みについては確認できてませんがCMT0の割り込みは動作している。マイコンは動作している。

事象としては以上となります。

原因として考えられることはありませんでしょうか。よろしくお願いします。

Parents
  • わわいです。
    まず、本当に通信しているかをオシロで通信ラインを見て確認してください
    ハンドシェイクライン(CTSとかなんとか)のレベルが不適当で、送信されてなかった、のがあるあるだったりします
  • かたつむりです。ご回答ありがとうございます。
    オシロでの確認はしています。同じ状況でエミュレータあり無しを繰り返しても再現性はあります。
    エミュレータを接続していることでなにかしらのラインが安定しているなどありますでしょうか。
  • わわいです
    オシロで確認して通信はちゃんと行われてるんでしょうか。
    そうであるなら、コードの方に問題があるように思われます

    E10接続時は基本的なバス設定、ポート設定が行われて起動するので、そこらへんの設定がなくてもコードは走ってしまいますが、接続しない場合、(スタンドアロンで動作させる場合)はその設定がなされないので、コードの方でそこらへんの初期化が足りないと不具合が出ることになりますね
  • かたつむりです。
    マニュアルを見直しました。使用しているSCIFのRXD3とTXD3はE10接続時はそれぞれTDIとTDOに固定されるようです。SCIFに対してのコードを書いているつもりだったのに設定が変えられてしまう時だけ思い通りに動くという不思議な感じがしますが、どういうことなんでしょうね。
  • わわいです
    え、JTAGラインのピンなんですか?
    TDIとTDOはE10Aにつながってるはずですが、そこらへん回路はどうなってるんでしょう

    まあ、そういうことなら、あなたのコードのその初期設定の記述がまずい、ということですから、そこらへんのコードを見直してみればいいんじゃないかと思いますが、JTAGと共用のピンというのはなんか不安ですねー

Reply
  • わわいです
    え、JTAGラインのピンなんですか?
    TDIとTDOはE10Aにつながってるはずですが、そこらへん回路はどうなってるんでしょう

    まあ、そういうことなら、あなたのコードのその初期設定の記述がまずい、ということですから、そこらへんのコードを見直してみればいいんじゃないかと思いますが、JTAGと共用のピンというのはなんか不安ですねー

Children
  • かたつむりです。解決しました。原因としてはSCIF用に設定できるポートが2箇所あり、その両方でSCIFに設定していました。E10Aを接続していたときは必要のない誤っていた設定が強制的に変更されていたことでうまくいっていたみたいです。初歩的なミスでしたがヒントをいただけたので解決までいたることが出来ました。ありがとうございました。