CQ出版社インターフェース誌の2017年10月号で解説している二相発振器のプログラム

Dependencies:   mbed

Committer:
MikamiUitOpen
Date:
Wed Aug 02 11:50:17 2017 +0000
Revision:
0:97d46bd73383
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:97d46bd73383 1 //-------------------------------------------------------------------
MikamiUitOpen 0:97d46bd73383 2 // 固定小数点数の演算を扱う際に使うインライン関数
MikamiUitOpen 0:97d46bd73383 3 //
MikamiUitOpen 0:97d46bd73383 4 // 2017/03/03, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:97d46bd73383 5 //-------------------------------------------------------------------
MikamiUitOpen 0:97d46bd73383 6 #include "mbed.h"
MikamiUitOpen 0:97d46bd73383 7
MikamiUitOpen 0:97d46bd73383 8 #ifndef QN_INLINE_FUNCTIONS_HPP
MikamiUitOpen 0:97d46bd73383 9 #define QN_INLINE_FUNCTIONS_HPP
MikamiUitOpen 0:97d46bd73383 10
MikamiUitOpen 0:97d46bd73383 11 // 丸めのために使う
MikamiUitOpen 0:97d46bd73383 12 inline float ForRound(float x)
MikamiUitOpen 0:97d46bd73383 13 { return (x > 0) ? 0.5f : -0.5f; }
MikamiUitOpen 0:97d46bd73383 14
MikamiUitOpen 0:97d46bd73383 15 // float 型の引数を int16_t 型の Q14 に変換する
MikamiUitOpen 0:97d46bd73383 16 inline int16_t ToFixed14(float x)
MikamiUitOpen 0:97d46bd73383 17 { return (int16_t)(x*16384.0f + ForRound(x)); }
MikamiUitOpen 0:97d46bd73383 18
MikamiUitOpen 0:97d46bd73383 19 // float 型の引数を int16_t 型の Q15 に変換する
MikamiUitOpen 0:97d46bd73383 20 inline int16_t ToFixed15(float x)
MikamiUitOpen 0:97d46bd73383 21 { return (int16_t)(x*32768.0f + ForRound(x)); }
MikamiUitOpen 0:97d46bd73383 22
MikamiUitOpen 0:97d46bd73383 23 // float 型の引数を int16_t 型の Q29 に変換する
MikamiUitOpen 0:97d46bd73383 24 inline int32_t ToFixed29(float x)
MikamiUitOpen 0:97d46bd73383 25 { return (int32_t)(x*32768.0f*16384.0f); }
MikamiUitOpen 0:97d46bd73383 26
MikamiUitOpen 0:97d46bd73383 27 // 下位ビットを丸めて右に 14 ビットシフトする
MikamiUitOpen 0:97d46bd73383 28 inline int32_t Round14(int32_t x)
MikamiUitOpen 0:97d46bd73383 29 { return (x + 0x2000) >> 14; }
MikamiUitOpen 0:97d46bd73383 30
MikamiUitOpen 0:97d46bd73383 31 // 下位ビットを丸めて右に 154 ビットシフトする
MikamiUitOpen 0:97d46bd73383 32 inline int32_t Round15(int32_t x)
MikamiUitOpen 0:97d46bd73383 33 { return (x + 0x4000) >> 15; }
MikamiUitOpen 0:97d46bd73383 34
MikamiUitOpen 0:97d46bd73383 35 #endif // QN_INLINE_FUNCTIONS_HPP