Me podrían ayudar o dar ideas de como desfasar la señal por favor
Desfazar la señal es simplemente serguir guardando pero no sacar la señal hasta cierto punto, y luego desde ese punto ir sacando todo mientras se sigue guardando, lo que si vas a tener que sacar en la misma medida que entra.
Seria complicado programarlo pensando en el "tiempo" a desfazar, sino pensalo en la cantidad de muestras desfazadas. Supongamos que tenes un buffer de 2048 entradas de 8 bits. El minimo desface que podes tenes es de 1, es decir cuando tomes la 2da muestra envias la primera afuera. Si quisieras aumentar el desface, por ejemplo a 1024, seguis llenando tu buffer hasta 1024 y recien ahi empezas a enviar la 1er muestra, obviamente el desfase va a depender de lo que estas intentando tomar.
O sea vas a tener un programa de "guardado" que va a tomar el dato y simplemente guardarlo en el buffer que va a ser circular, es decir cuando llega al 2047 comienza nuevamente en el 1. Y vas a necesitar de un programa de "salida" que tome el dato y lo saque al exterior.
Hay un par de limitantes.
El programa que saque el dato tiene que ser mas rapido que el del guardado.
La limitacion de desface va a estar limitado por tu memoria, es decir no podes defazar 65K de muestras si no la podes guardar.
Ahora como hacer el ADC ?
Creo que lo mas RAPIDO es un R-2R, realizado con resistencias SMD, el tema es la cantidad de las mismas.. Pero esto es lo mas rapido que vas a tener.
Luego tenes un PWM si tiene una frecuencia bastante rapida, y un condensador + resistencia calculados para que pueda alcanzar la maxima variacion que se puede dar en la entrada. Va a tener un "slew rate".
Sino usar un DAC externo, hay varios con interface paralela, lo cual van a ser mas "rapidos" que una serial, ya que con interface serial necesitas enviarle los datos.