USB通信の割り込みでCMT割り込みを邪魔させたくない

RX62N-RSKを使用してRX62Nの使い方を勉強している者です。
将来的にはUSBでCDC通信を行いながら、CMTで割り込みを発生させ一定周期の処理を行いたいと考えています。

そこで、現在はRenesas USB MCU and USB ASSP USB Peripheral Communications Device Class Driver (PCDC)のサンプルプログラムをダウンロードして実行させながらUSB通信を確認しているのですが、次のような疑問が湧きました。

上記サンプルプログラムはUSBのエニュメレーションとデータ転送が割り込みにより行われますが、USBの割り込みで一定周期で行わせたいCMTの割り込みを邪魔させたくない(CMTの割り込みは可能な限り一定周期で行わせたい)場合には、どのように処理をさせるのが得策なのでしょうか?

まだ、勉強不足なので、どんな方法が考えられるかわからないのですが、

(1)USBの割り込みの宣言#PRAGMA interruptにenableオプションをつける?
(2)USBの割り込み処理(usb_cpu_usb_int_hand()関数)の読み出しを、割り込みではなくポーリングで行う?

等の方法かと思っているのですが、上記2つの方法での実現は可能なのでしょうか?

同じような事を考えた方は居ないでしょうか?

お知恵をお借りしたいと思います。

よろしくお願いします。
Parents
  • 級長さん、こんにちは。
    みなさん、横から失礼します。

    私が経験した件も「USBを使用した環境において、タイマ割り込みの周期を正確にする必要がある」という仕様でしたので、級長さんの今の状況と似ているのではないでしょうか。

    私の場合、
    ・MPUは、V850E2/ME3
    ・USBドライバは、サードパーティ製ライブラリ
    でした。

    私の経験だと、USB割り込みの多重割り込みを許可に設定し、優先順位をUSBよりタイマの方を高く設定すれば、タイマ割り込みの周期はだいぶ正確になりました。
    そのかわり、USB割り込みが待たされることになり、結果的にUSBの通信ができなくなってしまいました。最終的にUSB割り込みの優先順位を一番高く設定しないと通信ができない状況でしたので、タイマ割り込みの周期は正確にすることができませんでした。

    おそらく、級長さんの状況でも同じではないかと思います。
    汎用のタイマを使用したモータ制御では、考えているような動作ができないかもしれません。使用しているのはRX62Nということでしたが、RX63Tにはモータ制御用タイマとUSBの周辺回路がのっていますが、級長さんの仕様にはこちらの方が合っているのではないでしょうか。あ、私はRX63Tについては詳しくありませんので、断言できませんが。。。すみません。

    それと、イベントドリブンの簡単な実現方法は、やはり割り込みではないかと思います。\”送信完了\”や\”受信完了\”などの割り込みをイベントとして、それにより処理を起動(ドリブン)する方法です。特に\”受信完了\”はいつ発生するか分かりませんので、それを常にチェックし続けるのは非効率です。メインループは無限ループさせても構いませんが、\”受信完了\”などを割り込みフラグをチェックするのではなく、割り込みを発生させて処理をすれば、シンプルで分かりやすいイベントドリブンが実現できると思います。

    emanonさん、すとさん、横から失礼しました。
    こんな感じで間違いないでしょうか。
Reply
  • 級長さん、こんにちは。
    みなさん、横から失礼します。

    私が経験した件も「USBを使用した環境において、タイマ割り込みの周期を正確にする必要がある」という仕様でしたので、級長さんの今の状況と似ているのではないでしょうか。

    私の場合、
    ・MPUは、V850E2/ME3
    ・USBドライバは、サードパーティ製ライブラリ
    でした。

    私の経験だと、USB割り込みの多重割り込みを許可に設定し、優先順位をUSBよりタイマの方を高く設定すれば、タイマ割り込みの周期はだいぶ正確になりました。
    そのかわり、USB割り込みが待たされることになり、結果的にUSBの通信ができなくなってしまいました。最終的にUSB割り込みの優先順位を一番高く設定しないと通信ができない状況でしたので、タイマ割り込みの周期は正確にすることができませんでした。

    おそらく、級長さんの状況でも同じではないかと思います。
    汎用のタイマを使用したモータ制御では、考えているような動作ができないかもしれません。使用しているのはRX62Nということでしたが、RX63Tにはモータ制御用タイマとUSBの周辺回路がのっていますが、級長さんの仕様にはこちらの方が合っているのではないでしょうか。あ、私はRX63Tについては詳しくありませんので、断言できませんが。。。すみません。

    それと、イベントドリブンの簡単な実現方法は、やはり割り込みではないかと思います。\”送信完了\”や\”受信完了\”などの割り込みをイベントとして、それにより処理を起動(ドリブン)する方法です。特に\”受信完了\”はいつ発生するか分かりませんので、それを常にチェックし続けるのは非効率です。メインループは無限ループさせても構いませんが、\”受信完了\”などを割り込みフラグをチェックするのではなく、割り込みを発生させて処理をすれば、シンプルで分かりやすいイベントドリブンが実現できると思います。

    emanonさん、すとさん、横から失礼しました。
    こんな感じで間違いないでしょうか。
Children
No Data