Marlin_main.cpp

Marlin v 1.0.0

Arudino


重要変数

//===========================================================================
//=============================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() 初期化処理

処理関数 概要 コメント
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関連の初期化処理

戻る


loop() 本処理としてのループ処理

処理関数 概要 コメント
get_command() 通信バッファからコマンドを取得する処理
process_commands() 取得したコマンドの解析と実行処理  Gコード、Mコード、Tコードの処理を行う。
 上記の出現順位で優先処理される。
 特に、G0,G1,G2,G3の移動補間処理は特別扱い。
manage_heater() ヒーター管理処理
manage_inactivity() 不活性状態管理処理
checkHitEndstops() XYZのエンドストップ検出状態をチェック
lcd_update() 表示の更新処理

戻る


serial_echopair_P()


enquecommand()


enquecommand_P()


setup_killpin()


setup_photpin()


setup_powerhold()


suicide()


servo_init()


get_command()


code_value()


code_value_long()


code_seen()


array()


axis_is_at_home()


homeaxis()


process_commands() コマンド処理で、優先的にG,M,T(G-code日本語

処理区分 基本処理コード 付随コード コメント
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_unit
X,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で指定された値のフィードレートに変更する。

FlushSerialRequestResend()


ClearToSend()


get_coordinates() 直線補間の移動先取得処理

 X,Y,Z,E,Fを取得する。


get_arc_coordinates() 円弧補間定義取得処理

 X,Y,Z,E,,Fを取得する。
 I,Jを取得する。


clamp_to_software_endstops() XYZターゲットの最小最大での座標クリップ処理

 定義されているXYZの最小値及び最大値との比較を行い、最小値未満なら最小値に値を変更、最大値を超えるなら最大値に値を変更する。


prepare_move() 直線補間移動処理

 事前にclamp_to_software_endstops()を通してクリップ処理を施し、移動先を修正。
 移動先XYが現在XYの位置と同じ場合と異なる場合とを区別して直線補間での移動処理し、移動先を現在の位置として定義する。

処理関数 概要 コメント
clamp_to_software_endstops() XYZターゲットの最小最大での座標クリップ処理
millis() 実行中のプログラムがスタートしてからの時間(ミリ秒)を取得 Arduino
plan_buffer_line() 直線補間の座標を与えて動作要求指示する処理

prepare_arc_move() 円弧補間移動処理

 直線補間での移動処理し、移動先を現在の位置として定義する。

処理関数 概要 コメント
hypot() 半径取得処理 C言語算術関数
mc_arc() 円弧補間を直線補間擬似置き換え処理
millis() 実行中のプログラムがスタートしてからの時間(ミリ秒)を取得 Arduino

controllerFan()


manage_inactivity() 不活性状態管理処理


kill() 装置の動作停止処理

 処理の最後が無限ループ。

処理関数 概要 コメント
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()

Stop() ストップ処理

処理関数 概要 コメント
disable_heater() ヒーター停止処理

IsStopped() ストップ状態を返す処理


setPwmFrequency()


setTargetedHotend()


戻る