FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

「DFPlayerMiniの制御」でDFプレーヤーからの応答を受信する(ソフトUARTの割込み受信)

【前振り】
先般製作した 「DFPlayerMiniの制御」 ではPICからDFプレーヤーへ一方的に制御コマンドを送って、DFプレーヤーからの応答は見ないでいた。トラック番号やホルダ番号を指定して再生させるにはそれで十分なのだが、指定したトラックやホルダが存在しないとかのエラーの検知や、予めメディア内のトラック数やホルダ数を把握して気の利いた制御を行うにはDFプレーヤーからの応答を受信する必要がある。

そのためには、赤外線リモコンからの受信とDFプレーヤーからの応答受信をコンカレントに実行する必要があり、UARTモジュールを内蔵していないデバイスでは実現が難しい。UARTモジュールを内蔵したマイコンで最廉価なのは以下があるが、10F322の価格の倍近くしている。ファームウェアを工夫することで 10F322 で何とかしたい。
12F1572 @80円(2019年秋月)
16F18313 @80円(2019年秋月)

そこで、UARTモジュールを内蔵していないデバイスで割込み受信のフィージビリティスタディをやってみることにした。

結果は、赤外線リモコンからの受信とDFプレーヤーからの応答受信とがコンカレントに実行でき、実用生が実証できた。
この方法はDFプレーヤーに限らず ソフトUARTでの割り込み受信 として一般的に利用できる。

【設計】
赤外線受信機能とUART受信機能をコンカレントに実行するにはどちらかを割り込みで対応する必要がある。どちらの機能が汎用性があるかと言えばUARTだ。いろんなファームウェアでの使用頻度が高いし、調歩同期の仕様は普遍的であるからだ。それに比べて赤外線はエンコードの種類が多くて、特におもちゃ修理では都度カスタマイズが必要なことが多い。それを割り込み処理でやるとすれば無用の労力を喰うことになる。それで、UART受信を割り込み処理で実現することとする。

UARTモジュールを内蔵したデバイスでは1バイトを受信する毎に割り込みさせて受信データを取得するのだが、シリアル通信をI/Oポートの入力信号として割り込みで取り扱うには、以下のようにする。

・スタートビットのエッジをIOC割り込みで拾う。
・1/2ビット巾後にタイマー割り込みで、スタートビットの中央で信号レベルをチェックする。
・以降は1ビット巾間隔のタイマー割り込みで、データビットとストップビットをサンプルする。

つまり、ビット単位で割り込み処理をさせる訳だ。

UARTの受信中は頻繁に割り込み処理が走るので、タスク処理で実行している赤外線受信処理にも工夫が必要だ。
赤外線信号のパルス幅の計測を簡易なポーリングループ回数のカウントで行うと、割り込み処理でのCPU時間の誤差が積もって行くので、デコードを誤ることになる。そのため、タイマーを用いた時間計測を行って、割り込み処理での誤差が積もらないようにする。今回の10F322では、TMR0を赤外線受信に、TMR2をUART受信に充てている。

【回路図と配線図】
DFPlayerMiniの制御Bタイプ(回路図)
DFPlayerMiniの制御Bタイプ(配線図1)
DFPlayerMiniの制御Bタイプ(配線図2)

【UART割込み受信の検証】
割込みタイミングの検証
DFPlayerMiniソフトUART割込み受信タイミング検証波形
ch1(赤)が非同期シリアル受信データで 0x55 (1と0が交互に並ぶ)。
ch2(黄)が割り込み処理ルーチンでポートにパルスを出力させたタイミング検証用の信号。
各ビットの中央でサンプルできていることを示している。

赤外線受信とのコンカレント実行の検証
DFプレーヤーからの非同期シリアルデータ
DFPlayerMini応答取得(受信データ)

ファームウェアで割り込み受信した結果の表示
DFPlayerMini応答取得(表示)
<>内に、受信した応答の0起算で3バイト目と6バイト目のデータを表示している。

リモコンの選局ボタンを素早く押して、DFプレーヤーからの応答を受信完了する前に次の操作を矢継ぎ早に指示し、そのときの動作ログを以下に示す。赤外線受信とDFプレーヤーとの送受信の処理、更にログ取得の処理が同時期に重なっても、それぞれの処理は正常に動作している。
DFPlayerMiniソフトUART割込み受信検証ログ

【ダウンロード】
設計資料とファームウェアの開発プロジェクトは ここから ダウンロードできる。

ソフトUARTの割込み受信を行うプロジェクトは DFPlayerB_322.X
関連記事
スポンサーサイト



  1. 2019/02/06(水) 15:49:56|
  2. 電子オルゴール+音声再生
  3. | コメント:0
<<27MHzFM方式トイラジ(TOMY) | ホーム | PICプログラマーのバグ改修(AVRでEEPの読み込みができない)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (131)
¦ ・電子オルゴール+音声再生 (53)
¦ ・音声再生・録音再生 (14)
¦ ・2.4GHzラジコン (40)
¦ ・レガシーラジコン (13)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (35)
¦ ・プログラマー (27)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (5)
修理事例 (157)
¦ ・マイコン換装 (75)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (5)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (1)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR