Further work on comms.
This commit is contained in:
parent
4a4a10575c
commit
8d79f21ba3
File diff suppressed because it is too large
Load Diff
|
|
@ -6896,6 +6896,7 @@ Sigma_Exit:
|
||||||
mmu_command(MMU_CMD_T0 + tmp_extruder);
|
mmu_command(MMU_CMD_T0 + tmp_extruder);
|
||||||
|
|
||||||
manage_response(true, true);
|
manage_response(true, true);
|
||||||
|
delay(10);
|
||||||
mmu_command(MMU_CMD_C0);
|
mmu_command(MMU_CMD_C0);
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -287,6 +287,7 @@ bool fsensor_check_autoload(void)
|
||||||
{
|
{
|
||||||
//puts_P(_N("fsensor_check_autoload = true !!!\n"));
|
//puts_P(_N("fsensor_check_autoload = true !!!\n"));
|
||||||
if (mmu_enabled) mmu_command(MMU_CMD_FS);
|
if (mmu_enabled) mmu_command(MMU_CMD_FS);
|
||||||
|
fsensor_autoload_check_stop();
|
||||||
fsensor_autoload_enabled = false;
|
fsensor_autoload_enabled = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -541,4 +542,4 @@ void fsensor_setup_interrupt(void)
|
||||||
fsensor_int_pin_old = 0;
|
fsensor_int_pin_old = 0;
|
||||||
|
|
||||||
pciSetup(FSENSOR_INT_PIN);
|
pciSetup(FSENSOR_INT_PIN);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -156,10 +156,10 @@ int8_t mmu_rx_ok(void)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
//check 'not_ok' response
|
//check 'nk' response
|
||||||
int8_t mmu_rx_not_ok(void)
|
int8_t mmu_rx_not_ok(void)
|
||||||
{
|
{
|
||||||
int8_t res = uart2_rx_str_P(PSTR("not_ok\n"));
|
int8_t res = uart2_rx_str_P(PSTR("nk\n"));
|
||||||
if (res == 1) mmu_last_response = millis();
|
if (res == 1) mmu_last_response = millis();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
@ -167,7 +167,7 @@ int8_t mmu_rx_not_ok(void)
|
||||||
//check 'MK3 FSensor requested to look for load' response
|
//check 'MK3 FSensor requested to look for load' response
|
||||||
int8_t mmu_rx_fsensorLook(void)
|
int8_t mmu_rx_fsensorLook(void)
|
||||||
{
|
{
|
||||||
int8_t res = uart2_rx_str_P(PSTR("FL\n"));
|
int8_t res = uart2_rx_str_P(PSTR("fl\n"));
|
||||||
if (res == 1) mmu_last_response = millis();
|
if (res == 1) mmu_last_response = millis();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
@ -372,7 +372,6 @@ void mmu_loop(void)
|
||||||
if (lastLoadedFilament != filament) {
|
if (lastLoadedFilament != filament) {
|
||||||
printf_P(PSTR("MMU <= 'T%d'\n"), filament);
|
printf_P(PSTR("MMU <= 'T%d'\n"), filament);
|
||||||
mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
||||||
mmuFSensorLoading = true;
|
|
||||||
mmu_state = 3; // wait for response
|
mmu_state = 3; // wait for response
|
||||||
} else {
|
} else {
|
||||||
mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
||||||
|
|
@ -418,7 +417,7 @@ void mmu_loop(void)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("MMU <= 'Filament seen at extruder'\n"));
|
printf_P(PSTR("MMU <= 'Filament seen at extruder'\n"));
|
||||||
mmu_puts_P(PSTR("EE\n"));
|
mmu_puts_P(PSTR("EE\n"));
|
||||||
mmuFSensorLoading = false;
|
//mmuFSensorLoading = false;
|
||||||
mmu_state = 3; // wait for response
|
mmu_state = 3; // wait for response
|
||||||
}
|
}
|
||||||
mmu_cmd = 0;
|
mmu_cmd = 0;
|
||||||
|
|
@ -441,8 +440,8 @@ void mmu_loop(void)
|
||||||
else enquecommand_front_P(PSTR("M600")); //save print and run M600 command
|
else enquecommand_front_P(PSTR("M600")); //save print and run M600 command
|
||||||
}
|
}
|
||||||
mmu_state = 1;
|
mmu_state = 1;
|
||||||
if (mmu_cmd == 0)
|
//if (mmu_cmd == 0)
|
||||||
mmu_ready = true;
|
//mmu_ready = true;
|
||||||
}
|
}
|
||||||
else if ((mmu_last_request + MMU_P0_TIMEOUT) < millis())
|
else if ((mmu_last_request + MMU_P0_TIMEOUT) < millis())
|
||||||
{ //resend request after timeout (30s)
|
{ //resend request after timeout (30s)
|
||||||
|
|
@ -450,18 +449,24 @@ void mmu_loop(void)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 3: //response to mmu commands
|
case 3: //response to mmu commands
|
||||||
if (mmu_rx_ok() > 0)
|
if(mmu_rx_fsensorLook() > 0)
|
||||||
{
|
|
||||||
printf_P(PSTR("MMU => 'ok'\n"));
|
|
||||||
mmu_ready = true;
|
|
||||||
mmu_state = 1;
|
|
||||||
} else if(mmu_rx_fsensorLook() > 0)
|
|
||||||
{
|
{
|
||||||
printf_P(PSTR("MMU => 'waiting for filament @ MK3 Sensor'\n"));
|
printf_P(PSTR("MMU => 'waiting for filament @ MK3 Sensor'\n"));
|
||||||
if (!fsensor_enabled) fsensor_enable();
|
if (!fsensor_enabled) fsensor_enable();
|
||||||
|
mmuFSensorLoading = true;
|
||||||
fsensor_autoload_enabled = true;
|
fsensor_autoload_enabled = true;
|
||||||
|
fsensor_autoload_check_stop();
|
||||||
mmu_state = 1;
|
mmu_state = 1;
|
||||||
}else if(mmu_rx_not_ok() > 0)
|
} else if (mmu_rx_ok() > 0)
|
||||||
|
{
|
||||||
|
if (mmuFSensorLoading == true) {
|
||||||
|
mmuFSensorLoading = false;
|
||||||
|
printf_P(PSTR("MMU => 'ok :)'\n"));
|
||||||
|
}
|
||||||
|
printf_P(PSTR("MMU => 'ok'\n"));
|
||||||
|
mmu_ready = true;
|
||||||
|
mmu_state = 1;
|
||||||
|
} else if(mmu_rx_not_ok() > 0)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("MMU => 'fixTheProblem!!'\n"));
|
printf_P(PSTR("MMU => 'fixTheProblem!!'\n"));
|
||||||
mmu_ready = false;
|
mmu_ready = false;
|
||||||
|
|
@ -477,13 +482,13 @@ void mmu_loop(void)
|
||||||
case 10: //echo response, comms confirmation
|
case 10: //echo response, comms confirmation
|
||||||
if (mmu_rx_echo() > 0)
|
if (mmu_rx_echo() > 0)
|
||||||
{
|
{
|
||||||
printf_P(PSTR("MMU => 'CMD ACK'\n"));
|
printf_P(PSTR("MMU => 'CMD ACK 0x%X'\n"));
|
||||||
//mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
//mmu_puts_P(PSTR("EE\n")); // Advise MMU CMD is correct, execute
|
||||||
ack_received = true;
|
ack_received = true;
|
||||||
mmu_state = 1; // Do normal Await command completion confirmation
|
mmu_state = 1; // Do normal Await command completion confirmation
|
||||||
} else if ((mmu_last_request + 1000) < millis()) { // Timeout if echo doesn't match request, resend cmd
|
} else if ((mmu_last_request + 1000) < millis()) { // Timeout if echo doesn't match request, resend cmd
|
||||||
//printf_P(PSTR("MMU => 'CMD RETRY'\n"));
|
//printf_P(PSTR("MMU => 'CMD RETRY'\n"));
|
||||||
printf_P(PSTR("MMU => 'CMD RETRY %d'\n"), mmu_cmd);
|
printf_P(PSTR("MMU => 'CMD RETRY 0x%X'\n"), mmu_cmd);
|
||||||
mmu_state = 1;
|
mmu_state = 1;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -721,8 +726,9 @@ void mmu_M600_load_filament(bool automatic)
|
||||||
// printf_P(PSTR("T code: %d \n"), tmp_extruder);
|
// printf_P(PSTR("T code: %d \n"), tmp_extruder);
|
||||||
// mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
|
// mmu_printf_P(PSTR("T%d\n"), tmp_extruder);
|
||||||
mmu_command(MMU_CMD_T0 + tmp_extruder);
|
mmu_command(MMU_CMD_T0 + tmp_extruder);
|
||||||
|
|
||||||
manage_response(false, true);
|
manage_response(false, true);
|
||||||
|
delay(10);
|
||||||
mmu_command(MMU_CMD_C0);
|
mmu_command(MMU_CMD_C0);
|
||||||
mmu_extruder = tmp_extruder; //filament change is finished
|
mmu_extruder = tmp_extruder; //filament change is finished
|
||||||
delay(100);
|
delay(100);
|
||||||
|
|
@ -1271,4 +1277,4 @@ void mmu_eject_filament(uint8_t filament, bool recover)
|
||||||
{
|
{
|
||||||
puts_P(PSTR("Filament nr out of range!"));
|
puts_P(PSTR("Filament nr out of range!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue