Marlin v 1.0.0
//===========================================================================
//=============================public variables=============================
//===========================================================================
#ifdef SDSUPPORT
CardReader card;
#endif
float homing_feedrate[] = HOMING_FEEDRATE;
bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
int feedmultiply = 100; //100->1 200->2
int saved_feedmultiply;
int extrudemultiply = 100; //100->1 200->2
float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 }; // 現在の座標記憶用で、Gコード上の座標保持
float add_homeing[3] = {0,0,0};
float min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS };
float max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS };
// Extruder offset, only in XY plane
#if EXTRUDERS > 1
float extruder_offset[2][EXTRUDERS] = {
#if defined(EXTRUDER_OFFSET_X) && defined(EXTRUDER_OFFSET_Y)
EXTRUDER_OFFSET_X, EXTRUDER_OFFSET_Y
#endif
};
#endif
uint8_t active_extruder = 0;
int fanSpeed = 0;
#ifdef BARICUDA
int ValvePressure = 0;
int EtoPPressure = 0;
#endif
#ifdef FWRETRACT
bool autoretract_enabled=true;
bool retracted=false;
float retract_length = 3, retract_feedrate = 17 * 60, retract_zlift = 0.8;
float retract_recover_length = 0, retract_recover_feedrate = 8 * 60;
#endif
処理関数 概要 コメント setup_killpin() setup_powerhold() Config_RetrieveSettings() 設定値の回復処理
tp_init() Initialize temperature loop plan_init() Initialize planner; watchdog_init() ウオッチドッグの初期化処理 st_init() Initialize stepper, this enables interrupts setup_photpin() 画像用?の初期化処理 servo_init() サーボ関連の初期化処理 lcd_init() LCD関連の初期化処理
処理関数 概要 コメント get_command() 通信バッファからコマンドを取得する処理 process_commands() 取得したコマンドの解析と実行処理 Gコード、Mコード、Tコードの処理を行う。
上記の出現順位で優先処理される。
特に、G0,G1,G2,G3の移動補間処理は特別扱い。manage_heater() ヒーター管理処理 manage_inactivity() 不活性状態管理処理 checkHitEndstops() XYZのエンドストップ検出状態をチェック lcd_update() 表示の更新処理
処理区分 基本処理コード 付随コード コメント Gコード処理 G0,G1:直線補間 X,Y,Z,E,F planner.cpp参照 G2:円弧補間(時計回り) X,Y,Z,E,F,I,J I,Jは円弧の中心点位置のX,Y。
motion_control.cpp参照G3:円弧補間(反時計回り) X,Y,Z,E,F,I,J I,Jは円弧の中心点位置のX,Y。
motion_control.cpp参照G4:待ち P,S Sの指示が最後に取り込まれて待ち時間にセットされる。 G28:原点復帰 X,Y,Z 位置指定がある場合は、その位置へ移動する。 G90:絶対座標指示 通常は絶対座標で指示する。 G91:相対座標指示 相対移動を行いたい場合に指示する。 G92:位置訂正指示 X,Y,Z,E 現在の位置を指定の値に置き換える。 Mコード処理 M17:全ステッピングモータ活性化 Enable/Power all stepper motors M31 take time since the start of the SD print or an M109 command M42 P,S Change pin status via gcode M104:ホットエンド温度設定 S Set Extruder Temperature
temperature.cpp参照M140:ベッド温度設定 S set bed temp M105:ホットエンド・ベッドの温度取得要求 Get Extruder Temperature
temperature.cpp参照M109:ホットエンド温度設定待ち S,B,F Wait for extruder heater to reach target.
temperature.cpp参照M190:ベッド温度設定待ち S Wait for bed heater to reach target.
temperature.cpp参照M106:ファン動作設定 S[0-255] Fan On 速度指定が無い場合は最速(255)がセットされる。 M107:ファン停止設定 Fan Off M82:エクストルーダ絶対移動設定 Set extruder to absolute mode M83:エクストルーダ相対移動設定 Set extruder to relative mode M18,M84 X,Y,Z,E,S Stop idle hold M85 S Set inactivity shutdown timer M92:基準ステップ割合設定
Set axis_steps_per_unitX,Y,Z,E ステッパーのモータードライバでの1mm単位に動作させる基準ステップ割合を設定する。
設定後,M500でEEPROMに保存可能。
Eのみ20未満の設定を行った場合、Eに関係するレート等も変更が加わる。M115:ファームウエアのバージョンと互換表示 Get Firmware Version and Capabilities M117 display message M114:現状の位置表示要求 Get Current Position M120:エンドストップ検出有効 Enable endstop detection M121:エンドストップ検出無効 Disable endstop detection M119:エンドストップ状況表示要求 Get Endstop Status M201 X,Y,Z.E Set max printing acceleration M203 X,Y,Z,E Set maximum feedrate M204:Set default acceleration S,T S normal moves, T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
planner.cpp参照M205:advanced settings S,T,B,X,Z,E minimum travel speed S=while printing, T=travel only, B=minimum segment time, X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
planner.cpp参照M206:ホーム位置補正 X,Y,Z additional homeing offset M207:リトラクト設定 S,F,Z set retract length S[positive mm] F[feedrate mm/sec] Z[additional zlift/hop] M208:リトラクト戻し加算設定 S,F set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/sec] M209:自動リトラクト許可設定 S S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the directio M218:ホットエンドオフセット設定 X,Y set hotend offset (in mm), T<extruder_number> X<offset_on_X> Y<offset_on_Y> M220 S S<factor in percent>- set speed factor override percentage M221 S S<factor in percent>- set extrude factor override percentage M280 P,S set servo position absolute. P: servo index, S: angle or microseconds M301:エクストルーダのPID設定 P,I.D,C Set PID parameters
temperature.cpp参照M304:ベッドのPID設定 P,I,D Set PID parameters - Bed
temperature.cpp参照M240 Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/ M302:エクストルーダ低温駆動設定 allow cold extrudes
エクストルーダの低温駆動を有効にする。
使用するには、ヘッダーで許可する必要がある。
通常はヘッダーで定義された駆動開始温度になる。M303:PID自動チューニング E,S,C PID autotune
temperature.cpp参照M400 finish all moves M500:EEPROMへセッティングを保存 Store settings in EEPROM M501:EEPROMからセッティングを読み出し Read settings from EEPROM M502:デフォルト設定に戻す Revert to default settings M503:メモリー内のカレントセッティング表示 print settings currently in memory M600:フィラメントチェンジ用一時停止 X,Y,Z,E,L Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] M907 X,Y,Z,E,P,S Set digital trimpot motor current using axis codes. M908 P,S Control digital trimpot directly. M350 X,Y,Z,E,S,B Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. M351 X,Y,Z,E,S,B Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low. M999:停止フラグを無効化 Restart after being stopped Tコード処理 T0,T1,T2,T?:ツールチェンジ指示 F ツールチェンジ指示があれば、ツールのオフセット量に従ってX,Yを補正移動する。
アクティブなエクストルーダを該当ツール番号のものに変更する。
Fで指定された値のフィードレートに変更する。
X,Y,Z,E,Fを取得する。
X,Y,Z,E,,Fを取得する。
I,Jを取得する。
定義されているXYZの最小値及び最大値との比較を行い、最小値未満なら最小値に値を変更、最大値を超えるなら最大値に値を変更する。
事前にclamp_to_software_endstops()を通してクリップ処理を施し、移動先を修正。
移動先XYが現在XYの位置と同じ場合と異なる場合とを区別して直線補間での移動処理し、移動先を現在の位置として定義する。
処理関数 概要 コメント clamp_to_software_endstops() XYZターゲットの最小最大での座標クリップ処理 millis() 実行中のプログラムがスタートしてからの時間(ミリ秒)を取得 Arduino plan_buffer_line() 直線補間の座標を与えて動作要求指示する処理
直線補間での移動処理し、移動先を現在の位置として定義する。
処理関数 概要 コメント hypot() 半径取得処理 C言語算術関数 mc_arc() 円弧補間を直線補間擬似置き換え処理 millis() 実行中のプログラムがスタートしてからの時間(ミリ秒)を取得 Arduino
処理の最後が無限ループ。
処理関数 概要 コメント cli() 割り込みを禁止するアセンブラ命令を実行するマクロ Arduino disable_heater() ヒーター停止処理 disable_x() X軸停止処理 Marlin.hに定義 disable_y() Y軸停止処理 Marlin.hに定義 disable_z() Z軸停止処理 Marlin.hに定義 disable_e0() E0軸停止処理 Marlin.hに定義 disable_e1() E1軸停止処理 Marlin.hに定義 disable_e2() E2軸停止処理 Marlin.hに定義 pinMode() ピンの動作を入力か出力に設定 Arduino suicide()
処理関数 概要 コメント disable_heater() ヒーター停止処理