samples.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "foc/samples.h"
  2. #include "bsp/bsp.h"
  3. #include "bsp/adc.h"
  4. #include "math/fast_math.h"
  5. #include "math/fix_math.h"
  6. #include "os/os_task.h"
  7. #include "foc/foc_config.h"
  8. #include "bsp/delay.h"
  9. typedef struct {
  10. float value;
  11. float filted_value;
  12. float lowpass;
  13. }samples_t;
  14. static void sample_vbus(void);
  15. static void sample_throttle(void);
  16. static u32 sample_task(void *);
  17. static samples_t _vbus;
  18. #ifdef THROTTLE_CHAN
  19. static samples_t _throttle;
  20. #endif
  21. void samples_init(void){
  22. _vbus.filted_value = (MAX_vDC);
  23. _vbus.value = (MAX_vDC);
  24. _vbus.lowpass = (0.2f);
  25. #ifdef THROTTLE_CHAN
  26. _throttle.filted_value = (0);
  27. _throttle.value = (0);
  28. _throttle.lowpass = (0.2f);
  29. sample_throttle();
  30. #endif
  31. sample_vbus();
  32. shark_task_create(sample_task, NULL);
  33. }
  34. float get_vbus_float(void) {
  35. return (_vbus.filted_value);
  36. }
  37. s16 get_vbus_sfix5(void){
  38. return _vbus.filted_value;
  39. }
  40. float get_throttle_float(void) {
  41. return _throttle.filted_value;
  42. }
  43. static u32 sample_task(void *param) {
  44. sample_vbus();
  45. sample_throttle();
  46. return 0;
  47. }
  48. u32 sapmple_delta;
  49. static void sample_vbus(void){
  50. u32 ticks = task_ticks_abs();
  51. s16 vadc = adc_sample_regular_channel(VBUS_V_CHAN, 3);
  52. _vbus.value = (float)vadc * VBUS_VOL_CEOF;
  53. LowPass_Filter(_vbus.filted_value, _vbus.value, _vbus.lowpass);
  54. sapmple_delta = task_ticks_rel(ticks);
  55. }
  56. static void sample_throttle(void){
  57. #ifdef THROTTLE_CHAN
  58. s16 vadc = adc_sample_regular_channel(THROTTLE_CHAN, 16);
  59. _throttle.value = (float)vadc * THROTTLE_VOL_CEOF;
  60. LowPass_Filter(_throttle.filted_value, _throttle.value, _throttle.lowpass);
  61. #endif
  62. }