asi varia el ciclo de trabajo, con f varia la frecuencia
#define f 1000 //varia la frecuencia
unsigned int conv = 0;
unsigned int maximo = 0;
void setup (){
DDRB = 0B00000010;
TCCR1A=0b10000000;
TCCR1B=0b00010001;
maximo = (16000000 / (2*f)) -1;
ICR1 = maximo; //define la frecuencia
OCR1A = maximo >> 1;
TIMSK1 = 0b00100000;
sei();
}
void loop(){
}
ISR (TIMER1_CAPT_vect)
{
conv = analogRead(A0);
conv = map(conv,0,1023,0,maximo);// ciclo de trabajo entre 0% a 100%
OCR1A = conv;
}