api_zerocross_detection.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef __ZEROCROSS_DETECTION_H__
  2. #define __ZEROCROSS_DETECTION_H__
  3. #include "include.h"
  4. /*----------------------Macro definition----------------*/
  5. #define PHASE_AB 5
  6. #define PHASE_AC 1
  7. #define PHASE_BC 3
  8. #define PHASE_BA 2
  9. #define PHASE_CA 6
  10. #define PHASE_CB 4
  11. /*-------------------Observers variable-----------------*/
  12. typedef struct
  13. {
  14. uint16_t closesendware_count;
  15. uint16_t zco_delaytime_count;
  16. uint16_t zco_stream_time;
  17. uint16_t closeSendWare_AvgCount;
  18. uint16_t pastSendWare_count;
  19. uint8_t delay_time;
  20. // uint8_t zco_phase;
  21. // uint16_t szco_compensation_value;
  22. } mc_zero_observers_t;
  23. //typedef struct
  24. //{
  25. // uint16_t adc_convertedvaluetab_a[3];
  26. // uint16_t adc_convertedvaluetab_b[3];
  27. // uint16_t adc_convertedvaluetab_c[3];
  28. // uint16_t adc_convertedvaluetab_vbus[3];
  29. // uint16_t adc_centerreference_value[3];
  30. //} mc_adc_value_t;
  31. typedef struct
  32. {
  33. uint32_t adc_convertedvaluetab_a[3];
  34. uint32_t adc_convertedvaluetab_b[3];
  35. uint32_t adc_convertedvaluetab_c[3];
  36. uint32_t adc_convertedvaluetab_vbus[3];
  37. uint32_t adc_centerreference_value[3];
  38. } mc_adc_value_t;
  39. typedef enum{
  40. ADC_STATE_NULL = 0,
  41. ADC_STATE_STREAM,
  42. ADC_STATE_CHECK,
  43. ADC_STATE_CLOSE,
  44. ADC_STATE_SWITCHPHASE
  45. } ADCEXECUTESTATE_T;
  46. //AT(.motor.variable) ADCEXECUTESTATE_T gadcexecute_state;
  47. //AT(.motor.variable)
  48. extern mc_zero_observers_t mc_zero_observers;
  49. //AT(.motor.variable)
  50. //extern ADCEXECUTESTATE_T gadcexecute_state;
  51. //AT(.motor.variable)
  52. extern mc_adc_value_t gmc_sczco_advalue_params;
  53. void waitting_stream(uint16_t sczeo_stream_time,uint8_t* mc_observers_state);
  54. void bemf_to_zero_judge(uint8_t phase_mumber,uint8_t direction,uint8_t* mc_observers_state);
  55. //uint8_t zero_crossing_detection(uint8_t phase_number,uint8_t direction,
  56. // uint16_t sczeo_stream_time,uint8_t* mc_observers_state);
  57. void comparator_zero_detection(uint8_t phase_mumber,uint8_t direction,uint8_t* mc_observers_state);
  58. uint8_t comparator_delay_zero_time(uint8_t phase_number,uint8_t direction,uint8_t* mc_observers_state);
  59. uint8_t delay_zero_time(uint8_t phase_number,uint8_t direction,uint8_t* mc_observers_state);
  60. void szco_dataget(uint32_t vbus,uint32_t ua,uint32_t ub,
  61. uint32_t uc,uint8_t phase,uint16_t compensation_value,
  62. uint16_t duty_pwm,uint16_t timer_peroid);
  63. #endif // __ZEROCROSS_DETECTION_H__