#define LEVEL_FIND_SYNC_ZERO 10 //74 //24 #define MAX_COUNT_ERROR_SYNC 100 #define MAX_COUNT_TIMEOUT_SYNC 100 #define MAX_COUNT_PAUSE_READY 100 typedef struct { //Sync vals int pwm_freq_plus_minus_zero; int disable_sync; int sync_ready; unsigned int level_find_sync_zero; int delta_error_sync; int delta_capnum; int count_error_sync; unsigned int capnum0; unsigned int capnum1; int PWMcounterVal; int local_flag_sync_1_2; int global_flag_sync_1_2; int timeout_sync_signal; unsigned int count_timeout_sync; unsigned int count_pause_ready; int enable_do_sync; int latch_interrupt; int enabled_interrupt; unsigned int count_interrupts; unsigned int what_main_pch; // int pzad_or_wzad; //given turns or power, depends on controlMode; // int angle_pwm; //current rotor turns // int iq_zad; // Iq_zadan // union { // struct { // unsigned int wdog_tick :1; //посылаем 0_1_0 и т.д. // unsigned int statusQTV :1; //1-QTV On, QTV - off // unsigned int master :1; // 1 -Master, 0 - not Master // unsigned int slave :1; // 1 -Slave, 0 - not Slave // // unsigned int sync_1_2 :1; // 1 - yes, 0 - no синхросигнал принимается // unsigned int alarm :1; // 1 - yes, 0 - no авария // unsigned int ready_cmd :2; // 00 - not ready,01-ready1,10-ready1to2, 11 -ready2 // // unsigned int controlMode :1; // 0 - regul turns; 1 - power режим работы // unsigned int ready_to_go :1; // 1 - yes, 0 - no схема собрана, готовы давать шим // unsigned int start_pwm :1; // 1 - yes, 0 - no идет команда на запуск шима // unsigned int stop_pwm :1; // 1 - yes, 0 - no идет команда на стоп шима // // unsigned int pwm_status :1; // 1 -On, 0 - Off текущее значение шима // unsigned int err_optbus :1; // 1 - yes, 0 - no шина optbus неисправна // unsigned int maybe_master :1; // 1 - yes, 0 - no запрос на захват режима Master // unsigned int rascepitel :1; // 1 - yes, 0 - no состояние расцепителя // //// unsigned int leading_ready :1; //1 - second inverter ready to work or in work //// unsigned int leading_Go :1; // } bit; // unsigned int all; // } cmd; } SYNC_TOOLS_DATA; #define SYNC_TOOLS_DATA_DEFAULT {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} extern SYNC_TOOLS_DATA sync_data; void setup_sync_line(void); void sync_inc_error(void); void setup_sync_int(void); void start_sync_interrupt(void); void stop_sync_interrupt(void); void stop_sync_interrupt_local(void); int get_status_sync_line(void); void clear_sync_error(void); void Sync_alg(void); void calculate_sync_detected(void); inline void i_sync_pin_on() { EALLOW; GpioDataRegs.GPBSET.bit.GPIOB12 = 1; EDIS; } inline void i_sync_pin_off() { EALLOW; GpioDataRegs.GPBCLEAR.bit.GPIOB12 = 1; EDIS; }