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)11float 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)20uint32_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)36float 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)46uint32_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