Merge pull request #4779 from thinkyhead/rc_cleanups_1
Minor code cleanup, tweak M109/M190
This commit is contained in:
		
						commit
						2e8fd70fb1
					
				| @ -342,12 +342,12 @@ float code_value_temp_diff(); | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if ENABLED(FILAMENT_WIDTH_SENSOR) | #if ENABLED(FILAMENT_WIDTH_SENSOR) | ||||||
|   extern float filament_width_nominal;  //holds the theoretical filament diameter i.e., 3.00 or 1.75
 |   extern bool filament_sensor;         // Flag that filament sensor readings should control extrusion
 | ||||||
|   extern bool filament_sensor;  //indicates that filament sensor readings should control extrusion
 |   extern float filament_width_nominal, // Theoretical filament diameter i.e., 3.00 or 1.75
 | ||||||
|   extern float filament_width_meas; //holds the filament diameter as accurately measured
 |                filament_width_meas;    // Measured filament diameter
 | ||||||
|   extern int8_t measurement_delay[];  //ring buffer to delay measurement
 |   extern int8_t measurement_delay[];   // Ring buffer to delay measurement
 | ||||||
|   extern int filwidth_delay_index1, filwidth_delay_index2;  //ring buffer index. used by planner, temperature, and main code
 |   extern int filwidth_delay_index[2];  // Ring buffer indexes. Used by planner, temperature, and main code
 | ||||||
|   extern int meas_delay_cm; //delay distance
 |   extern int meas_delay_cm;            // Delay distance
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if ENABLED(FILAMENT_CHANGE_FEATURE) | #if ENABLED(FILAMENT_CHANGE_FEATURE) | ||||||
|  | |||||||
| @ -500,13 +500,11 @@ static uint8_t target_extruder; | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if ENABLED(FILAMENT_WIDTH_SENSOR) | #if ENABLED(FILAMENT_WIDTH_SENSOR) | ||||||
|   //Variables for Filament Sensor input
 |  | ||||||
|   float filament_width_nominal = DEFAULT_NOMINAL_FILAMENT_DIA;  //Set nominal filament width, can be changed with M404
 |  | ||||||
|   bool filament_sensor = false;  //M405 turns on filament_sensor control, M406 turns it off
 |   bool filament_sensor = false;  //M405 turns on filament_sensor control, M406 turns it off
 | ||||||
|   float filament_width_meas = DEFAULT_MEASURED_FILAMENT_DIA; //Stores the measured filament diameter
 |   float filament_width_nominal = DEFAULT_NOMINAL_FILAMENT_DIA,  // Nominal filament width. Change with M404
 | ||||||
|   int8_t measurement_delay[MAX_MEASUREMENT_DELAY + 1]; //ring buffer to delay measurement  store extruder factor after subtracting 100
 |         filament_width_meas = DEFAULT_MEASURED_FILAMENT_DIA;    // Measured filament diameter
 | ||||||
|   int filwidth_delay_index1 = 0;  //index into ring buffer
 |   int8_t measurement_delay[MAX_MEASUREMENT_DELAY + 1]; // Ring buffer to delayed measurement. Store extruder factor after subtracting 100
 | ||||||
|   int filwidth_delay_index2 = -1;  //index into ring buffer - set to -1 on startup to indicate ring buffer needs to be initialized
 |   int filwidth_delay_index[2] = { 0, -1 };  // Indexes into ring buffer
 | ||||||
|   int meas_delay_cm = MEASUREMENT_DELAY_CM;  //distance delay setting
 |   int meas_delay_cm = MEASUREMENT_DELAY_CM;  //distance delay setting
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| @ -555,6 +553,26 @@ static bool send_ok[BUFSIZE]; | |||||||
|   #define KEEPALIVE_STATE(n) ; |   #define KEEPALIVE_STATE(n) ; | ||||||
| #endif // HOST_KEEPALIVE_FEATURE
 | #endif // HOST_KEEPALIVE_FEATURE
 | ||||||
| 
 | 
 | ||||||
|  | #define DEFINE_PGM_READ_ANY(type, reader)       \ | ||||||
|  |   static inline type pgm_read_any(const type *p)  \ | ||||||
|  |   { return pgm_read_##reader##_near(p); } | ||||||
|  | 
 | ||||||
|  | DEFINE_PGM_READ_ANY(float,       float); | ||||||
|  | DEFINE_PGM_READ_ANY(signed char, byte); | ||||||
|  | 
 | ||||||
|  | #define XYZ_CONSTS_FROM_CONFIG(type, array, CONFIG) \ | ||||||
|  |   static const PROGMEM type array##_P[XYZ] =        \ | ||||||
|  |       { X_##CONFIG, Y_##CONFIG, Z_##CONFIG };     \ | ||||||
|  |   static inline type array(int axis)          \ | ||||||
|  |   { return pgm_read_any(&array##_P[axis]); } | ||||||
|  | 
 | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(float, base_min_pos,   MIN_POS); | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(float, base_max_pos,   MAX_POS); | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(float, base_home_pos,  HOME_POS); | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(float, max_length,     MAX_LENGTH); | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(float, home_bump_mm,   HOME_BUMP_MM); | ||||||
|  | XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * *************************************************************************** |  * *************************************************************************** | ||||||
|  * ******************************** FUNCTIONS ******************************** |  * ******************************** FUNCTIONS ******************************** | ||||||
| @ -1406,26 +1424,6 @@ bool get_target_extruder_from_command(int code) { | |||||||
|   return false; |   return false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define DEFINE_PGM_READ_ANY(type, reader)       \ |  | ||||||
|   static inline type pgm_read_any(const type *p)  \ |  | ||||||
|   { return pgm_read_##reader##_near(p); } |  | ||||||
| 
 |  | ||||||
| DEFINE_PGM_READ_ANY(float,       float); |  | ||||||
| DEFINE_PGM_READ_ANY(signed char, byte); |  | ||||||
| 
 |  | ||||||
| #define XYZ_CONSTS_FROM_CONFIG(type, array, CONFIG) \ |  | ||||||
|   static const PROGMEM type array##_P[XYZ] =        \ |  | ||||||
|       { X_##CONFIG, Y_##CONFIG, Z_##CONFIG };     \ |  | ||||||
|   static inline type array(int axis)          \ |  | ||||||
|   { return pgm_read_any(&array##_P[axis]); } |  | ||||||
| 
 |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(float, base_min_pos,   MIN_POS); |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(float, base_max_pos,   MAX_POS); |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(float, base_home_pos,  HOME_POS); |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(float, max_length,     MAX_LENGTH); |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(float, home_bump_mm,   HOME_BUMP_MM); |  | ||||||
| XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); |  | ||||||
| 
 |  | ||||||
| #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE) | ||||||
|   bool extruder_duplication_enabled = false; // Used in Dual X mode 2
 |   bool extruder_duplication_enabled = false; // Used in Dual X mode 2
 | ||||||
| #endif | #endif | ||||||
| @ -4816,7 +4814,8 @@ inline void gcode_M109() { | |||||||
| 
 | 
 | ||||||
|   } while (wait_for_heatup && TEMP_CONDITIONS); |   } while (wait_for_heatup && TEMP_CONDITIONS); | ||||||
| 
 | 
 | ||||||
|   LCD_MESSAGEPGM(MSG_HEATING_COMPLETE); |   if (wait_for_heatup) LCD_MESSAGEPGM(MSG_HEATING_COMPLETE); | ||||||
|  | 
 | ||||||
|   KEEPALIVE_STATE(IN_HANDLER); |   KEEPALIVE_STATE(IN_HANDLER); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -4934,7 +4933,7 @@ inline void gcode_M109() { | |||||||
| 
 | 
 | ||||||
|     } while (wait_for_heatup && TEMP_BED_CONDITIONS); |     } while (wait_for_heatup && TEMP_BED_CONDITIONS); | ||||||
| 
 | 
 | ||||||
|     LCD_MESSAGEPGM(MSG_BED_DONE); |     if (wait_for_heatup) LCD_MESSAGEPGM(MSG_BED_DONE); | ||||||
|     KEEPALIVE_STATE(IN_HANDLER); |     KEEPALIVE_STATE(IN_HANDLER); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -6136,13 +6135,13 @@ inline void gcode_M400() { stepper.synchronize(); } | |||||||
|     if (code_seen('D')) meas_delay_cm = code_value_int(); |     if (code_seen('D')) meas_delay_cm = code_value_int(); | ||||||
|     NOMORE(meas_delay_cm, MAX_MEASUREMENT_DELAY); |     NOMORE(meas_delay_cm, MAX_MEASUREMENT_DELAY); | ||||||
| 
 | 
 | ||||||
|     if (filwidth_delay_index2 == -1) { // Initialize the ring buffer if not done since startup
 |     if (filwidth_delay_index[1] == -1) { // Initialize the ring buffer if not done since startup
 | ||||||
|       int temp_ratio = thermalManager.widthFil_to_size_ratio(); |       int temp_ratio = thermalManager.widthFil_to_size_ratio(); | ||||||
| 
 | 
 | ||||||
|       for (uint8_t i = 0; i < COUNT(measurement_delay); ++i) |       for (uint8_t i = 0; i < COUNT(measurement_delay); ++i) | ||||||
|         measurement_delay[i] = temp_ratio - 100;  // Subtract 100 to scale within a signed byte
 |         measurement_delay[i] = temp_ratio - 100;  // Subtract 100 to scale within a signed byte
 | ||||||
| 
 | 
 | ||||||
|       filwidth_delay_index1 = filwidth_delay_index2 = 0; |       filwidth_delay_index[0] = filwidth_delay_index[1] = 0; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     filament_sensor = true; |     filament_sensor = true; | ||||||
|  | |||||||
| @ -868,7 +868,7 @@ void Planner::check_axes_activity() { | |||||||
|     static float filwidth_e_count = 0, filwidth_delay_dist = 0; |     static float filwidth_e_count = 0, filwidth_delay_dist = 0; | ||||||
| 
 | 
 | ||||||
|     //FMM update ring buffer used for delay with filament measurements
 |     //FMM update ring buffer used for delay with filament measurements
 | ||||||
|     if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM && filwidth_delay_index2 >= 0) {  //only for extruder with filament sensor and if ring buffer is initialized
 |     if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM && filwidth_delay_index[1] >= 0) {  //only for extruder with filament sensor and if ring buffer is initialized
 | ||||||
| 
 | 
 | ||||||
|       const int MMD_CM = MAX_MEASUREMENT_DELAY + 1, MMD_MM = MMD_CM * 10; |       const int MMD_CM = MAX_MEASUREMENT_DELAY + 1, MMD_MM = MMD_CM * 10; | ||||||
| 
 | 
 | ||||||
| @ -883,16 +883,16 @@ void Planner::check_axes_activity() { | |||||||
|         while (filwidth_delay_dist >= MMD_MM) filwidth_delay_dist -= MMD_MM; |         while (filwidth_delay_dist >= MMD_MM) filwidth_delay_dist -= MMD_MM; | ||||||
| 
 | 
 | ||||||
|         // Convert into an index into the measurement array
 |         // Convert into an index into the measurement array
 | ||||||
|         filwidth_delay_index1 = (int)(filwidth_delay_dist * 0.1 + 0.0001); |         filwidth_delay_index[0] = (int)(filwidth_delay_dist * 0.1 + 0.0001); | ||||||
| 
 | 
 | ||||||
|         // If the index has changed (must have gone forward)...
 |         // If the index has changed (must have gone forward)...
 | ||||||
|         if (filwidth_delay_index1 != filwidth_delay_index2) { |         if (filwidth_delay_index[0] != filwidth_delay_index[1]) { | ||||||
|           filwidth_e_count = 0; // Reset the E movement counter
 |           filwidth_e_count = 0; // Reset the E movement counter
 | ||||||
|           int8_t meas_sample = thermalManager.widthFil_to_size_ratio() - 100; // Subtract 100 to reduce magnitude - to store in a signed char
 |           int8_t meas_sample = thermalManager.widthFil_to_size_ratio() - 100; // Subtract 100 to reduce magnitude - to store in a signed char
 | ||||||
|           do { |           do { | ||||||
|             filwidth_delay_index2 = (filwidth_delay_index2 + 1) % MMD_CM; // The next unused slot
 |             filwidth_delay_index[1] = (filwidth_delay_index[1] + 1) % MMD_CM; // The next unused slot
 | ||||||
|             measurement_delay[filwidth_delay_index2] = meas_sample;       // Store the measurement
 |             measurement_delay[filwidth_delay_index[1]] = meas_sample;         // Store the measurement
 | ||||||
|           } while (filwidth_delay_index1 != filwidth_delay_index2);       // More slots to fill?
 |           } while (filwidth_delay_index[0] != filwidth_delay_index[1]);       // More slots to fill?
 | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -755,7 +755,7 @@ void Temperature::manage_heater() { | |||||||
|   // Control the extruder rate based on the width sensor
 |   // Control the extruder rate based on the width sensor
 | ||||||
|   #if ENABLED(FILAMENT_WIDTH_SENSOR) |   #if ENABLED(FILAMENT_WIDTH_SENSOR) | ||||||
|     if (filament_sensor) { |     if (filament_sensor) { | ||||||
|       meas_shift_index = filwidth_delay_index1 - meas_delay_cm; |       meas_shift_index = filwidth_delay_index[0] - meas_delay_cm; | ||||||
|       if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1;  //loop around buffer if needed
 |       if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1;  //loop around buffer if needed
 | ||||||
| 
 | 
 | ||||||
|       // Get the delayed info and add 100 to reconstitute to a percent of
 |       // Get the delayed info and add 100 to reconstitute to a percent of
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user