diff options
Diffstat (limited to 'Tonokip_Firmware/Tonokip_Firmware.pde')
-rw-r--r-- | Tonokip_Firmware/Tonokip_Firmware.pde | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/Tonokip_Firmware/Tonokip_Firmware.pde b/Tonokip_Firmware/Tonokip_Firmware.pde index 587d648..8765267 100644 --- a/Tonokip_Firmware/Tonokip_Firmware.pde +++ b/Tonokip_Firmware/Tonokip_Firmware.pde @@ -48,7 +48,6 @@ // M84 - Disable steppers until next move, // or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. // M85 - Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default) -// M86 - If Endstop is Not Activated then Abort Print. Specify X and/or Y // M92 - Set axis_steps_per_unit - same syntax as G92 // M115 - Capabilities string // M140 - Set bed target temp @@ -297,11 +296,14 @@ void loop() buflen = (buflen-1); bufindr = (bufindr + 1)%BUFSIZE; } - - manage_heater(); - - manage_inactivity(1); //shutdown if not receiving any new commands -} + //check heater every n milliseconds + if((millis() - previous_millis_heater) >= HEATER_CHECK_INTERVAL ) { + manage_heater(); + previous_millis_heater = millis(); + + manage_inactivity(1); + } + } inline void get_command() @@ -463,8 +465,13 @@ inline void process_commands() codenum = 0; if(code_seen('P')) codenum = code_value(); // milliseconds to wait if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait - previous_millis_heater = millis(); // keep track of when we started waiting - while((millis() - previous_millis_heater) < codenum ) manage_heater(); //manage heater until time is up + codenum += millis(); // keep track of when we started waiting + while(millis() < codenum ){ + if((millis() - previous_millis_heater) >= HEATER_CHECK_INTERVAL ) { + manage_heater(); + previous_millis_heater = millis(); + } + } break; case 28: //G28 Home all Axis one at a time saved_feedrate = feedrate; @@ -692,23 +699,26 @@ inline void process_commands() watchmillis = 0; } #endif - previous_millis_heater = millis(); + codenum = millis(); while(current_raw < target_raw) { - if( (millis() - previous_millis_heater) > 1000 ) //Print Temp Reading every 1 second while heating up. + if( (millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up. { Serial.print("T:"); Serial.println( analog2temp(current_raw) ); - previous_millis_heater = millis(); + codenum = millis(); + } + if((millis() - previous_millis_heater) >= HEATER_CHECK_INTERVAL ) { + manage_heater(); + previous_millis_heater = millis(); } - manage_heater(); } break; case 190: // M190 - Wait bed for heater to reach target. #if TEMP_1_PIN > -1 if (code_seen('S')) target_bed_raw = temp2analog(code_value()); - previous_millis_heater = millis(); + codenum = millis(); while(current_bed_raw < target_bed_raw) { - if( (millis()-previous_millis_heater) > 1000 ) //Print Temp Reading every 1 second while heating up. + if( (millis()-codenum) > 1000 ) //Print Temp Reading every 1 second while heating up. { tt=analog2temp(current_raw); Serial.print("T:"); @@ -717,9 +727,12 @@ inline void process_commands() Serial.print( tt ); Serial.print(" B:"); Serial.println( analog2temp(current_bed_raw) ); - previous_millis_heater = millis(); + codenum = millis(); + } + if((millis() - previous_millis_heater) >= HEATER_CHECK_INTERVAL ) { + manage_heater(); + previous_millis_heater = millis(); } - manage_heater(); } #endif break; @@ -756,10 +769,6 @@ inline void process_commands() code_seen('S'); max_inactive_time = code_value() * 1000; break; - case 86: // M86 If Endstop is Not Activated then Abort Print - if(code_seen('X')) if( digitalRead(X_MIN_PIN) == ENDSTOPS_INVERTING ) kill(3); - if(code_seen('Y')) if( digitalRead(Y_MIN_PIN) == ENDSTOPS_INVERTING ) kill(4); - break; case 92: // M92 if(code_seen('X')) x_steps_per_unit = code_value(); if(code_seen('Y')) y_steps_per_unit = code_value(); @@ -1069,8 +1078,8 @@ void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remainin //move until no more steps remain while(x_steps_remaining + y_steps_remaining + z_steps_remaining + e_steps_remaining > 0) { - //If more that 50ms have passed since previous heating check, adjust temp - if((millis() - previous_millis_heater) >= 50 ) { + //If more that HEATER_CHECK_INTERVAL ms have passed since previous heating check, adjust temp + if((millis() - previous_millis_heater) >= HEATER_CHECK_INTERVAL ) { manage_heater(); previous_millis_heater = millis(); @@ -1380,9 +1389,8 @@ inline void manage_heater() target_raw = 0; #endif #ifdef MAXTEMP - if(current_raw > maxttemp) { - // We are too hot. Emergency brake to protect hotend - kill(5); + if(current_raw >= maxttemp) { + target_raw = 0; } #endif #if (TEMP_0_PIN > -1) || defined (HEATER_USES_MAX66675) @@ -1568,11 +1576,16 @@ float analog2tempBed(int raw) { #endif } -inline void kill(byte debug) +inline void kill() { - if(HEATER_0_PIN > -1) digitalWrite(HEATER_0_PIN,LOW); + #if TEMP_0_PIN > -1 + target_raw=0; + digitalWrite(HEATER_0_PIN,LOW); + #endif + #if TEMP_1_PIN > -1 + target_bed_raw=0; if(HEATER_1_PIN > -1) digitalWrite(HEATER_1_PIN,LOW); - + #endif disable_x(); disable_y(); disable_z(); @@ -1580,22 +1593,9 @@ inline void kill(byte debug) if(PS_ON_PIN > -1) pinMode(PS_ON_PIN,INPUT); - while(1) - { - switch(debug) - { - case 1: Serial.print("Inactivity Shutdown, Last Line: "); break; - case 2: Serial.print("Linear Move Abort, Last Line: "); break; - case 3: Serial.print("Homing X Min Stop Fail, Last Line: "); break; - case 4: Serial.print("Homing Y Min Stop Fail, Last Line: "); break; - case 5: Serial.print("Hot-end overheat protection, Last Line: "); break; - } - Serial.println(gcode_LastN); - delay(5000); // 5 Second delay - } } inline void manage_inactivity(byte debug) { -if( (millis()-previous_millis_cmd) > max_inactive_time ) if(max_inactive_time) kill(debug); +if( (millis()-previous_millis_cmd) > max_inactive_time ) if(max_inactive_time) kill(); if( (millis()-previous_millis_cmd) > stepper_inactive_time ) if(stepper_inactive_time) { disable_x(); disable_y(); disable_z(); disable_e(); } } |