応用情報技術者平成30年春期 午後問7
ファイル:2018h30h_ap_pm_qs.pdf
参照:
https://www.ap-siken.com/kakomon/30_haru/pm07.html
メモも簡単に記載します。
詳細の分析は、上記リンクをご参照くだいますようよろしくお願いします。
1、防犯ブザーの動作について,(1),(2)に答えよ。
(1)、通信圏内にある防犯ブザーが,ある日の午前8時00分に静止状態から移動状態となった。防犯ブザーが次に静止状態になったのは午前8時20分であり,その後,同日の午前9時20分まで静止状態のままであった。防犯ブザーが午前8時台に位置登録を行った回数は何回か。整数で求めよ。
登録タイミングにより、
8:00 静止→移動 1
8:05 1
8:10 1
8:15 1
8:20 移動→静止 1
8:50 1
9:20 1 →9時台ので、対象外。
なので、6回でしょう。
<<登録タイミング>>
・「静止状態で移動を検出すると,直ちに位置登録を行い,状態を移動状態にする」
・「移動状態で,登録周期中に一度も移動を検出しなかったときは, 位置登録を行った後,状態を静止状態にする」
・「静止状態では,消費電力の低減を図るために登録周期を30分にする」
(2)、通信圏内にある防犯ブザーが,5分よりも短い間隔で位置登録を行うことがある。それはどのようなときか。40字以内で述べよ。
通信圏内で静止状態から移動状態に遷移する際には、登録周期に関係なく必ず位置登録が行われます。つまり静止状態で位置登録が行われた後、5分以内に移動を検出したときには、5分よりも短い間隔で位置登録が行われることになります。
移動状態から静止状態なって、5分以内でまた移動状態になる場合(私の答え)
→
静止状態で位置登録を行った後,5分経過する前に移動を検出したとき(参考答え)
2、タイマタスクの設計に関する検討について,(1),(2)に答えよ。
(1)登録周期の計測に16ビットタイマを用いて100ミリ秒を計測し,16ビットタイマ割込みの発生が通知された回数を数えて位置登録のタイミングを通知する方式を考えてみた。この場合に,16ビットタイマのカウント値に設定する値を10進数で求めよ。ここで,1MHz=106Hzとし,ソフトウェアの動作時間は考慮しなくてよいものとする。
・MPUの動作クロックが16MHz
・タイマのカウントクロックはMPUの動作クロックを32分周(1/32)した信号
とあるので、1秒あたりのカウント数は、
16,000,000÷32=500,000(カウント)
とわかります。
計測したい時間間隔は100ミリ秒ですので、必要なカウント数は以下のように計算できます。
500,000×1/10=50,000(カウント)
※クロック数は
クロック周波数とも呼ばれ、CPUが処理を行う際に発する信号を扱う速さで、「Hz(ヘルツ)」という単位で表されます。この数値が高いと、同じ時間内により多くの処理を行うことができる、ということになります。
レストランのシェフに例えると、「クロック数が低い=動きがゆっくり」、「クロック数が高い=動きが速い」ということになります。
例の16MHzとは、1秒16M回動いているとのこと。
※分周とは、
周波数を下げること。2分周といえば半分に、4分周といえば1/4にすることをいう。
例の16MHzの32分周とすると、1秒16M/32回動いているとのこと。
後は、ひどい所は、問題文中に16ビットカウントタイマの動作として「カウンタ値が0になった次のカウントクロックで割込みを発生させる。」の説明があります。
例え、カウントタイマが3にセットされると、3、2、1、0で合わせて 4回計算されます。まるでC言語の配列のインデックスのようなものでしょう。
なので、50000回だけど、実は49999カウントに設定されないといけないでしょう。
(2)、検討の結果,登録周期の計測には16ビットタイマを使用せず,日付時刻用タイマを使用することにした。日付時刻用タイマを使用する理由を20字以内で述べよ。
16ビットカウントタイマはMPUに内蔵されており、カウントされる度に割込みを発生させます。
MPUは割込みを検知すると、省電力モードから通常モードに復帰するので、16ビットカウントタイマを用いた場合には通信圏内でのカウント中は常に通常モードでの利用になります。
これに対して、日付時刻用タイマでは設定時刻になったときにだけ割込みを発生させるので、カウント中でもMPUはアイドル状態になり省電力モードへと切り替わります。
つまり、上記(1)によると、
・16ビットカウントタイマは、MPUを割り込み通知は頻繁過ぎる(100ミリ秒一回)ので、MPUは常に通常モードで利用しています。
・日付時刻用タイマは、1回だけ割り込み通知をする、ほぼ、MPUは省電モードで利用できるでしょう。
3、本文中の下線①について,移動検出情報がセットされていないときだけ,メインタスクがタイマタスクに行う要求を,表2中の字句で答えよ。
移動情報がセットされていないということは、前回の位置登録から登録周期の5分間、一度も移動を検出しなかったということです。このとき、防犯ブザーは位置登録を行った後、状態を静止状態に変更します。
メインタスクからタイマタスクへの要求には、「登録周期の計測開始」「登録周期の計測停止」「登録周期の変更」がありますが、この場合にメインタスクから行うべき要求は登録周期の変更です。なぜなら、静止状態への切り替わりに伴い、移動状態では5分だった登録周期を静止状態の30分に変更しなくてはならないからです。