/************************************************************************ Project: Welling Motor Control Paltform Filename: mathtool.h Partner Filename: mathtool.c Description: The header file of mathtool.c Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems. CPU TYPE : GD32F3x0 ************************************************************************* Copyright (c) 2018 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* ************************************************************************* Revising History (ECL of this file): ************************************************************************/ /************************************************************************ Beginning of File, do not put anything above here except notes Compiler Directives: *************************************************************************/ #ifndef MATHTOOL_H #define MATHTOOL_H /************************************************************************ Modules used (included header files) *************************************************************************/ /************************************************************************ Compiler Directives (N/A) *************************************************************************/ #ifdef _MATHTOOL_C_ #define _MATHTOOL_EXT #else #define _MATHTOOL_EXT extern #endif /************************************************************************ Definitions & Macros (#define ...) *************************************************************************/ #define SINTABSIZE 256 + 1 #define ARCTANTABSIZE 16 #define SINCOS_DEFAULT \ { \ 0, 0 \ } // Default value of SINCOS_DEFAULT #define ARCTAN_IN_DEFAULT \ { \ 0, 0 \ } // Default value of ARCTAN_IN /************************************************************************ TypeDefs & Structure defines *************************************************************************/ typedef struct { // Outputs of sin-cos table SWORD swSinPu; // Q15 Output SIN SWORD swCosPu; // Q15 Output COS } SINCOS; // Struct of sin&cos typedef struct { // Outputs of LPF UWORD uwKx; // Q15 SLONG_UNION slY; // Q?+Q16 } LPF_OUT; // Struct of LPF_OUT typedef struct { SWORD swAlphaPu; // Alpha axis component SWORD swBetaPu; // Beta axis component } ARCTAN_IN; /************************************************************************ Constant Table *************************************************************************/ /************************************************************************ Exported Variables (Start definitions w/ _MATHTOOL_EXT) *************************************************************************/ #ifdef _MATHTOOL_C_ _MATHTOOL_EXT SINCOS mth_stSinCosPu = SINCOS_DEFAULT; _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn = ARCTAN_IN_DEFAULT; #else _MATHTOOL_EXT SINCOS mth_stSinCosPu; _MATHTOOL_EXT ARCTAN_IN mth_stArctanIn; #endif /************************************************************************ Exported Function Call Prototypes (Start definitions w/ _MATHTOOL_EXT) *************************************************************************/ #ifdef _MATHTOOL_C_ _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v); _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof); _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out); _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput); _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit); _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in); #else _MATHTOOL_EXT void mth_voSinCos(UWORD angle, SINCOS *v); _MATHTOOL_EXT void mth_voLPFilterCoef(ULONG ulLpfTime_us, ULONG ulExeFreq, UWORD *uwLPFCof); _MATHTOOL_EXT void mth_voLPFilter(SWORD swLpfIn, LPF_OUT *out); _MATHTOOL_EXT SLONG mth_slSqrt(SLONG slInput); _MATHTOOL_EXT SLONG mth_slRamp(SLONG slInput, SLONG slDelta, SLONG slOutputLimit); _MATHTOOL_EXT SWORD mth_voArctan(ARCTAN_IN *in); #endif /************************************************************************ RAM ALLOCATION: N/A *************************************************************************/ /************************************************************************ Flag Define (N/A) *************************************************************************/ /************************************************************************/ #endif /************************************************************************* Copyright (c) 2011 Welling Motor Technology(Shanghai) Co. Ltd. All rights reserved. ************************************************************************* End of this File (EOF): Do not put anything after this part! *************************************************************************/