Исправление команды коррекции, потенциально убраны ошибки преобразования robot code, исправлен баг с зависшим роботом

This commit is contained in:
2023-01-29 13:04:06 +03:00
parent d90b31cc7a
commit 353aad9bec
5 changed files with 105 additions and 46 deletions

59
utils.h
View File

@@ -146,7 +146,7 @@ struct robot_code {
*
* формат команды: (команда, старший байт) [младший байт, аргумент команды (если есть)] [слово, аргумент если команда требует]
*/
short code[16]; // формат кода: [команды] <команда 0>
unsigned short code[16]; // формат кода: [команды] <команда 0>
};
@@ -203,6 +203,9 @@ extern char scheduler_en;
// сигнал инициализации планировщика, должен быть установлен по фронту разрешения на работу
extern char scheduler_start_signal;
extern short scheduler_correction_stage;
#else
#define barrels ((struct barrel*)barrels_array)
#define robot1 (*((struct robot_regs*)&robot1_reg_mx))
@@ -240,31 +243,33 @@ extern char scheduler_start_signal;
#define hla_night_mode _c_hla_night_mode
#define hla_correct_command _c_hla_correct_command
#define scheduler_correction_stage _c_scheduler_correction_stage
#endif
extern const short NIGHT_ZONES[9];
#define ROBOT_CMD_MASK (short)0xF000
#define ROBOT_CMD_END_code (short)0x0000
#define ROBOT_CMD_MOVE_TO_ZONE_code (short)0x1000
#define ROBOT_CMD_MOVE_OFF_code (short)0x2000
#define ROBOT_CMD_MOVE_ACCURATE_code (short)0x3000
#define ROBOT_CMD_UP_code (short)0x4000
#define ROBOT_CMD_DOWN_code (short)0x5000
#define ROBOT_CMD_WAIT_code (short)0x6000
#define ROBOT_CMD_TMR_SET_code (short)0x7000
#define ROBOT_CMD_SET_LOCK_ZONE_code (short)0x8000
#define ROBOT_CMD_CORRECT_AXIS_code (short)0x9000
#define ROBOT_CMD_INC_ZONE_code (short)0xA000
#define ROBOT_CMD_MASK 0xF000U
#define ROBOT_CMD_END_code 0x0000U
#define ROBOT_CMD_MOVE_TO_ZONE_code 0x1000U
#define ROBOT_CMD_MOVE_OFF_code 0x2000U
#define ROBOT_CMD_MOVE_ACCURATE_code 0x3000U
#define ROBOT_CMD_UP_code 0x4000U
#define ROBOT_CMD_DOWN_code 0x5000U
#define ROBOT_CMD_WAIT_code 0x6000U
#define ROBOT_CMD_TMR_SET_code 0x7000U
#define ROBOT_CMD_SET_LOCK_ZONE_code 0x8000U
#define ROBOT_CMD_CORRECT_AXIS_code 0x9000U
#define ROBOT_CMD_INC_ZONE_code 0xA000U
// перемещение с барабаном
#define ROBOT_WITH_BARREL 0x0800
#define ROBOT_WITH_BARREL 0x0800U
// опции зон
#define ROBOT_ZONE_ETCH 0x0400
#define ROBOT_ZONE_GAL 0x0200
#define ROBOT_ZONE_PARKING 0x0100
#define ROBOT_ZONE_ETCH 0x0400U
#define ROBOT_ZONE_GAL 0x0200U
#define ROBOT_ZONE_PARKING 0x0100U
// опции коррекции осей
@@ -275,24 +280,24 @@ extern const short NIGHT_ZONES[9];
// макросы для генерации команд
#define ROBOT_CMD_END() (ROBOT_CMD_END_code)
#define ROBOT_CMD_MOVE_TO_ZONE(zone) ((ROBOT_CMD_MOVE_TO_ZONE_code) | (short)(zone & 0x00FF))
#define ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL(zone) ((ROBOT_CMD_MOVE_TO_ZONE_code) | (short)(ROBOT_WITH_BARREL) | (short)(zone & 0x00FF))
#define ROBOT_CMD_MOVE_TO_PARKING() ((short)(ROBOT_CMD_MOVE_TO_ZONE_code) | (short)(ROBOT_ZONE_PARKING))
#define ROBOT_CMD_MOVE_TO_ZONE(zone) (ROBOT_CMD_MOVE_TO_ZONE_code | (unsigned short)(zone & 0x00FF))
#define ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL(zone) (ROBOT_CMD_MOVE_TO_ZONE_code | ROBOT_WITH_BARREL | (unsigned short)(zone & 0x00FF))
#define ROBOT_CMD_MOVE_TO_PARKING() (ROBOT_CMD_MOVE_TO_ZONE_code | ROBOT_ZONE_PARKING)
#define ROBOT_CMD_MOVE_OFF() (ROBOT_CMD_MOVE_OFF_code)
#define ROBOT_CMD_MOVE_ACCURATE() (ROBOT_CMD_MOVE_ACCURATE_code)
#define ROBOT_CMD_UP() (ROBOT_CMD_UP_code)
#define ROBOT_CMD_UP_WITH_BARREL() ((ROBOT_CMD_UP_code) | (short)(ROBOT_WITH_BARREL))
#define ROBOT_CMD_UP_WITH_BARREL() (ROBOT_CMD_UP_code | ROBOT_WITH_BARREL)
#define ROBOT_CMD_DOWN() (ROBOT_CMD_DOWN_code)
#define ROBOT_CMD_DOWN_WITH_BARREL() ((ROBOT_CMD_DOWN_code) | (short)(ROBOT_WITH_BARREL))
#define ROBOT_CMD_DOWN_WITH_BARREL() (ROBOT_CMD_DOWN_code | ROBOT_WITH_BARREL)
#define ROBOT_CMD_WAIT(time) ((ROBOT_CMD_WAIT_code) | (short)(time & 0x0FFF))
#define ROBOT_CMD_TMR_SET(time) ((ROBOT_CMD_TMR_SET_code) | (short)(time & 0x0FFF))
#define ROBOT_CMD_SET_LOCK_ZONE(zone) ((ROBOT_CMD_SET_LOCK_ZONE_code) | (short)(zone & 0x00FF))
#define ROBOT_CMD_WAIT(time) (ROBOT_CMD_WAIT_code | (unsigned short)(time & 0x0FFF))
#define ROBOT_CMD_TMR_SET(time) ((ROBOT_CMD_TMR_SET_code) | (unsigned short)(time & 0x0FFF))
#define ROBOT_CMD_SET_LOCK_ZONE(zone) ((ROBOT_CMD_SET_LOCK_ZONE_code) | (unsigned short)(zone & 0x00FF))
#define ROBOT_CMD_CORRECT_AXIS(axis) ((short)(ROBOT_CMD_CORRECT_AXIS_code) | (short)axis)
#define ROBOT_CMD_INC_ZONE(arg) ((ROBOT_CMD_INC_ZONE_code) | (short)(arg))
#define ROBOT_CMD_CORRECT_AXIS(axis) (ROBOT_CMD_CORRECT_AXIS_code | (unsigned short)axis)
#define ROBOT_CMD_INC_ZONE(arg) (ROBOT_CMD_INC_ZONE_code | (unsigned short)(arg))
/* ======================== DISABLED ZONES DEFS ======================== */