PWM 2Khz con Timer1 en modo CTC, no lo consigo

Bueno pues el código quedaría a sin:

int duty = 50;
int _freq = 0;
int pinPote = A0;
int pote;


void setup() {
  DDRB |= (1 << DDB1);
  // modo ctc
  TCCR1A &= ~ (1 << WGM10);
  TCCR1A |=  (1 << WGM11);
  TCCR1B |=  (1 << WGM12);
  TCCR1B |=  (1 << WGM13);
  TCCR1A &= ~ (1 << COM1A0);
  TCCR1A |=  (1 << COM1A1);

  //1024
  TCCR1B |=  (1 << CS10);
  TCCR1B &= ~ (1 << CS11);
  TCCR1B |=  (1 << CS12);
}

void loop() {
  ICR1 = (F_CPU / 1024 / _freq) - 1;
  OCR1A = (((F_CPU / 1024 / _freq) - 1) * duty) / 100;
  pote = analogRead(pinPote);
  _freq = map(pote, 0, 1023, 300, 1900);
}

Lo hice para que el mínimo del potenciómetro tenga 300Hz y el máximo 1,9Khz.
Funciona pero es algo lento, cada vez que muevo un poco el potenciómetro la señal desaparece del osciloscopio y aparece a los pocos segundos con la frecuencia ya modificada.
No se si es mi osciloscopio o hice algo mal.