遠い昔、ちょこっとだけ8ビットのPICマイコンを触ったことがありました。「PIC以前の」古いマイコンに比べたら「近代的」なマイコンであったのですが、データシートを読み込んでいないと戸惑う部分も多かった記憶。しかし「今どきの」PICマイコンは自動生成ツールなど充実して「楽ちん」だそうです。使ってみたいと思います。
※「鳥なき里のマイコン屋」投稿順Indexはこちら
PIC16F1xxxxマイコン
PICマイコンのマイクロチップ社は「新興」のマイコンメーカでした(今じゃ老舗?)何に比べてかと言えば、1970年付近にマイコンのルーツを持つ老舗のマイコンメーカ、インテル、モトローラ、テキサス・インスツルメンツ、東芝、NEC(以下略)といったメーカ群に対してです。老舗のマイコンメーカが32ビットマイコンを主軸に再編しつつある時期(1990年代)にマイクロチップ社は「あえて」8ビットマイコンで勝負をかけ、見事に業界を席捲したのでした。
それだけに当時としては開発環境も斬新で「お手軽」であったのです。しかし最新の32ビット・マイコンの開発環境の「お手軽」さに比べると今となっては若干重い感じがしてました(個人の感想っす。)
しかし、そんなことはない、PICマイコンの開発環境も進歩しておるのだ、という小冊子を拝見。以下であります。
トランジスタ技術2023年4月号の別冊付録 新定番PICマイコンPIC16F18857入門
これ読んで、ピピンと響くものがありました。しばらく前に購入したまま「PICはメンドイからまた後で」などと呟いてホコリを被っていた以下のパッケージであります。
先ほどのトラ技の小冊子の「推し」は、PIC16F18857という機種ですが、上記パッケージ内の開発ボードはPIC16F18855という同じファミリの下位機種?マイコンを搭載しております。じゃあやってみるってもんだろ~と。ラクチンらしいし。
MPLAB Xpress Evaluation Board
上記の箱に入っているのは以下の開発ボードです。
MPLAB® Xpress Evaluation Board
この”Xpress”という名のパッケージが「売り」にしているのが、MPLAB Xpress IDEという名のWebベースの開発環境を使えるよ、という点であります。最近はWebベースの開発環境も各社いろいろあります。マイクロチップ社もその流れにのって開発環境をリリースしたときにそのお試し用のボードとしてリリースしたボードじゃないかしら。
実をいえば上記のパッケージを購入したときに一度このWebベースの開発環境を使おうとしたのです。しかし、たまたまネットワークのご機嫌が悪かったのか反応が鈍く、あろうことが途中でハングしてしまったので、そこで中断。ホコリを被っていた、という次第。
今回はマイクロチップ社の開発ツールをローカルなストレージ上にインストールしてこのボードを使ってみたいと思います。
なお、このボードの特徴としては、パソコンのUSBポートに接続するとストレージデバイスとして認識されることがあげられます。マイコンのFlashにプログラムを書き込むのはそのストレージでオブジェクトファイル(HEXフォーマット)を書き込むことで行えます。他の廉価なマイコンボードとよく似ていますが、書き込み/デバッグ用のツールを用いる一般的なPIC用開発ボードとは異なっています。
MPLABとコード自動生成ツールMCC
今回は、マイクロチップ社の以下の開発用IDEをPC(Windows 11)にインストールさせていただきました。
IDEのバージョンは、v6.10です。なお、Windows11サポートは v6.05以降だそうな。
このIDEは8ビットPICだけでなく、マイクロチップ社の数多くのマイコンシリーズ全般に対応していますが、インストール時に何と何をターゲットにインストールするかは選択可能です。今回は8ビットPICのみをターゲットにしてインストールしてみました。
また上記のIDEの「売り」の一つがMCCというコード自動生成ツールが同梱されていることです。私が大昔の経験でメンドイと感じていた各種の設定などをGUIつかってやっつけてくれるツールみたいです。なお、古いバージョンのMPLABではMPLABインストール後、別途MCCの追加インストールが必要だったみたいですが、v6.10では最初から含まれていました。
一方別インストール必要であったのがCコンパイラ、XC8です。XCコンパイラについてはMPLAB X IDEノインストールの末尾に以下のような画面がでるので、一番下のXC compilers …というところにチェックを入れておくとXCコンパイラのWebサイトが開きます。
XCコンパイラには、Free版と、有料版があり、インストールの途中で以下のようにライセンスを選択可能です。
有料版にすると性能が何割もアップするらしいです。この手の小規模のマイコンでは、有料版と無料版で性能が段違いというのは「あるある」じゃないかと思います。業務でガチなコードを書くのであれば有料版か。いやしかし、8ビットPICで性能気にするのであれば、アセンブラで書けばいいじゃん、という気がしないでもないです。
MPLAB X IDEでLチカしてみる
以下のような手順で、MPLAB X IDEでPIC16F18855用の吉例「Lチカ」オブジェクトコードを作成し、動作させることができました。
-
- New projectを作る
とりあえず Standalone Projectということで、新規プロジェクトを作成します。
-
- デバイスの選択
ターゲットとなる PIC16F18855のFamilyは”Midrange 8bit”です。”Basic”じゃありません。Midrangeには大量なデバイスがありますがそこから探してセットします。Tool欄はアップロード/デバッグツールに何使うかの指定です。Expressボードは他とちがい、HEXファイルをストレージにドラッグ&ドロップで書き込めるのでTool欄はNo Toolとしてます。
-
- MCCでコンフィグ
空の新規プロジェクトが出来たところで、上のツールバーをみると赤で囲んだところにMCCというボタンが現れてます(以下ではボタンを押した後なので灰色になってますが、押す前は青色です。)
3種類のMCCがあるようなのですが、今回ターゲットのPIC16F18855では左の2つが使えるようです。Melody と Classic です。以前からこのツールを使われていた方であれば慣れ親しんだClassicですが、当方、MCCは初めてなので、マイクロチップ社の最近の「推し」らしいMelodyの方を選択してみました。
最初に、必要とする「コンテント」(オプショナルなライブラリなどのことみたい)を選択する画面が出ますが、最低限必要なものは皆含まれているようなので、今回は何も選択せずに Finish します。
Finish後、何か動いているメッセージなどが表示され以下のような設定画面が現れます。この画面から各種の設定などをグラフィカルに行えるのですが、今回は吉例Lチカなので以下3操作のみです。
-
- パッケージをUQFN28に変更
- PORTAのビット0(ピンナンバ27)をGPIO出力に設定(エバボードのRA0端子にはD2というLEDが接続されております。エバボード回路図参照。)
- 以上設定後、左上の方にある「Generate」ボタンを押す
-
- Lチカコード書き込み後ビルド
Generate後のエディタ画面のmain関数内に、以下のLチカコードを書き込みますです。
while (1) { RA0 = 1; __delay_ms(500); RA0 = 0; __delay_ms(500); }
上記の吉例「Lチカ」コードを書き込みビルドした後の画面が以下に。
SUCCESSFULと。そこに書いてあるパスを見に行くと確かにオブジェクトのHEXファイルが生成されております。
-
- 開発ボードにオブジェクト書き込み、動作観察
HEXファイルをストレージ・デバイスにドラッグ&ドロップしたところが以下に。D2 LEDがゆっくりと点滅してます。
工場出荷時には、4個あるLEDが忙し気に点滅しているオブジェクトが書き込まれていたので、なんかしんみりした感じになってしまいました。けどちゃんと書き込めてますわいなあ。吉例Lチカ成功。お次は?