a-comstack(ターゲット:HSBV850E2FG4)のCANフレーム送信部のビジーウェイトについて #88
Replies: 1 comment 2 replies
-
|
中西さん、こんにちは。 ターゲットの担当をしていたのでは無いのですが、a-can_hsbv850e2fg4_cx-20150331.tar.gz のコードと「V850E2/Fx4 prc_user.txtにビジーウェイト処理に関する説明が書かれています。 該当箇所のcan_target_transmitは送信メッセージバッファのFCNnMmCTL.FCNnMmRDYF フラグをクリアする処理(ユーザーズマニュアルの26.9.1 メッセージの送信の備考2)の対応だと思います。 ある程度の負荷をかけたときにロック状態になっていたために、ここで10msのディレイを入れたとすれば、 自分なら、クリアされてなければすぐにCAN_NOT_OKにはせず、1回だけビジーウェイトを入れて再度確認するを入れるとかですかね... |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
福岡大学の中西です。初めてここに書き込みます。書き込む場所が悪ければご容赦ください。
TOPPERS/A-COMSTACKを北斗電子さんの HSBV850E2FG4 上で使わせていただいています。おおよそ20msの頻度で周期的にCANフレームを飛ばそうとしていたところ,全然期待通りにフレームが出ておらず,(記憶が正しければ)ひとつのCANフレームを送り出すのに十数ms要している状態でした。
色々調べたところ,a-comstack/can/arch/fcn/Can_Prc.h 中の CAN フレーム送信用の関数, can_target_transmit() において(695行目),送信前にビジーウェイト(can_target_busy_wait() の呼出)が入っており,これがフレーム送信に時間を要している原因のようです。このビジーウェイトは int を10万カウントする空ループとして実装されています。
このビジーウェイトは何か意図があって設けられた必要なものでしょうか? 実際,取り除いても期待通りにCANフレームは送信されます。(現在,初期化関連のところは,状態安定のためのものかと推察して念のため残していますが,送信のところのは除きました。)
ご確認(?)いただけると幸いです。
Beta Was this translation helpful? Give feedback.
All reactions