PIC32MZ PROJECT(5)
更新日:2022年9月1日

PIC32MZ PROJECT 効果音用PIC24F
今回はPIC32MZ PROJECTの効果音について説明いたします。今まで効果音は手持ちのPICを活用していたのでDIPタイプのものを使っていました。またプログラム容量も64KBしかありませんでした。効果音を追加していくと、この容量では入らないとなりましたので、面実装品に変えることも含めてPICを探しておりました。なんとかMouserさんでPIC24Fの面実装タイプを見つけることが出来たので今回はそれを使用します。
(PIC24FJ128GA202を入手)
プログラム容量128KBで28pinのPIC24Fです。この半導体不足にもめげず入手することに成功。
(Mouserさんより着弾)
Mouserさんは送料がちょこっと高いので、4個の注文が限界。
(PIC24FJ128GA202)
幸いにも今まで使っていたDIPタイプとピン配置は全く同じです。いろんな機能が入ったPICですが、使う機能はわずかです。プログラム容量128KBが魅力です。
(PIC32MZ PROJECTマイコンカードの最新回路図)
プログラム容量が増えたので効果音の種類も増えると予想してPIC32MZからの制御線を1本追加しています。
(PIC24Fのポート割付)
効果音の制御ポートを合計6本にしました。内1本が割り込み用で残り5本が効果音選択用です。5bitなんで最大32通りの音の制御を可能にしています。PWM出力も4本にしましたが、現段階では2本のみ使用しています。プログラム容量が大きいので最終的には効果音のPICをひとつに決めて、ゲームが変わってもこのPICのみを制御出来るようにする予定です。
(PIC32MZマイコンのポート割り付け)
効果音のポートは6本で制御しています。何故かRF3のポートの動きが悪かったので、RB4に移動しました。SOUND6のポートは今後の拡張用で、未だ使用しておりません。SOUND5はPIC24Fに対する割り込み用です。マイコンカードとしてのポートが余っているので、RC1,RC2,RC3を割り当てています。まだこのポートは使ってませんけど。
(PIC24FJ128GA202をDIP変換ボードに実装)
効果音PICの動作を確認するために接続作業を進めます。マイコンカードのDIPマイコンを撤去してピンヘッダーを立てて接続しました。
(効果音PICを接続したマイコンカード)
全てのプログラムはPIC32MZ PROJECTのシステムが完成した後に詳しく説明する予定ですが、今回新しいことを発見したので説明いたします。効果音のデータはconstで配列データとして定義しているのですが、PIC24Fではconst領域が32kB以上になるとエラーが出ます。前回までのPICではconstで溢れる部分はRAMに定義して逃げていました。これはこれでconstが32kB以上でエラーということを単純に知っていないだけで、プログラム領域がオーバーしたと(実際にオーバーしていたのだが)思っていました。今回のマイコンでプログラム領域が128kBになったらもっと沢山のconstでデータを定義しようと思っていたのですが、ありゃ?前回までと変わらないぞ。ということになって初めてWEBで調べたのです。その結果がPIC24Fではconstが32kB以上でエラー、ということでした。これではプログラム領域が大きいPICにしてもあかんじゃん、ということになってテンション下がりっぱなしでした。しかい世の中捨てたもんじゃありません。更に調べると回避する方法があったのです。次の記述を見て下さい。
(PIC24Fでconstに代わる記述の一例)
__eds__unsigned char xxx[xxx] __attribute__((space(prog)))={,,,,,,}
と定義するのです。こうするとconstの32kB以上でエラーを回避することが出来ます。これでいろんな効果音のデータを多く定義出来るようになりました。せっかく128kBのプログラム容量がありますのでいろんな音を出したいと思います。これからもPIC32MZ PROJECTは続きます。

「PIC32MZ PROJECTの表紙」へ戻る