コントローラソフトの続きです。Grblのコードの移植を続けます。
baum-kuchen.hatenablog.com
Grblの骨組みをPICに実装する第一ステップクリアしたので、順次、組込み範囲を拡大していく構想でした。 早速、protocol_execute_line()以下を組み込んでいきます。できたら、system.c全体を組み込んでいきたいところですが、まず、一番中心となるsystem_execute_line()から、関数単位で組み込んでいきます。組込み先は、仮にundef.cに置きました。また、未組込み関数をダミー関数として、undef.cに仕込むため、最初のビルドを実施。 ダメです。 たった一つ関数を追加しただけで、もうメモリが足りないと出ます(エラーコード1347)。普通はコンパイラが上手くやってからているわけですが、メモリ総量は足りてるが、連続したスペースが無いとのエラーです。 仕方がないので、関数内に手を入れて、ビルドが通るまで、コード量を減らして見ます。結局、ヘルプコマンドの解釈部分だけくらいまでコードを減らすと何とかビルドが通りました。 system.c ビルド結果ですが、メモリ使用量がほぼ96%行ってますので、もう無理です。 一応、動きはします。最初がヘルプコマンド($) 次が、設定表示コマンド($$)です(中身が繋いでないので全部0ですが)。 ちなみに、config.hで、 をコメントアウトすると入力をエコーバックしてくれるのでUSB経由できちんとデータが渡っているか確認できます。 ここまで、割と順調に進んで来ましたが、メモリ容量という超えられない壁にぶち当たってしまいました。予想通りと言えば、予想通りです。ただ、このまま、諦めるのも癪です。 選択肢としては、次が考えられると思います。 1は、USBエミュレータを削除しても容量が足りるか不明。USB-シリアル変換回路の追加も必要(まるで、Aruduinoハードを作っている様) 2は、PIC24FJ64GB002あたりを使うことになりますが、 作動電圧が3.3Vでレベル変換が必要というのも面倒 3は、Grblの大幅改造という手間。こうなると、Grblの流用のメリットも半減。大幅改造の1つとして、大幅機能縮小で、ひょっとしたらメモリ容量も足りるかもしれませんが、やってみないと分かりません。 4は、安直だが確実。自作CNCを一旦完成させるという目的にはかなうが。 どれも妙案がないので悩むところです。 ということで、もう少し考えたあとで決めます。案4をとるとしても、一時的なものにするつもり(多分)。 今回は短いですがこれで終わりです。御覧いただきありがとうございました。今後も、試行錯誤が続くとは思いますが、よろしかったらお付き合い願います。 つづきです。 コマンド解析部
uint8_t system_execute_line(char *line)
{
uint8_t char_counter = 1;
uint8_t helper_var = 0; // Helper variable
float parameter, value;
switch( line[char_counter] ) {
case 0 : report_grbl_help(); break;
case '$': case 'G': case 'C': case 'X':
if ( line[(char_counter+1)] != 0 ) { return(STATUS_INVALID_STATEMENT); }
switch( line[char_counter] ) {
case '$' : // Prints Grbl settings
if ( sys.state & (STATE_CYCLE | STATE_HOLD) ) { return(STATUS_IDLE_ERROR); } // Block during cycle. Takes too long to print.
else { report_grbl_settings(); }
break;
/* DELETE */
}
break;
default :
/* DELETE */
break;
}
return(STATUS_OK); // If '$' command makes it to here, then everything's ok.
}
Memory Summary:
Program space used 3D9Ch ( 15772) of 4000h bytes ( 96.3%)
Data space used 2BAh ( 698) of 300h bytes ( 90.9%)
//#define REPORT_ECHO_LINE_RECEIVED // Default disabled. Uncomment to enable.
打開策
今後について