From the comments in the code it would appear to me that you are trying to generate two low going pulses each time you go round loop.
However you only have one
digitalWrite(PPM_PIN, LOW);
and one
digitalWrite(PPM_PIN, HIGH);
Thus you are only actually generating one low going pulse each time round loop().
Another issue is that there is a maximum value for the parameter sent to the function delayMicroseconds().
The largest value that will produce an accurate delay is 16383; larger values can produce an extremely short delay. For delays longer than a few thousand microseconds, you should use delay() instead.
For more details see: delayMicroseconds( ) and delay( ).
Here is an oscilloscope trace showing the result of your code:
That looks wrong to me.
Only the 300µs low going pulse is correct.
