FC2ブログ

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

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

PIC電子オルゴールVer5_6

PIC電子オルゴールVer5_6のリリース

Ver5_4に対して以下の改善を行った。(Ver5_5は本改善の途中経過のもので公開していない)

1.SDカードからの音声再生

【改善内容】

①従来は音声データをプログラムメモリとI2CインタフェースのシリアルEEPメモリに置くことができた。

②今回は音声データをSDカードに置くことを可能としたので、数時間もの長い音声も扱うことができる。

③SDカードには最大63個の音声が登録可能で、同時には1つの音声を再生し、再生開始・中断・音声切換えが任意にできる。

④音声データはPCでWAV形式ファイルをSDに格納しておく。SDへの格納とファームウェアからのリンクのやり方は 「PICでSDカード再生」 を参照。

【実現方式】

①SDカードへのアクセスはページ(512バイト)単位なので、再生中断と音声切換えは、アクセスがページ境界になったタイミングで実行する。

②SDカードへのアクセスはページ毎にページアドレスの設定が必要であり、これには実測で600us程度の経過時間が必要である。従来のI2CインタフェースのシリアルEEPメモリではステートマシンのプログラム構造を採ることでCPU資源の有効利用を図ったが、SDカードアクセスではステート数が数10にもなり実装が面倒なことになる。また、CPUの競合相手はオルゴール演奏処理だけである。このため、今回はステートマシンを捨てて、替わりに、SDカードアクセスの「データトークンの1バイト受信」での通信待ちで制御を放し、オルゴール演奏処理を実行させるプログラム構造を採った。これによりソースコードの見通しとデバグ効率が良くなった。詳細はソースコードのコメントを参照。(ステートマシンをやめてアンダーランが発生しないか評価をやっていたのがのVer5_5だった)

③I2CインタフェースのシリアルEEPメモリのアクセスもステートマシンを捨てて、SDカードと同様のプログラム構造に替えた。


2.プログラムメモリ、データメモリの配置

【改善内容】

①従来はオルゴール演奏時のパート数やピッチベンド、音声再生のチャネル数など機能のオプション選択によりプログラムのロジック部分を0ページ内に収めるか、特定の部分を1ページに配置することで対応していた。

②今回はメモリの配置を構成情報として宣言することで、デバイスのメモリ空間を最大限に活用できるようにした。

③エンジン部のAPIではBSRを保障し、固有処理部でのバンク設定の煩わしさを軽減するとともに、バンク設定漏れに起因するバグを防止する。

【実現方式】

①プログラムページを跨る呼び出しに対応するマクロを提供し、マクロ側でページ設定を保障することでソースコードのポータビリティを確保する。

・固有処理部からエンジン部のAPIを呼び出すためのマクロ「CALLAPI」を提供する。
・固有処理部でデバグログを取得するためのマクロ「DBG_?」を提供する。

②エンジン部のAPIでBSRを退避/回復する。

③メモリ配置を設計するにはファームウェア開発の知識が必要であるため、標準の設定をサンプルとして提示する。


オルゴール演奏と音声再生をコンカレントに実行するデモ演奏
プログラムメモリからの音声再生

I2CインタフェースのシリアルEEPメモリからの音声再生

SDカードからの音声再生


PIC電子オルゴールVer5_6は ここから ダウンロードできる。
今のところ、プロジェクトは下記の3つのみがVer5_6対応になっている。
プログラムメモリからの再生 プロジェクトは「onsei_PIC1705_PRG.X」 ソースコードは「onsei_PIC1705_PRG.asm」と「orgel.asm」。
I2CインタフェースのシリアルEEPメモリからの再生 プロジェクトは「onsei_PIC1705_I2C.X」 ソースコードは「onsei_PIC1705_I2C.asm」と「orgel.asm」 音声データのプロジェクトは「Mirrorna_24FC512.X」 ソースコードは「Mirrorna_24FC512.asm」。
SDカードからの再生 プロジェクトは「onsei_PIC1705_SD.X」 ソースコードは「onsei_PIC1705_SD.asm」と「orgel.asm」 音声データは「ANPANMAN.wav」。


応用回路でのピン接についてはソースコード上のコメントを参照。
関連記事
スポンサーサイト
  1. 2017/03/31(金) 22:23:49|
  2. 電子オルゴール+音声
  3. | コメント:0
<<Digistance地デジチューナーリモコン(替えリモコン製作) | ホーム | アンパンマンはじめてのペンタッチスクールの修理(タッチパネル不良)>>

コメント

コメントの投稿


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

プロフィール

大泉茂幸

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

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

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

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

カテゴリ

おもちゃ修理技術 (87)
¦ ・電子オルゴール+音声 (32)
¦ ・音声再生・録音再生 (4)
¦ ・2.4GHzラジコン (29)
¦ ・レガシーラジコン (12)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (3)
ツール製作 (24)
¦ ・プログラマー (17)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (4)
修理事例 (150)
¦ ・マイコン換装 (70)
¦ ・電子・電気修理 (58)
¦ ・メカ修理 (22)
製作記事 (4)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

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

ブロとも申請フォーム

この人とブロともになる

QRコード

QR