well, I used a lookup table with 100 sample and from 0 to 180 and there is no change in the direction
Something might be lost in translation here. The only values you need to store if using the common lookup table method for SPWM are for 0-90 degrees because 90-180 can be described by simply reversing the order of the 0-90 values, then invert the sign of the 0-90 values to generate the 180-270 values, and, finally, invert the sign and reverse the order of the 0-90 values to describe the 270-360/0 values.
anyway, do you advice using the loop to make stable voltage and vvvf ?
the frequency is variable and remains the voltage
And something else has been lost in translation... If the goal is to make a 3ph. motor controller then I would use an off-the-shelf motor control library rather than reinvent this particular wheel. If the goal is to learn how to do something the hard (yet usually lasting) way then I would do what I've already advised you to do. Just think through the steps logically. If you have stored a value for sin 30 of 0.5 and you carrier frequency is 10kHz then for full voltage output you would assign an on time of 0.5 * 1 * 100us for that particular pulse (that is, 50us). If you need to run the motor at half speed then you would instead assign an on-time of 0.5 * 0.5 * 100us = 25us for that pulse in the sequence, and so on for the rest of the lookup table values.
Once you've got the V/Hz thing sorted out you can then move on to dynamically adjusting the multiplier to compensate for supply voltage variations, or even to add a bit of torque boost at low RPMs (assuming a motor is being driven, which is pretty much the only application for a variable frequency, variable voltage 3ph. inverter).
And then after doing all that you might come to appreciate the superiority of the vector control schemes that apply precisely the right voltage at the right time to extract maximum torque from a 3ph. motor.