I assume you are using an IDE and writing in C, but I am not familiar with this device.
Basically, you need to use timers, of which there are several on the device, and write interrupt handlers for "output compare" interrupts. If an output compare interrupt is enabled, then every time the value in the timer matches the value in a certain register, your handler gets called.
A common technique is to have the handler toggle the pin to the servo, then change the value in the output compare register to make the handler fire again when you next need it to.
if(off)
turn pin on
ocreg += pwm_value
else
turn pin off
ocreg += cycle-pwm_value
The pin will stay on for the right length of time, and always turn on at the same frequency. You need to find good values for these variables based on the servo specifications.
You can use another timer to sample the ADC on a regular schedule, or build it in to the same interrupt handler as the PWM, or even just let it run in a busy loop waiting for the ADC to finish.
main()
loop
start ADC
while (ADC busy) { do nothing }
calculate pwm and store in variable pwm_value
loop
Depending on the servo specs, you may have to modify these slightly to prevent cycle drift, but servos are generally pretty forgiving.
You need to find examples of interrupt handler syntax for your compiler, and always read the manual on how to use the registers to control the timers and enable interrupts.
Good luck, and post a new question with some code when you have more completed.