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

Bueno, pues lo he hecho con la librería TimerOne,
( no se si lo he echo bien)pero funciona sin problemas.

Pero el objetivo de este post para mi, es aprender, y me guastaría saber hacerlo sin la librería.

#include <TimerOne.h>

const int pinPwm = 9;
int pinPote = A0;
int pote;
unsigned long periodo = 500;  // (500us que son 2Khz)
int duty = 512;               // 50%

void setup()
{
  pinMode(pinPwm, OUTPUT);
  pinMode(pinPote, INPUT);
  Timer1.initialize(periodo);
  Timer1.pwm(9, duty);
}


void loop()
{

  pote = analogRead(pinPote);
  Timer1.setPeriod(periodo = map(pote, 0, 1023, 500000, 500));
}
1 Like