From 20a97fec11bdbc41ffa1dfcf44af44331b2889e7 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Mon, 20 Feb 2023 15:36:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=B7=D0=B0=D1=89?= =?UTF-8?q?=D0=B8=D1=82=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=83=D0=B4?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=B8=D1=86=D0=B8=D0=B8=20=D0=BD=D0=B0=20=D0=BB=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- scheduler.c | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1c8d85c..6fd019e 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,6 @@ ## Известные баги -* ночных барабанов на линии не может быть больше 8, если барабанов больше то они останутся в цинковании, поэтому следует +* ночные барабаны в конце складываются в промывки через зону обмена, таким образом можно загрузить на линию все 10 ночных барабанов * не работают регистры добавления/удаления барабанов с панели diff --git a/scheduler.c b/scheduler.c index c98aa73..d69066d 100644 --- a/scheduler.c +++ b/scheduler.c @@ -336,21 +336,29 @@ void scheduler_main() // сначала выдаем команды первому роботу if (robot1_code.PC < 0) { - schedule_one_robot(ROBOT_1); + if (robot1.dx.current_zone < ZONE_PASSIVATION) { + robot2_lock_zone = -1; + robot1_lock_zone = ZONE_PASSIVATION; + robot1_code.barrel_id = -1; + robot1_code.code[0] = ROBOT_CMD_DOWN(); + robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_PASSIVATION); + robot1_code.code[2] = ROBOT_CMD_END(); + robot1_code.PC = 0; + } else { + schedule_one_robot(ROBOT_1); + } } // потом второму if (robot2_code.PC < 0) { - if (robot2.dx.current_zone < ZONE_WASHING_1A) { + if (robot2.dx.current_zone < ZONE_WASHING_1A || robot2.dx.current_zone > ZONE_ETCHING_2) { // то же самое что и во второй стадии, только без инкремента стадии - if (robot2_code.PC < 0) { - robot2_lock_zone = ZONE_ETCHING_2; - robot2_code.barrel_id = -1; - robot2_code.code[0] = ROBOT_CMD_DOWN(); - robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_WASHING_1A); - robot2_code.code[2] = ROBOT_CMD_END(); - robot2_code.PC = 0; - } + robot2_lock_zone = ZONE_ETCHING_2; + robot2_code.barrel_id = -1; + robot2_code.code[0] = ROBOT_CMD_DOWN(); + robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_WASHING_1A); + robot2_code.code[2] = ROBOT_CMD_END(); + robot2_code.PC = 0; } else { schedule_one_robot(ROBOT_2); }