PICのConfigビットの設定や、モジュールの設定はなかなか大変です。 データシートを確認したり、クロックからタイマー周期やPWM周波数、ボーレートを計算したり…
MPLAB Xのプラグインとして最近リリースされた MPLAB Code Configurator(MC2) は、こうした設定をGUIで行えて、自動生成してくれるということで、試してみました。
すべての情報やドキュメントは以下から入手できます。
MPLAB® Code Configurator Plugin
http://www.microchip.com/pagehandler/en_us/devtools/code_configurator/home.html
・MPLABのプラグイン(IDE/Toolメニューからインストールできる)
・対応している型番は今のところ8bit拡張ミッドレンジのみ
今回は、以前PIC12F1822で作った、DSM(DataSignalModulator)を使ったブザーの応用で、PIC16F1827を使ってAFSK波形を出力してみました。
使用環境
MPLAB X v2.00
XC8 v1.30
とりあえず設定してみた画面です。 最初はProject Resources欄にオシレータとConfigビット設定のSystem欄しかないので、真ん中のDevice Resources欄から使うモジュールをどんどん追加していきます。 それぞれのモジュールを選択すると真ん中のウインドウで設定ができます。
PSoCのIDEのような感じに… |
DSMはデータ信号とキャリアー信号を外部のピン/モジュールから供給するので、色々なモジュールを同時に設定することになります。 MC2のGUIでだいぶ楽ができます。
FSK信号を作るために、2つのキャリアー信号を使って0と1を表現します。アマチュア無線の場合、AFSKは1200Hz、2200Hzが使われているので、今回はPWMで生成しました。 1827はCCPが4つあるので1822と違って問題なく設定できます。 数値を設定するとすぐに出力周波数が計算されるので、目的の周波数を生成するのは簡単です。
今回のデータ源はEUSARTを使い、1200bpsで入力することにします。
空きピンはGPIO設定で全部出力にしておきました。
[Generate Code]ボタンを押せば、すべての設定が自動生成されてプロジェクトに追加されます。
mainでは、Timerのスタート、DSMのキャリアーON/OFF、UARTの文字出力のみを記述しました。
これで書き込めば動くかな…?と思ったら、最初は動かなかったので、1822のconfigとにらめっこしながら、Configビット周りを見なおして、 オシレータのPLL設定を切り、クロックのスタートアップコードを弄ったところ動作しました。 多分どれか一つ直すだけで動く気がしますが…。
GUIがあるといっても、データシートを読んで設定するレジスタの内容を知っていないといけない点は変わりませんね。
MC2上で設定を修正した時も生成をその都度実行するようにします。 Configurator外で自動生成されたコードを修正した場合、このとき不一致だった箇所を一覧で提示してくれます。
肝心のAFSK波形は高調波がたくさんあってちょっと微妙だったので、外部にフィルタ回路をつけてみようと思います。同じFSKなら、RTTYなども作れるので、Fldigi等のデコードソフトを使ってデコードできるところまで確認してみたいです。
FSK以外では、赤外線リモコン用に31kHzのキャリアを生成することにも使えますね。