Baumkuchen’s Workshop

バイオリンと電子工作、DIY、ジョギングなど。

作りかけの自作CNCを完成させます#7-コントロールソフト5

コントローラソフトの続きです。Grblのコードの移植で問題となったメモリ容量不足。打開策#1がだめでしたので、次の案をトライします。

baum-kuchen.hatenablog.com

打開策#2

もっとメモリ容量の大きいPICを使ってみます。手持ちにあったもので、USBインターフェースのあるメモリ32KBのPIC18F2550で、トライしてみます。

まずは、プロジェクトプロパティからDeviceを変更。

f:id:Baum_kuchen:20210918161430p:plain

これで、ビルドするとIO回りのレジスタ構成がPIC18F14K50と違うためエラーがでますが、とりあえず、cpu_map_pic18f14k50.hを修正し、適当なレジスタを定義してビルドしてみます。

この状態でビルドすると、メモリ消費は47.6%でした。

Memory Summary:
    Program space        used  3CEAh ( 15594) of  8000h bytes   ( 47.6%)
    Data space           used   193h (   403) of   800h bytes   ( 19.7%)

次に、gcode.cを組み込んでみます。

結果、なんといきなりメモリ消費量が95.2%になってしましました。確かにgcode.cは、Grblのソースファイルのなかで一番大きい59KBあり、コード行数も1000行を超えるものですが、ここまで組み込んで95%超とはびっくりです。Aruduinoに使われているAtmega328では、16KBのメモリにギリギリ収まるのに、PICでは32KBでも無理とは想像できませんでした。

Memory Summary:
    Program space        used  79DCh ( 31196) of  8000h bytes   ( 95.2%)
    Data space           used   2B9h (   697) of   800h bytes   ( 34.0%)

ちなみに、この後、plannner.cやsetting.cを1つずつ組み込んでも、例のエラーコード1347が出て、ビルドできませんでした。残る、planner.c、setting.c、stepper.cのソースコード行数合計は、約1600行ほどですので、最低でも16KB以上のメモリが必要なのかなと思います。

と言う事で、結論としては、打開策案2を採用するしてもPIC18F2550ではだめで、USBシリアルエミュレータ込みで使おうとしたら、64KB以上のメモリのあるPICで無いと難しいということです。

今後について

結局、GrblをPICで動かすというのは、かなり無理がありそうです。Atmega328の16KBのメモリでは動くのに不思議です。それも、同じXC8コンパイラでビルドしても16KBに収まるんですから。

ということで、このまま進んでも肝心のCNCが完成を見ないので、残念ですが、一旦、GrblのPIC化は保留とします。次は、一時的に(あくまで一時的と考えたいが)、AruduinoのGrblで全体コントローラを構成することにします。

今回も短いですが、また、中途半端な結果になってしましましたが、これで終わりです。最後まで、御覧いただきありがとうございました。今後も、試行錯誤が続くとは思いますが、よろしかったらお付き合い願います。