|
@@ -1140,6 +1140,51 @@ void setup()
|
|
// Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false),
|
|
// Force SD card update. Otherwise the SD card update is done from loop() on card.checkautostart(false),
|
|
// but this times out if a blocking dialog is shown in setup().
|
|
// but this times out if a blocking dialog is shown in setup().
|
|
card.initsd();
|
|
card.initsd();
|
|
|
|
+#ifdef DEBUG_SD_SPEED_TEST
|
|
|
|
+ if (card.cardOK)
|
|
|
|
+ {
|
|
|
|
+ uint8_t* buff = (uint8_t*)block_buffer;
|
|
|
|
+ uint32_t block = 0;
|
|
|
|
+ uint32_t sumr = 0;
|
|
|
|
+ uint32_t sumw = 0;
|
|
|
|
+ for (int i = 0; i < 1024; i++)
|
|
|
|
+ {
|
|
|
|
+ uint32_t u = micros();
|
|
|
|
+ bool res = card.card.readBlock(i, buff);
|
|
|
|
+ u = micros() - u;
|
|
|
|
+ if (res)
|
|
|
|
+ {
|
|
|
|
+ printf_P(PSTR("readBlock %4d 512 bytes %lu us\n"), i, u);
|
|
|
|
+ sumr += u;
|
|
|
|
+ u = micros();
|
|
|
|
+ res = card.card.writeBlock(i, buff);
|
|
|
|
+ u = micros() - u;
|
|
|
|
+ if (res)
|
|
|
|
+ {
|
|
|
|
+ printf_P(PSTR("writeBlock %4d 512 bytes %lu us\n"), i, u);
|
|
|
|
+ sumw += u;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ printf_P(PSTR("writeBlock %4d error\n"), i);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ printf_P(PSTR("readBlock %4d error\n"), i);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ uint32_t avg_rspeed = (1024 * 1000000) / (sumr / 512);
|
|
|
|
+ uint32_t avg_wspeed = (1024 * 1000000) / (sumw / 512);
|
|
|
|
+ printf_P(PSTR("avg read speed %lu bytes/s\n"), avg_rspeed);
|
|
|
|
+ printf_P(PSTR("avg write speed %lu bytes/s\n"), avg_wspeed);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ printf_P(PSTR("Card NG!\n"));
|
|
|
|
+#endif DEBUG_SD_SPEED_TEST
|
|
|
|
+
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_POWER_COUNT, 0);
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_POWER_COUNT, 0);
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_X, 0);
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_X, 0);
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_Y, 0);
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y) == 0xff) eeprom_write_byte((uint8_t*)EEPROM_CRASH_COUNT_Y, 0);
|
|
@@ -1845,6 +1890,7 @@ void homeaxis(int axis, uint8_t cnt, uint8_t* pstep)
|
|
// for the stall guard to work.
|
|
// for the stall guard to work.
|
|
current_position[axis] = 0;
|
|
current_position[axis] = 0;
|
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
|
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
|
|
|
+ set_destination_to_current();
|
|
// destination[axis] = 11.f;
|
|
// destination[axis] = 11.f;
|
|
destination[axis] = 3.f;
|
|
destination[axis] = 3.f;
|
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
|
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
|
@@ -6527,6 +6573,11 @@ void get_coordinates()
|
|
if (next_feedrate > MAX_SILENT_FEEDRATE) next_feedrate = MAX_SILENT_FEEDRATE;
|
|
if (next_feedrate > MAX_SILENT_FEEDRATE) next_feedrate = MAX_SILENT_FEEDRATE;
|
|
#endif //MAX_SILENT_FEEDRATE
|
|
#endif //MAX_SILENT_FEEDRATE
|
|
if(next_feedrate > 0.0) feedrate = next_feedrate;
|
|
if(next_feedrate > 0.0) feedrate = next_feedrate;
|
|
|
|
+ if (!seen[0] && !seen[1] && !seen[2] && seen[3])
|
|
|
|
+ {
|
|
|
|
+// float e_max_speed =
|
|
|
|
+// printf_P(PSTR("E MOVE speed %7.3f\n"), feedrate / 60)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|