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 // ミニマックス近似式で求める sin 関数を利用する二相発振器のクラス
MikamiUitOpen 0:97d46bd73383 3 //
MikamiUitOpen 0:97d46bd73383 4 // 2017/02/26, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:97d46bd73383 5 //--------------------------------------------------------------
MikamiUitOpen 0:97d46bd73383 6
MikamiUitOpen 0:97d46bd73383 7 #include "SinCosFixed.hpp"
MikamiUitOpen 0:97d46bd73383 8
MikamiUitOpen 0:97d46bd73383 9 #ifndef QUAD_PHASE_OSC_POLY_FIXED_HPP
MikamiUitOpen 0:97d46bd73383 10 #define QUAD_PHASE_OSC_POLY_FIXED_HPP
MikamiUitOpen 0:97d46bd73383 11
MikamiUitOpen 0:97d46bd73383 12 class QuadOscPoly
MikamiUitOpen 0:97d46bd73383 13 {
MikamiUitOpen 0:97d46bd73383 14 public:
MikamiUitOpen 0:97d46bd73383 15 // Constructor
MikamiUitOpen 0:97d46bd73383 16 QuadOscPoly(float f0, float ts)
MikamiUitOpen 0:97d46bd73383 17 : C0_(ToFixed14(4.0f*f0*ts*1.0E-6f)), phi_(0) {}
MikamiUitOpen 0:97d46bd73383 18
MikamiUitOpen 0:97d46bd73383 19 void Generate(int16_t &sinX, int16_t &cosX)
MikamiUitOpen 0:97d46bd73383 20 {
MikamiUitOpen 0:97d46bd73383 21 sinX = Sin16(phi_);
MikamiUitOpen 0:97d46bd73383 22 cosX = Cos16(phi_);
MikamiUitOpen 0:97d46bd73383 23 phi_ = phi_ + C0_;
MikamiUitOpen 0:97d46bd73383 24 }
MikamiUitOpen 0:97d46bd73383 25 private:
MikamiUitOpen 0:97d46bd73383 26 const int16_t C0_;
MikamiUitOpen 0:97d46bd73383 27 int16_t phi_;
MikamiUitOpen 0:97d46bd73383 28 };
MikamiUitOpen 0:97d46bd73383 29 #endif // QUAD_PHASE_OSC_POLY_FIXED_HPP