|
@@ -813,6 +813,79 @@ void lcd_splash()
|
|
|
fputs_P(PSTR(ESC_2J ESC_H(1,1) "Original Prusa i3" ESC_H(3,2) "Prusa Research"), lcdout);
|
|
|
}
|
|
|
|
|
|
+void factory_reset()
|
|
|
+{
|
|
|
+ KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
|
+ if (!READ(BTN_ENC))
|
|
|
+ {
|
|
|
+ _delay_ms(1000);
|
|
|
+ if (!READ(BTN_ENC))
|
|
|
+ {
|
|
|
+ lcd_implementation_clear();
|
|
|
+
|
|
|
+
|
|
|
+ lcd_printPGM(PSTR("Factory RESET"));
|
|
|
+
|
|
|
+
|
|
|
+ SET_OUTPUT(BEEPER);
|
|
|
+ WRITE(BEEPER, HIGH);
|
|
|
+
|
|
|
+ while (!READ(BTN_ENC));
|
|
|
+
|
|
|
+ WRITE(BEEPER, LOW);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ _delay_ms(2000);
|
|
|
+
|
|
|
+ char level = reset_menu();
|
|
|
+ factory_reset(level, false);
|
|
|
+
|
|
|
+ switch (level) {
|
|
|
+ case 0: _delay_ms(0); break;
|
|
|
+ case 1: _delay_ms(0); break;
|
|
|
+ case 2: _delay_ms(0); break;
|
|
|
+ case 3: _delay_ms(0); break;
|
|
|
+ }
|
|
|
+ // _delay_ms(100);
|
|
|
+ /*
|
|
|
+ #ifdef MESH_BED_LEVELING
|
|
|
+ _delay_ms(2000);
|
|
|
+
|
|
|
+ if (!READ(BTN_ENC))
|
|
|
+ {
|
|
|
+ WRITE(BEEPER, HIGH);
|
|
|
+ _delay_ms(100);
|
|
|
+ WRITE(BEEPER, LOW);
|
|
|
+ _delay_ms(200);
|
|
|
+ WRITE(BEEPER, HIGH);
|
|
|
+ _delay_ms(100);
|
|
|
+ WRITE(BEEPER, LOW);
|
|
|
+
|
|
|
+ int _z = 0;
|
|
|
+ calibration_status_store(CALIBRATION_STATUS_CALIBRATED);
|
|
|
+ EEPROM_save_B(EEPROM_BABYSTEP_X, &_z);
|
|
|
+ EEPROM_save_B(EEPROM_BABYSTEP_Y, &_z);
|
|
|
+ EEPROM_save_B(EEPROM_BABYSTEP_Z, &_z);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ WRITE(BEEPER, HIGH);
|
|
|
+ _delay_ms(100);
|
|
|
+ WRITE(BEEPER, LOW);
|
|
|
+ }
|
|
|
+ #endif // mesh */
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //_delay_ms(1000); // wait 1sec to display the splash screen // what's this and why do we need it?? - andre
|
|
|
+ }
|
|
|
+ KEEPALIVE_STATE(IN_HANDLER);
|
|
|
+}
|
|
|
+
|
|
|
// "Setup" function is called by the Arduino framework on startup.
|
|
|
// Before startup, the Timers-functions (PWM)/Analog RW and HardwareSerial provided by the Arduino-code
|
|
|
// are initialized by the main() routine provided by the Arduino framework.
|
|
@@ -823,6 +896,7 @@ void setup()
|
|
|
lcd_splash();
|
|
|
setup_killpin();
|
|
|
setup_powerhold();
|
|
|
+
|
|
|
farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE);
|
|
|
EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no);
|
|
|
if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
|
|
@@ -902,6 +976,8 @@ void setup()
|
|
|
plan_init(); // Initialize planner;
|
|
|
watchdog_init();
|
|
|
|
|
|
+ factory_reset();
|
|
|
+
|
|
|
#ifdef TMC2130
|
|
|
uint8_t silentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT);
|
|
|
tmc2130_mode = silentMode?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
|
|
@@ -919,11 +995,6 @@ void setup()
|
|
|
|
|
|
#endif //TMC2130
|
|
|
|
|
|
-#ifdef PAT9125
|
|
|
- fsensor_init();
|
|
|
-#endif //PAT9125
|
|
|
-
|
|
|
-
|
|
|
st_init(); // Initialize stepper, this enables interrupts!
|
|
|
|
|
|
setup_photpin();
|
|
@@ -932,76 +1003,10 @@ void setup()
|
|
|
// Reset the machine correction matrix.
|
|
|
// It does not make sense to load the correction matrix until the machine is homed.
|
|
|
world2machine_reset();
|
|
|
- KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
|
- if (!READ(BTN_ENC))
|
|
|
- {
|
|
|
- _delay_ms(1000);
|
|
|
- if (!READ(BTN_ENC))
|
|
|
- {
|
|
|
- lcd_implementation_clear();
|
|
|
-
|
|
|
-
|
|
|
- lcd_printPGM(PSTR("Factory RESET"));
|
|
|
-
|
|
|
-
|
|
|
- SET_OUTPUT(BEEPER);
|
|
|
- WRITE(BEEPER, HIGH);
|
|
|
-
|
|
|
- while (!READ(BTN_ENC));
|
|
|
-
|
|
|
- WRITE(BEEPER, LOW);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- _delay_ms(2000);
|
|
|
-
|
|
|
- char level = reset_menu();
|
|
|
- factory_reset(level, false);
|
|
|
-
|
|
|
- switch (level) {
|
|
|
- case 0: _delay_ms(0); break;
|
|
|
- case 1: _delay_ms(0); break;
|
|
|
- case 2: _delay_ms(0); break;
|
|
|
- case 3: _delay_ms(0); break;
|
|
|
- }
|
|
|
- // _delay_ms(100);
|
|
|
- /*
|
|
|
- #ifdef MESH_BED_LEVELING
|
|
|
- _delay_ms(2000);
|
|
|
-
|
|
|
- if (!READ(BTN_ENC))
|
|
|
- {
|
|
|
- WRITE(BEEPER, HIGH);
|
|
|
- _delay_ms(100);
|
|
|
- WRITE(BEEPER, LOW);
|
|
|
- _delay_ms(200);
|
|
|
- WRITE(BEEPER, HIGH);
|
|
|
- _delay_ms(100);
|
|
|
- WRITE(BEEPER, LOW);
|
|
|
-
|
|
|
- int _z = 0;
|
|
|
- calibration_status_store(CALIBRATION_STATUS_CALIBRATED);
|
|
|
- EEPROM_save_B(EEPROM_BABYSTEP_X, &_z);
|
|
|
- EEPROM_save_B(EEPROM_BABYSTEP_Y, &_z);
|
|
|
- EEPROM_save_B(EEPROM_BABYSTEP_Z, &_z);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-
|
|
|
- WRITE(BEEPER, HIGH);
|
|
|
- _delay_ms(100);
|
|
|
- WRITE(BEEPER, LOW);
|
|
|
- }
|
|
|
- #endif // mesh */
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //_delay_ms(1000); // wait 1sec to display the splash screen // what's this and why do we need it?? - andre
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
+#ifdef PAT9125
|
|
|
+ fsensor_init();
|
|
|
+#endif //PAT9125
|
|
|
|
|
|
|
|
|
#if defined(CONTROLLERFAN_PIN) && (CONTROLLERFAN_PIN > -1)
|
|
@@ -1115,6 +1120,7 @@ void setup()
|
|
|
for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
|
|
|
|
|
|
#ifndef DEBUG_DISABLE_STARTMSGS
|
|
|
+ KEEPALIVE_STATE(PAUSED_FOR_USER);
|
|
|
if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) {
|
|
|
lcd_wizard(0);
|
|
|
}
|