• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include "hpm_enc_pos_drv.h"
9 
10 
encoder_position_to_deg(uint32_t pos)11 float encoder_position_to_deg(uint32_t pos)
12 {
13     double tmp;
14 
15     tmp = ((double)pos / (double)0xFFFFFFFF) * (double)360.0;
16 
17     return (float)tmp;
18 }
19 
encoder_deg_to_position(float deg)20 uint32_t encoder_deg_to_position(float deg)
21 {
22     double tmp;
23 
24     while (deg < 0) {
25         deg += 360;
26     }
27     while (deg > 360) {
28         deg -= 360;
29     }
30 
31     tmp = ((double)deg / (double)360.0) * (double)0xFFFFFFFF;
32 
33     return (uint32_t)tmp;
34 }
35 
encoder_position_to_rad(uint32_t pos)36 float encoder_position_to_rad(uint32_t pos)
37 {
38     double tmp;
39     const double _2pi = 6.283185307179586;
40 
41     tmp = ((double)pos / (double)0xFFFFFFFF) * _2pi;
42 
43     return (float)tmp;
44 }
45 
encoder_rad_to_position(float rad)46 uint32_t encoder_rad_to_position(float rad)
47 {
48     double tmp;
49     const double _2pi = 6.283185307179586;
50 
51     while (rad < 0) {
52         rad += _2pi;
53     }
54     while (rad > _2pi) {
55         rad -= _2pi;
56     }
57 
58     tmp = ((double)rad / _2pi) * (double)0xFFFFFFFF;
59 
60     return (uint32_t)tmp;
61 }
62