2024-12-02 02:45:48 +08:00
|
|
|
#ifndef __MC_TASKS_H__
|
|
|
|
#define __MC_TASKS_H__
|
2024-05-10 02:39:53 +08:00
|
|
|
|
2024-12-02 02:45:48 +08:00
|
|
|
#include "main.h"
|
2024-05-10 02:39:53 +08:00
|
|
|
|
2024-12-02 02:45:48 +08:00
|
|
|
// Motor controler state
|
|
|
|
typedef enum eFSMState {
|
|
|
|
BOOT_UP = 0,
|
|
|
|
IDLE = 1,
|
|
|
|
RUN = 2,
|
|
|
|
CALIBRATION = 3,
|
|
|
|
ANTICOGGING = 4,
|
|
|
|
} tFSMState;
|
2024-05-10 02:39:53 +08:00
|
|
|
|
2024-12-02 02:45:48 +08:00
|
|
|
typedef struct sMCStatusword
|
|
|
|
{
|
|
|
|
union {
|
|
|
|
uint32_t status_code;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
uint32_t switched_on : 1;
|
|
|
|
uint32_t target_reached : 1;
|
|
|
|
uint32_t current_limit_active : 1;
|
|
|
|
uint32_t PADDING : 29;
|
|
|
|
};
|
|
|
|
} status;
|
|
|
|
|
|
|
|
union {
|
|
|
|
uint32_t errors_code;
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
// FATAL
|
|
|
|
uint32_t adc_selftest_fatal : 1; // 1<<0
|
|
|
|
uint32_t encoder_offline : 1; // 1<<1
|
|
|
|
uint32_t PADDING_1 : 14;
|
|
|
|
// ERROR
|
|
|
|
uint32_t over_voltage : 1; // 1<<16
|
|
|
|
uint32_t under_voltage : 1; // 1<<17
|
|
|
|
uint32_t over_current : 1; // 1<<18
|
|
|
|
uint32_t PADDING_2 : 13;
|
|
|
|
};
|
|
|
|
} errors;
|
|
|
|
} tMCStatusword;
|
|
|
|
|
|
|
|
extern volatile tMCStatusword StatuswordNew;
|
|
|
|
extern volatile tMCStatusword StatuswordOld;
|
|
|
|
|
|
|
|
void MCT_init(void);
|
|
|
|
void MCT_reset_error(void);
|
|
|
|
tFSMState MCT_get_state(void);
|
|
|
|
int MCT_set_state(tFSMState state);
|
|
|
|
|
|
|
|
void MCT_high_frequency_task(void);
|
|
|
|
void MCT_safety_task(void);
|
|
|
|
void MCT_low_priority_task(void);
|
|
|
|
|
|
|
|
#endif
|