30年ぶりに復活した隊長の電子工作指令本部
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
★ソース/バイナリ
ソース: MPLAB Project files (HoneyRecvSrc.zip) 2014/2/9 (HEX 込み)
★開発環境
★ライタ
PICkit 3 または 対応ライタ (PICKit 2 では PIC32MX がサポートされていません)
★ライブラリ
ソース: MPLAB Project files (HoneyRecvSrc.zip) 2014/2/9 (HEX 込み)
ソースには、メイン側(PIC32MX695F512H)と、サブ側(PIC16F1823) 両方のソースが入っています。
プロジェクトは、最適化オプションが有効に設定してあります。
試用期間が過ぎると Warning が出てうっとおしいので外して下さい。
結構小さい
最適化が効いている状態でビルドした後のディレクトリが、そっくりそのまま入っています。
当方、もうすぐ評価期間が過ぎてしまうので、最適化が効いているバイナリを公開出来るのは、多分これが最後です。
最適化が効かないと、プログラムサイズは大きくなり、速度も遅くなるハズですが、使ってみた感じ全く分からないですし、特に問題はないです。プロジェクトは、最適化オプションが有効に設定してあります。
試用期間が過ぎると Warning が出てうっとおしいので外して下さい。
結構小さい
最適化が効いている状態でビルドした後のディレクトリが、そっくりそのまま入っています。
当方、もうすぐ評価期間が過ぎてしまうので、最適化が効いているバイナリを公開出来るのは、多分これが最後です。
★開発環境
MPLAB IDE 本体(MPLAB X ではない)と、XC8コンパイラをインストールする必要があります。XC8コンパイラは、MPLAB X 専用ではなく MPLAB IDE からも使用できます。(これまでの8ビットコンパイラは廃止されたのでこちらを使うしかありません)
同様に、XC32 コンパイラも使えますが、こちらはコンパイル時間が遅すぎるので、MPLAB IDE に最初から同梱されている、C32 を使用します。
ちなみに、Microchipは MPLAB X を大々的にアピールしています。これまでの環境はレガシーシステムと称され、段階的に廃止されるようです。
しかし、MPLAB X は遅いしバグるし・・ぎりぎりまで使いたくないです。
同様に、XC32 コンパイラも使えますが、こちらはコンパイル時間が遅すぎるので、MPLAB IDE に最初から同梱されている、C32 を使用します。
但し、ソース自体はMPLAB IDE でなければコンパイル出来ないというわけではないので、MPLAB X でもそのままコンパイルできます。(プロジェクトは作り直す必要があります)
ちなみに、Microchipは MPLAB X を大々的にアピールしています。これまでの環境はレガシーシステムと称され、段階的に廃止されるようです。
しかし、MPLAB X は遅いしバグるし・・ぎりぎりまで使いたくないです。
★ライタ
PICkit 3 または 対応ライタ (PICKit 2 では PIC32MX がサポートされていません)
★ライブラリ
下記のライブラリを使用しております。上記ソースに全て同梱していますので、別途ダウンロードする必要はありません。
・Application Librarys v2013-06-15
・FatFs R0.09a
FatFs については、現時点でこれより新しいバージョンが出ていますが、残念ながら動きが少し変わっており(デグレの可能性も有り)、ファイルの列挙がうまくいかない場合があるので使用できません。幸い、R0.09a でも全く問題ありません。
FatFs については、現時点でこれより新しいバージョンが出ていますが、残念ながら動きが少し変わっており(デグレの可能性も有り)、ファイルの列挙がうまくいかない場合があるので使用できません。幸い、R0.09a でも全く問題ありません。
Application Librarys には色んな機能が含まれていますが、余計なものを入れたくないので、本当に必要な最低限のファイルのみを使用しています。
利用しているの機能は、TCPIP Stack と USB Framework で、それらの中でも必要なもののみを使っています。
尚、オリジナルに対して下記の修正/置換を行いました。
1) Tick(.c/.h)の品質が悪いので自作して置き換えました
Microchip製のTickは、効率も悪く不具合もあり、良いソースとはいえません。
特に、TickGet()は頻繁に呼び出すため、シンプルで性能の良いコードが求められます。
簡単な3つの関数とマクロを用意すれば良いだけなので自作しました。
2) FTP(.c/.h) は使えないので自作して置き換えました
オリジナルのものは、殆どのコマンドをサポートしておらず、使えません。また、MPFS2を
中途半端に使おうとするので、リンクエラーが出たりします。
FTP(.c/.h)を自作して置き換えるとともに、TCPIP.h や StackTsk.c に対して必要な
修正を、わずかですが行いました。
★設定について
設定ファイル: HoneyRecvSettings.zip
設定ファイル(SETTINGS.INI)にはサンプル値が入っているので、必要な通信設定を記述して下さい。
なお、この設定ファイルは、ネットワークに接続してからFTPクライアントを使ってターゲットに転送します。(後述)
なので、最初のネットワーク接続設定は何?という事になりますが、ソースにデフォルト値として直に書かれている設定がそれになります。(Main\Network\TCPIPConfig.h 及び WF_Config.h)
違う設定にする場合は、該当ファイルを編集してビルドし直します。
★FTPサーバーについて
本機に組み込んである FTPサーバーは、32KB EEPROM(24FC256)へのアクセス手段を提供します。
とはいうものの、容量が小さいのでファイルシステムを構築している訳ではなく、単にファイルのように見せかけてアクセス出来るようにしているだけです。なので、ディレクトリを作ったりとかは出来ません。
・SETTINGS.INI : 設定ファイル。読み書きしたり削除したり出来ます。
・SETTINGS.DAT: 内部保存データ。削除のみ可能です。(初期化したい時)
実装しているFTPサーバー機能は、FTPクライアントから使えるよう、最低限の機能を実装しています。しかし、現在メジャーとされるフリーのFTPクライアントは、どれも妙な癖をもっており、RFCで規定されている動きをしないものさえ存在します。
本作で動作確認したクライアントは、FFFTP です。
★その他
PING 及び NetBIOS に対応しています。例えば、'ping honeyrecv' に応答します。
ボリューム操作でも電源の ON/OFF が出来ます。
ボリュームを回すと電源ONします。ONの時には、ボリュームを左に連続して回すとOFFになります。この時下がったボリューム値は記録されません。
★リモコンについて
ボリューム、入力切替、FilePlay時の Prev/Next、InternetRadio 時の Prev/Next にて、長押し操作が出来ます。(Prev = W, Next = T)
後、入力切替の操作方法がちょっと変わっています。
ボリュームが表示されている間に Prev/Next を押すというものです。
というのも、選んだリモコンの、とあるボタンに入力切替を割り当てようと思っていたのですが、そのボタンが別の機能のためのもので、普通のボタンと違っていたためです。他にボタンがないので仕方なくこのようになっています。
本作で使用している以外のリモコンを使う場合は、サブ側(PIC16F1823)のソースを変更する必要がありますが、殆どのリモコンではNEC フォーマットになっているので、信号を解析する部分は変更する必要は無いです。
なので、カスタマーコードと、ボタンのコードを変更する程度で済むでしょう。より多くのボタンをサポートしたい場合は、メイン側も合わせて改良すれば色々出来ると思います。
★USBメモリ
音楽ファイル(*.MP3, *.AAC, *.WMA , *.FLAC 等)を、ルート直下にアルバム毎にディレクトリを作って、その中に置きます。ファイル名は8文字までしかサポートしていません。
★ブザー音
1) 電源ON、一般操作:「ピッ」
2) 電源OFF:「プッ」
★ラウドネス
本作では、VS1053b に備わる高音低音ブースト機能を使えるようにしてあります。
設定ファイルにて、ON/OFFや、効果の度合いを設定する事が出来ます。
ラウドネスは、ボリュームに応じて強調度合いを(簡単な比例方式ですが)変化させるようにしました。音が小さくなるほど高音と低音が強調されます。
★その他
PING 及び NetBIOS に対応しています。例えば、'ping honeyrecv' に応答します。
ボリューム操作でも電源の ON/OFF が出来ます。
ボリュームを回すと電源ONします。ONの時には、ボリュームを左に連続して回すとOFFになります。この時下がったボリューム値は記録されません。
隊長
カテゴリー
PR