diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 1e12d4e..9bcddc8 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -11,7 +11,7 @@ // Frequency limit // See nophead's blog for more info -// Not working OK +// Not working O //#define XY_FREQUENCY_LIMIT 15 // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end @@ -45,9 +45,9 @@ // 5 is ParCan supplied 104GT-2 100K // 6 is EPCOS 100k // 7 is 100k Honeywell thermistor 135-104LAG-J01 -#define THERMISTORHEATER_0 3 -#define THERMISTORHEATER_1 3 -#define THERMISTORBED 3 +//#define THERMISTORHEATER_0 3 +//#define THERMISTORHEATER_1 3 +//#define THERMISTORBED 3 //#define HEATER_0_USES_THERMISTOR //#define HEATER_1_USES_THERMISTOR @@ -119,9 +119,15 @@ // #define DEFAULT_Ki (2*Kp/PID_SWING_AT_CRITIAL*PID_dT) // #define DEFAULT_Kd (PID_SWING_AT_CRITIAL/8./PID_dT) +// Ultitmaker #define DEFAULT_Kp 22.2 #define DEFAULT_Ki (1.25*PID_dT) #define DEFAULT_Kd (99/PID_dT) + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki (2.25*PID_dT) +// #define DEFAULT_Kd (440/PID_dT) #endif #ifdef PID_PI @@ -140,13 +146,6 @@ #endif // PIDTEMP - - - - - - - //=========================================================================== //=============================Mechanical Settings=========================== //=========================================================================== @@ -177,10 +176,10 @@ const bool ENDSTOPS_INVERTING = true; // set to true to invert the logic of the //#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true //#define INVERT_E_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false -#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true -#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false -#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true -#define INVERT_E_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_E_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false //// ENDSTOP SETTINGS: // Sets direction of endstops when homing; 1=MAX, -1=MIN @@ -243,13 +242,11 @@ const bool ENDSTOPS_INVERTING = true; // set to true to invert the logic of the // The watchdog waits for the watchperiod in milliseconds whenever an M104 or M109 increases the target temperature // this enables the watchdog interrupt. //#define USE_WATCHDOG -#ifdef USE_WATCHDOG +//#ifdef USE_WATCHDOG // you cannot reboot on a mega2560 due to a bug in he bootloader. Hence, you have to reset manually, and this is done hereby: - #define RESET_MANUAL - #define WATCHDOG_TIMEOUT 4 //seconds -#endif - - +//#define RESET_MANUAL +//#define WATCHDOG_TIMEOUT 4 //seconds +//#endif // extruder advance constant (s2/mm3) // @@ -307,8 +304,7 @@ const bool ENDSTOPS_INVERTING = true; // set to true to invert the logic of the #define AUTOTEMP_FACTOR 1000. //current target temperature= min+largest buffered espeeds)*FACTOR - -const int dropsegments=0; //everything with less than this number of steps will be ignored as move and joined with the next movement +const int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement //=========================================================================== //=============================Buffers ============================ diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index 18f382c..8dc8d08 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -240,10 +240,9 @@ void setup() axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i]; } - + tp_init(); // Initialize temperature loop plan_init(); // Initialize planner; st_init(); // Initialize stepper; - tp_init(); // Initialize temperature loop wd_init(); } diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 2e23220..b08e61a 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -56,8 +56,8 @@ static unsigned long step_events_completed; // The number of step events execute #ifdef ADVANCE static long advance_rate, advance, final_advance = 0; static short old_advance = 0; - static short e_steps; #endif +static short e_steps; static unsigned char busy = false; // TRUE when SIG_OUTPUT_COMPARE1A is being serviced. Used to avoid retriggering that handler. static long acceleration_time, deceleration_time; //static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate; @@ -156,7 +156,7 @@ asm volatile ( \ #define DISABLE_STEPPER_DRIVER_INTERRUPT() TIMSK1 &= ~(1< interrupt out_bits = current_block->direction_bits; - #ifdef ADVANCE - // Calculate E early. - counter_e += current_block->steps_e; - if (counter_e > 0) { - counter_e -= current_block->step_event_count; - if ((out_bits & (1<> 16) - old_advance); - CRITICAL_SECTION_END; - old_advance = advance >> 16; - #endif //ADVANCE - // Set direction en check limit switches if ((out_bits & (1< -1 - if(READ(X_MIN_PIN) != ENDSTOPS_INVERTING) { - // endstops_triggered(step_events_completed); - step_events_completed = current_block->step_event_count; - } + if(READ(X_MIN_PIN) != ENDSTOPS_INVERTING) { + // endstops_triggered(step_events_completed); + step_events_completed = current_block->step_event_count; + } #endif } else { // +direction @@ -355,7 +332,7 @@ ISR(TIMER1_COMPA_vect) // endstops_triggered(step_events_completed); step_events_completed = current_block->step_event_count; } - #endif + #endif } if ((out_bits & (1< -1 if(READ(Y_MIN_PIN) != ENDSTOPS_INVERTING) { - // endstops_triggered(step_events_completed); +// endstops_triggered(step_events_completed); step_events_completed = current_block->step_event_count; } #endif @@ -390,7 +367,7 @@ ISR(TIMER1_COMPA_vect) #endif #if Z_MIN_PIN > -1 if(READ(Z_MIN_PIN) != ENDSTOPS_INVERTING) { - endstops_triggered(step_events_completed); + // endstops_triggered(step_events_completed); step_events_completed = current_block->step_event_count; } #endif @@ -416,6 +393,30 @@ ISR(TIMER1_COMPA_vect) #endif //!ADVANCE for(int8_t i=0; i < step_loops; i++) { // Take multiple steps per interrupt (For high speed moves) + /* + counter_e += current_block->steps_e; + if (counter_e > 0) { + counter_e -= current_block->step_event_count; + if ((out_bits & (1<> 16) - old_advance); + CRITICAL_SECTION_END; + old_advance = advance >> 16; + */ + counter_x += current_block->steps_x; if (counter_x > 0) { WRITE(X_STEP_PIN, HIGH); @@ -649,7 +650,8 @@ void st_init() TCCR1B = (TCCR1B & ~(0x07<