no se flowcode pero para no dejarte asi nomas. Podrias configurar un timer para que el periodo de tu PWM sea igual a 1024 pasadas por la interrupcion del mismo (suponiendo el AD de 10 bit, si es de 8 mucho menos ). Y luego con lo leido del ADC cuando se supere la cantidad que desactive la señal... haber si me explico un poco mejor.
Cada interrupcion del timer (overflow del mismo) incrementa una variable hasta 1024 ( 10 bits ) o 256 ( 8 bits ) , elegi esos valores para que sea mas comodo. obviamente tu periodo o intervalo del timer va a ser periodo/1024 o perdiodo/256 ( segun los bits que manejes el ADC ).
Si tu ADC tiene un valor de 700
Tu programa mientras cuenta desde 0 a 700 va a tener la salida en alto y luego de 701 a 1024 la salida en bajo. Si varias el potenciometras vas de 0% a 100% de duty.
Lo importante es que se cumpla el tiempo del periodo.
Tu rutina de interrupcion solo seria aumentar una variable, resetearla a 0 cuando llegue a 1024, cargar el nuevo valor del timer ( si es necesario), limpiar flag y salir
El principal es revisar esas condiciones y activar o desactivar la salida
Hacer esto implica en cierta medida de no poner delays, o directamente manejar las salidas desde la interrupcion si lo haces. Para que no afecte el periodo de la salida del PWM