まず、制御基板&コントローラソフトから着手します。
baum-kuchen.hatenablog.com
方針を受けて、もう少し具体化します。全体のシステムブロックを書くとこんな感じです。Aruduinoの代わりにPICを使っただけだろうって言えばそれまですが。 作りかけのドライバボードは、機能をシンプルに、 とし、一部回路、ソフトを改修しました。(細部割愛) Controller用として、USBの使えるPICは幾つかありますが、最も基本的な(というか使ったことのある)PIC18F14K50を使うことにします。IOピンが足りるか、ピン割り付けを最初に考えましたが、なんとかギリギリで行けそうです。ちなみに、DIP28のPIC18F2455の方がIO数多いはずですが、ピン数増加に対し使えるIO数があまり増えないのと、余分なIOがあってもあまり用途が思いつかないので、最小構成で行くことにしました。 例によって、小型のユニバーサル基板上に回路をレイアウトしました。 実際に製作した基板です。 以前、データロガーを作ったときと同じく、MLA(Michrochip Libraries for Aapplication)の中から、CDC(Communication Device Class)のSerial Emulatorのサンプルコードを使って、USB→シリアルの部分を実装します。実際には、シリアル出力する代わりに、そこにGrblをベースとしたコントローラソフトに出力するつもり。 MLAの最新バージョンは、v2018-11-26ですが、 今回使うのは、v2017_03_06版です。フレームワークとして、framework/usbフォルダ以下の次のファイルを、プロジェクトに登録(コピーは不要)。 また、apps/usb/device/cdc_serial_emulator/framework/demo_src/フォルダのサンプルプログラムから、下記をコピーしてプロジェクトに登録。これで、一旦は、Buildが通るはず。 でしたが、今回、はまったのはxc8コンパイラーをv2.10にバージョンアップしていたことによるものです*1。 以前通っていたプロジェクトのビルドも、Framework部分で次のようなエラーが出てコンパイルが通りません。 結局、コンパイルオプション(C standard)をC90としないといけませんでした。xc8のデフォルトはC99になっていました*2。MLAは、C90対応だったみたいです。 原因が分かって、ビルドは通りましたが、Program spaceの使用率が54.8%とUSB部だけでかなり行ってます。Grblは、Aruduinoに使われているATmega328Pのメモリ(16Kbyte)の大半を占めるようですので、かなり無理筋のように思えてきました。 Grblの実装の課題はありますが、まずはテスト。ビルドが通ったら、あとは簡単。USBをつなぐと、PCから無事COMポートとして認識されました。 まずは、GrblのPICへのポーティング*3を進めます。懸念としては、PICのメモリ容量をオーバするかもしれませんが、どこまでコードを削減できるか分かりませんが、試行を続けます。 つづきです。 システム構成
ドライバボードの整理
コントロールボード製作
USB PICの選定
回路図
基板設計&製作
コントロールソフト製作
USB CDCデバイス構築
今後について