> the approximation of SIN is not souhaitable for our appliquation
You're already using an approximation. How do you think the library "sin" function performs its calculation? It performs an approximation. One that is good to 24 or 56 bits, but still an "approximation".
So if it isn't fast enough for your control loop, you simply replace it with one that is faster. The tradeoff is that you might lose some precision.
The graph (of triangles and triangles) looks like it is calculating the output PWM signal.
Which is only eight bits for that controller, unless you're running two of them in series.
So any more accuracy than that (one part in 256 or about 0.4%) in your "sin" function would be wasted.
I've just typed a few tables into Microsoft Excel, calculating a linear approximation between samples of the sin function's output. With only TEN samples between 0 and 90 degrees, the worst-case error (expressed as a ratio) is 0.9969. Which is 0.3%. Which is more than accurate enough if the output is an 8-bit PWM signal.
If that isn't good enough, using 100 samples between 0 and 90 degrees has the approximation accurate to 0.999969 worst case.
Since you're using a CPU that doesn't have an FPU (hardware floating point), you're using a floating point emulation library. They're pretty slow too. You might find that using "float" instead of "double" gets you more speed. You might also want to look for a single-precision math library - one that gives you single-precision "sin". Together with using "float" that might be fast enough for your needs.
As for NXP's DSCs, the NXP 56F801X DSC is the one recommended for "motor control applications". The CPU in that one is 32 bit, 32MHz and doesn't have floating point. So it wouldn't be any better for you than the one you're using.
Tom