先般行った 「
PIC電子オルゴールVer5_7でSPIメモリからタッチセンスで音声再生」 に対して、Sleep対応を行った。
普通のスイッチでPIC電子オルゴールを操作するのであれば、IOC割り込みを仕掛けてSleepすればよいのだが、タッチセンスで操作する場合は、Sleep中はタイマーが停止するためタッチセンスができないので工夫が必要だ。
ターゲットデバイスは16F1503と16F1705。
【設計】
やり口は、Sleep中にWDTでWakeUpして、短時間のうちにタッチセンスを行うことだ。タッチセンス時間:WDT周期 が小さい程、平均的な消費電流を小さくできる。タッチセンスは1点当たり28us程度を見込むと5点で140usとなる。WDT周期を128msとすると、平均的な消費電流は約1/1000になる。
オルゴール演奏ではFoscは32MHzが必要だが、例えば16F1705でFosc=32MHzではx4PLLを使うことになり、x4PLLは安定するのに2ms程度も掛かる。これでは平均消費電流を抑えることができない。そのため、稼働していないときはFosc=16MHzに落として、定期的にタッチセンスを実行する。稼働中(Fosc=32MHz)はタイマーのプリスケーラを1/2に設定して、タッチセンスでの計時値が変わらないようにする。
16F1705ではポートピンの入力容量がピン間でバラつきがあるようだ。特にRA0とRA1はRA2とRA4、RA5と比べて入力容量が倍程度も大きく見える。手持ちの数個の16F1705をチェックしたが同じ傾向が認められた。16F1503はピン間の差は認められなかった。また、16F1705ではFoscが16MHzのときは32MHzのときより入力容量が大きく見える。そのため、事前に実験を行い、16F1705と16F1503ともに1MΩの外部プルアップでソフトの制御の範囲内に収まることを確認した。
【回路図】

【テストボード】


【消費電流の実測値】
非稼働時の平均消費電流は、16F1705では2uA、16F1503では8uAとなった。
【ダウンロード】
PIC電子オルゴールのファームウェアは
ここから ダウンロードできる。
今回追加したプロジェクトは onsei_PIC1705_SPI_touch.X
親のソースコードは onsei_PIC1705_SPI_touch.asm
更新したプロジェクトは onsei_PIC1503_SPI_touch.X
親のソースコードは onsei_PIC1503_SPI_touch.asm
【動作テスト】
単独タッチで音声を再生したあと、最後に複数タッチで音楽を再生している。
- 関連記事
-
スポンサーサイト
- 2019/03/06(水) 19:53:17|
- 電子オルゴール+音声再生
-
-
| コメント:1
リサイクルショップで小さなミニーちゃんのぬいぐるみを入手。
これをベースにPIC電子オルゴールを組込み、タッチセンスで楽しく遊べるように改造してみました。
両手のひらサイズで2頭身のミニミニーちゃん、とても小さいので組込みには苦労しました。
このプロジェクトで、オリジナルの ミニーマウスぬいぐるみ の音声再生(5種類すべて)を再現できました。それに加えて、ミニーマウスのテーマ曲(ユー・フー!)を音声再生で聴くことができて、子どもたちも驚くことでしょう。
この次も、何卒よろしくお願いします。
http://blog.canpan.info/charts/archive/194
- 2019/04/25(木) 09:11:30 |
- URL |
- ToyDr.わたなべ #-
- [ 編集 ]