H26 PM1問題
H26 PM1解答
H26 PM1講評

問1 ICレコーダ

設問1
(1)

(解説)

ファイル名が衝突する場合を考えないといけません。
ファイル名を見てみましょう。
”年月日時分秒”となっています。

設問文中に
「連続して録音してもファイル名が衝突することがない」
と丁寧に書いてあるので、普通の使い方ではないわけですね。

録音操作以外にファイル名に影響を及ぼすものを考えれば
よいわけです。

考えられる要因は次の2つです。
要因1 ファイル名を未来の録音日時に設定し、その時刻に録音を開始する。
要因2 時間を戻して、再度同時刻に録音を開始する。
ここでは問題文P2に「時刻は時刻設定機能を用いて利用者が変更できる」
とありますので、要因2の方で解答するのがベターでしょ。
(個人的には要因1も問題文から推測できると思っていますが)

(解答例)
「時刻設定機能で利用者が時間を戻した後に録音を開始する」

(2)
(解説)
チェックディジットがなかった場合を考えましょう。
問題文P3を確認すると
「再生停止位置、出力設定値をレジューム情報として記憶する」
となりますね。
この2つの情報で問題になるから、チェックディジットが必要なわけですよ。
しかも、「PCからのある操作」ってヒントも設問中に書かれていますので、この
あたりに解答がありそうです。

「PCからのある操作」の説明は問題文P2に
「USB I/Fを介してPCへ転送およびPCから格納することができる」
問題文P4には
「USBで接続したPCからアクセスできるのは、音声データ記憶領域だけである」
とありますので、一般的なファイル転送操作が出来そうですね。

最初に戻って「再生停止位置」って、どのような情報でしょうか?
再生しているファイル名と停止したタイムライン情報かなと推測します。
「○○.mp3ってファイルの□秒目」
みたいなものでしょうか。

このあたりから少し推測してみて解答するしかなさそうですね。

ICレコーダの○○.mp3と、PC上の○○.mp3はファイル名は同じで
音声データが違うと考えると、PC上の○○.mp3でICレコーダの○○.mp3を
上書きした時には正しくレジューム機能が働かないことになりますね。

正直なところ、A曲の○秒目からの再開だろうと、B曲の○秒目からの再開だろうと
個人的には致命的ではないので、チェックディジットは要らないですね。

(解答例)
「ICレコーダのファイルを別の音声ファイルで上書きする」

(3)
(解説)
レジューム情報が見つからないんですね。
状況1 レジューム情報をユーザが消してしまった
状況2 レジューム情報がまだ作成されていない
のどちらかしかありません。

問題文のP4には「PCからアクセスできるのは、音声データ記憶領域だけ」と
明確に書いてありますので状況1は考えなくて良さそうです。

問題文P3を見てみると
「各音声データの初回再生時にレジューム情報用のファイルを作成する」
とありますので、これが解答として使用できそうですね。

(解答例)
「録音してから1度も再生していない状態」

設問2
(1)
(解説)
ラジオはシステムバスとADC(オーディオモジュール)に接続しています。
ADCは受信したデータを、デジタル化しているだけです。
システムバス側を考えないといけないんですね。
設問文には「ラジオ放送の受信に必要な制御内容」とまで書かれています。

ここまで書いてあれば「チャネルを合わせる」しかないのではないでしょうか。

(解答例)
「放送信号とのチューニングを行う」

(2)
(解説)
みなさん大好きな計算問題です。

音声データ記憶領域 3968Mバイト
サンプリング周波数 48KHz
量子化 16ビット
圧縮 12分の1

この情報から計算します。

まず1秒を記録するのに必要なデータサイズです。
16ビットで48K回サンプリングしますので
16(ビット)×48K(回) = 768Kビット/秒 (圧縮前)
ですので、圧縮をかけると
768K ÷ 12 = 64Kビット/秒 (=8Kバイト/秒)
となります。

データ記憶領域から除算すればよいので
3968M ÷ 8K = 496K秒 = 137.7777時間

(解答)
137時間

(3)
(解説)
表3の中から必要、不要を考えていきましょう。

MPU常時動作が必要です。
→ 880マイクロA
RAM(一言も記載無いですが)MPUが動作するなら必要でしょう。
→ 170マイクロA
フラッシュメモリ(書き込み時以外)が必要です。
→ 200マイクロA
D/A音を出すのに常時必要です。
→ 130マイクロA
ラジオ停止状態です。
→ 10マイクロA
アンプ スピーカを使用する際は必要です。
→ 380マイクロA
LCD 20秒点灯しています。
→ 点灯 1830マイクロA、消灯 30マイクロA

まず最初の20秒間
880+170+200+130+10+380+1830 = 3600マイクロA
残りの40秒間
880+170+200+130+10+380+30 = 1800マイクロA

1分間の平均電流は
3600 × 1/3(20秒) + 1800 * 2/3(40秒) = 2400 マイクロA

電力は
2400(マイクロA)×5(V)=12000マイクロW=12ミリW

(解答)
12ミリW

設問3
(1)
(解説)
aを考えましょう。音声録音の処理中です。
「音声信号の変換完了の割込み~」とありますので、
音声信号をどうにかしたいわけです。
録音は入力された音声をファイルとして格納しないといけませんね。
なので「ファイル管理タスク」を呼び出さないといけません。

cを考えましょう。レジュームの再生開始時の処理ですね。
「音声データから○○を作成し」って、作成するのは一つですね。
設問1でも出てきた、「チェックディジット」になります。

(解答)
a ファイル管理タスク
c チェックディジット

(2)
(解説)
音声再生処理です。表4と表1から再生動作をイメージしましょう。
D/A変換完了割込み発生後の処理をイメージしないといけないです。
「メインタスクに通知する」のは音声信号出力開始関数に
「MPUに割込み通知を送信」と書いてあります。
その後はファイル管理タスクから「b」をやるんですね。
この後は「音声データ格納関数」で「音声データをバッファに格納する」
ようなので、「b」は格納データを準備しないといけないんですね。
いい言葉が浮かばなかったのですが、表4の音声再生の「開始時」を
見てみましょう。
ここに「音声データ(再生開始位置から2秒分)を取得する」と
お手本となる文があるのでこれを使用します。

(解答)
再生位置から1秒分の音声データを取得する

(3)
(解説)
問題文を読んでも、特に明確な説明は出てきません。参考とするなら
表4の
「キー入力、電源状態に応じて、音声録音タスク、音声再生タスクに指示を行う」
が一番のヒントだと考えます。
ここの「キー入力、電源状態に応じて」が必ず必要な処理です。
ようは、誰がどのような状態で割込みを発生したかわからないことには、適切な
次の処理を実施することができないのです。
これらの言葉を使用すると
「通知発生時の、キー、電源状態を確認する」
でしょうか。
個人的には、
「通知発生時の、各タスクの状態を確認する」
あたりが無難な解答かと考えています

(解答例)
「通知発生時の、キー、電源状態を確認する」

「通知発生時の、各タスクの状態を確認する」
(個人的には推しますが、点数とれるかどうか微妙です)

(4)
(解説)
レジューム情報を取得する目的が2つ(?)、ちょっと問題振り返らないと
いけませんね。
問題文P3の「一致しなかった場合は~」くらいしか見つかりませんね。
これで解答するしかなさそうです。
「レジューム情報用のファイルを削除して再作成し」の目的をまとめて
みましょう。

どのような場合にレジューム情報用のファイルを削除する必要があるかと
言いますと、設問1でも出てきたようにPCから音声ファイルの操作を実施し
音声ファイルとレジューム情報がミスマッチしているときです。

とここまで書いたのですが、きっと単純解でいいんでしょうね。
(いつも考え過ぎて、部分点すらもらえないような解になってしまう)

なので、「レジューム情報用のファイルを削除して再作成し」で解答例を
作ります。

(解答例)
「レジューム情報の再作成を判断するため」