working-est copy with class-based code. still open loop

Dependencies:   mbed

Fork of analoghalls6 by N K

referencesynthesizers.cpp

Committer:
nki
Date:
2015-03-04
Revision:
6:99ee0ce47fb2
Parent:
5:ee1e6c84c302
Child:
7:76d6ceb23e0d
Child:
9:d3b70c15baa9

File content as of revision 6:99ee0ce47fb2:

#include "includes.h"
#include "meta.h"
#include "lut.h"

void SynchronousReferenceSynthesizer::GetReference(float angle, float *ref_d, float *ref_q) {
    *ref_d = _max_phase_current * LutSin(angle);
    *ref_q = 0.0f;
}

float ReferenceSynthesizer::LutSin(float theta) {
    if (theta < 0.0f) theta += 360.0f;
    if (theta >= 360.0f) theta -= 360.0f;
    return sinetab[(int) theta] * 2.0f - 1.0f;
}

float ReferenceSynthesizer::LutCos(float theta) {
    return LutSin(90.0f - theta);
}