
SH704x-10MHzでiTRONのお勉強を始めました。
従来のシングルスレッドだった時、
タッチパネルに加工処理したデータを表示させるのに約0.5秒ほどかかっていた処理が
今回Taskとして組み込むと約4.5秒かかるようになってしまいました。
(この時アイドルTaskと上位優先順位Task有り。但し上位優先順位Taskはデータ表示処理を起床させ自らはスリープ)
更にタッチパネルの状態をチェックするTaskも同じ優先順位で組み込むと67秒もかかるようになってしまいました。
サンプルプログラムはCMT0の1msec割込み毎にirot_rdqを実行していたのですが、10msec経過してからirot_rdqを実行する方法に変更したところ5.6秒に劇的に短縮されました。
が、本来の速さにはまだまだ程遠い状況です。
irot_rdqは100msecにもしてみましたが10msecの時より若干速くなっただけでした。
CMT0処理(irot_rdq含むとき)はトレースを追ってみると約0.2msecかかっているのですが
CMT0内の処理が多すぎるのでしょうか?
それともirot_rdqは「こういうもの」なのでしょうか。
ネットでは同件のような情報が見つからず。
書籍を購入するにも知りたい事が書かれているのか調べられず。
サンプルプログラムは簡単すぎて参考にならず。
どなたかご存知の方いらっしゃいましたら是非
ご指導お願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは。
CMT0の処理、とおっしゃっているのは、おそらくコンペアマッチタイマーによる割り込み処理のことだと思いますが、割り込み処理の中にいろいろ書き込まれているのでしょうか?
割り込み処理の最中はOS(タスクスケジューラの)管轄外になります。割り込み処理中は、イベントフラグを立てたり、タスクを起こしたりするだけにとどめて、極力軽量化して、処理に時間がかかるものはタスク内で実行することをお勧めします。
Interestさん。回答ありがとうございます。
CMT=コンペアマッチタイマーの事です。
TRONを始めてまもなく、またハード面の細かい所まで考えてプログラミングした事が無かった為
ハードウェアマニュアルに記載されていた記号をそのまま使ってしまいました。
コンペアマッチタイマ割込み処理は従来から有った
CMT0フラグクリア処理
時間カウント用変数のインクリメント
タッチパネルの押下のチェック
今回追加したのは
10msec毎にirot_rdq用の変数1個インクリメント
末尾に
sys_clk();sys_tim();ret_int();の処理です。
(3つはサンプルのままコピー)
> 極力軽量化して
CMT0内部での処理を別タスクを分けられるか検討してみます。
ありがとうございました。
No.2
- 回答日時:
ANo.1 = Interest です。
予想通り、割り込み処理の中にいろいろ書き込んでらしたのですね。
> CMT=コンペアマッチタイマーの事です。
私はSH系のマイコンをさわったことがあるのでわかりましたが、他のマイコンになると同じ機能でも名称が異なることにご注意ください。
miyuyuさんが使用されているITRONがどこのものでどう実装されているかわかりませんが、おそらくCMT0割り込みはITRONのシステムクロックを作っているものと思います。(私が個人で使用しているミスポのNOIRi3ではそうなっています。)これにはまったく手を加えないのが得策です。
もし一定の時間間隔で何らかの処理をしたいのでしたら、「周期起動ハンドラ」を使ってタスクをwakeupします。(周期起動ハンドラは”ハンドラ”ですからタスクではありません。極力軽く作りましょう。)
この回答への補足
/*--------------------*/
Interestさん
コンペアマッチタイマー(CMT0)に有った従来処理を
周期起動ハンドラにするため、色々な波及が出てしまい手間取ってしまいました。
連絡送れて申し訳ありません。
昨日最も速かった条件で3.5secだったのを
0.9secまで短縮する事ができました。
本当にありがとうございました。
もしよろしければもう少しInterestさんの知識を分けて頂きたいのですが
よろしければご教示ください。
1.CMTは何秒周期でご使用されていますか?
2.その時irot_rdqは何秒毎に実行していますか?
3.CMTと同じインターバルで周期起動ハンドラは動かせないのでしょうか?
(同じインターバルにすると動かなくなってしまいました)
4.有用だった書籍などあったら紹介してください。
■ありがとうございました。(^^♪
> 他のマイコンになると同じ機能でも名称が異なる~
そうなのですか。以後気をつけます。勉強になりました。
> 「周期起動ハンドラ」を使って
なるほど、そのような使い方をするのですね。
まだ試していませんが、期待できそうな気がします。
結果が出たらご報告いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- 物理学 (1)秒針の角速度の大きさω(ω>0)を計算しなさい 単位はrad/s、πはそのまま残すこと (2) 3 2023/05/01 12:58
- その他(悩み相談・人生相談) 僕の家族は、父、母、長男、姉、次男、僕の6人家族です 僕の家族はいつからか、家族内で優先順位が出来ま 3 2022/06/12 04:14
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- Excel(エクセル) Excel 複数列のある文字を優先して1列に表示したいです 2 2022/12/03 12:07
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10で最近パソコンを立ち...
-
生理でも会ってくれるセフレっ...
-
STEAMで画面が全体表示されない
-
PCにps4のコントローラーを接続...
-
[スマホゲームについて] iPhone...
-
エクセルでリソース不足の警告...
-
大学内でオンラインゲームをや...
-
ポケモンのなつき度チェック(...
-
デスクトップで謎の半透明なウ...
-
パソコンのバツ印が出てこなく...
-
3DSはSDカードを付けずに使用で...
-
パソコンにBugSplatが表示され...
-
ゲーム中にGPU使用率が急激に下...
-
CPUに高負荷がかかると、Discor...
-
スマホゲームのメモリが重い!
-
ゲームセンターで前の人が入れ...
-
スペックは足りてるのにゲーム...
-
男性は好きでもない人と一緒に...
-
手持ちのポケモンがゆうことを...
-
彼女がオンラインゲームに夢中...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10で最近パソコンを立ち...
-
生理でも会ってくれるセフレっ...
-
PCにps4のコントローラーを接続...
-
ポケモンのなつき度チェック(...
-
[スマホゲームについて] iPhone...
-
STEAMで画面が全体表示されない
-
手持ちのポケモンがゆうことを...
-
デスクトップで謎の半透明なウ...
-
エクセルでリソース不足の警告...
-
CPUに高負荷がかかると、Discor...
-
パソコンのバツ印が出てこなく...
-
ネカフェのPCでSteamをダウンロ...
-
動画見ながらゲーム等するとPC...
-
3DSはSDカードを付けずに使用で...
-
PCゲームのセーブデータはどこ...
-
ゲーム中にGPU使用率が急激に下...
-
男性は好きでもない人と一緒に...
-
スペックは足りてるのにゲーム...
-
PS2のソフトが使えるはずのPS3...
-
ユーザーアカウントが複数ある...
おすすめ情報