RX65NにてDTC転送を行っています。割り込みにてDTCを起動した時の割り込み禁止、及びマスクの対応について教えてください。

初めて質問を投稿するyujiです。

X65NでDTCを使用し、SPI通信を実現しています。SCKのトリガ割り込みによりハードウェアで、GPIOピンからデータをメモリに自動転送しています。8ビットデータがそろったら、SPI通信を完了しています。途中で他のタスクにて、割り込み禁止状態になると、ビット抜けは発生するのでしょうか?DTC転送を開始したら他のタスクで割り込み禁止、及びマスクをしてはいけませんか?教えてください。  よろしくお願い致します。

  • yujiさん、こんにちは。NoMaYと申します。

    大丈夫だと思いますよ。

    #既に完成済みの基板で、ピンアサインの都合上、無理矢理にでも実現しなければならなくなった、とかでしょうか?

    あと、かふぇルネもしくはブラウザの反応が悪かったのか、同じものを2つ投稿されていますね?あちらは、削除してしまった方が今後のリプライの混乱を避けるのに良いと思うのです。

  • ありがとうございます。
    >#既に完成済みの基板で、ピンアサインの都合上、無理矢理にでも実現しなければならなくなった、とかでしょうか?
    というか、後からどうしてもマスクしなければならない、非同期のタスクが必要になりました。
    大丈夫と言いますと、割り込み禁止になっても転送に問題が発生することは、ありませんか?

    また、出来れば投稿を削除する方法を教えていただけますでしょうか?

  • yujiさん、こんにちは。NoMaYです。

    「既に完成済みの」に対して「設計時からやむなく」等でなく「マスクしなければならない、非同期のタスクが必要になり」という似た者同士との会話とは少し趣の違った返事が返って来たと感じましたので、もう少し状況確認した方が良いかなと思い、お尋ねします。言葉の使い方は以下の私の認識であっていますか?

    (1) 割り込み禁止 ⇒ PSW.Iフラグを操作して全ての割り込みルーチンの実行を一括で不許可にすること
    (2) 割り込みマスク ⇒ PSW.IPLビット(全4ビット)を操作して特定の優先順位以下の割り込みルーチンの実行を不許可にすること
    (3) 転送に問題 ⇒ 「ビット抜けは発生するのでしょうか」
    (4) SCKのトリガ割り込みによりハードウェアで ⇒ SCKを外部割込み入力に入れておき、立ち上がりエッジ毎もしくは立下りエッジ毎にDTCを起動して

    最初に頂いた文面から判断すると、くだんのやり方で8ビット分転送し終わった時点で、相手側は待ち状態に入るのであろう、つまり、8ビット分転送し終わった時点で発生するDTC完了割り込み(といっても割り込み要因的にはDTC起動要因というかSCKのトリガ割り込みと同じ)は、上記の(1)と(2)によって割り込みルーチンの実行が遅れても問題無いことは当然だと私は仮定していたのですが(さすがにそこは当たり前と思っていてたのですが)、そこも合っていますでしょうか?

    あるいは、8ビット分の転送が終わった時点でのDTC完了割り込みも不要なプログラムにしてある、かも知れません。

    ところで、というか、そもそも、というか、ここから確認し直した方が良いのかな、、、

    (5) 今回の場合、このSPI通信にSCIとかRSPIとか、それらのRXマイコン内蔵周辺機能は使っていない、ということで合っていますよね?



    あちらの投稿を削除するには、最初の投稿が表示されているエリアの右下に More というクリック欄があるのですが、そこをクリックすると幾つか操作の選択肢の1つに Delete というのが表示されますので、それをクリックしてから、そこから更に操作を続けて行くと削除出来ます。

  • yujiさん、こんにちは。NoMaYです。

    その後どうでしょうか?時間が経っていますので、もう動作確認も終えられていて、大丈夫だったかどうかも判明している、かも知れないかな、とも思いますけれども。