Sorry, I cannot do C, only MPASM.
Servo control is often called "PWM." You are correct that PWM is usually characterized as a duty cycle, that is, the percentage of cycle that is "on." Some people might call that pulse proportion modulation, but I am not a big advocate of bickering about words.
The pulse width that causes a servo to center is usually 1.5 mS. Since that is repeated every 20 mS, you could call that a duty cycle of 0.075 (7.5%). Doing the same calculation for full swing in either direction results in a range of 0.05 to 0.10 duty cycle. Now assume you want 256 steps and you can see the problem that is faced in using the PWM generator in various chips.
Therefore, it is usually easier just to generate the servo control signal by toggling a port pin using delays. If you do that, you will find that the servo responds primarily to pulse width, not percent duty cycle, so long as the pulse repeat rate is something near 50 Hz. I have run servos at 100 Hz repeat rate, and most of them do just fine, so long as the pulse width is within the limits given here.
The main point I have been trying to make is not how to program your MCU, but how you can find out what you need to do to get the esc to respond as you want it to respond. Your esc almost certainly has its own MCU, and you need to figure out its programming codes to get it to work. The easiest way to do that is to read its instruction manual, but you apparently do not have that available. That is why I have suggested that you borrow an RC transmitter and receiver or use an established design for a servo controller. That removes from the trouble shooting equation any variable related to your programming code.
We are not sure where you are, but from my knowledge of RC hobbyists, I think any one of them would enthusiastically help you figure out the esc. Once that is done, then work on your C code for speed control.
EDIT: If you can get a cheap servo, you could approach this problem from another direction. First, get your MCU to work the servo with a potentiometer, then try to decode/program the esc with your MCU. There must be many examples in C for controlling a servo with an AVR chip.
John