Bici elettrica con arduino (controller pwm)

Ho già tentato questa via, ma purtroppo senza esito positivo...

comunque credo che il driver invertente sia il 2° perché è quello che tra i due viene comandato al contrario (se arduino aumenta il duty cycle in uscita esso si riduce e viceversa, inoltre se non c'è input sul pin in ingresso vedo sempre i 12V su quello di output)

più rifletto sul problema è più mi sembra una questione di pin flottante, ma il fatto che non rientri con una resistenza di pull-down mi lascia davvero perplesso...

colgo l'occasione di questo post per chiedere un aiuto anche relativamente ad un'altra questione:
Ho provato a googlare qualcosa in rete riguardo come modificare la frequenza del segnale PWM, ma purtroppo per il momento sono riuscito a modificare soltanto quest'ultima agendo sul prescaler utilizzando la funzione presente sul playground

Volendo però seguire le indicazioni lasciate nei post precedenti vorrei provare a comandare il motore ad una frequenza che sia il più possibile vicina a 16kHz

come potrei fare?
Al momento il mio codice contempla una semplice lettura di un potenziometro e relativo comando con analogwrite

di seguito il codice:

int mosfetdriver = 9;      // mosfet driver connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setPwmFrequency(int pin, int divisor) {
  byte mode;
  if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 64: mode = 0x03; break;
      case 256: mode = 0x04; break;
      case 1024: mode = 0x05; break;
      default: return;
    }
    if(pin == 5 || pin == 6) {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    } else {
      TCCR1B = TCCR1B & 0b11111000 | mode;
    }
  } else if(pin == 3 || pin == 11) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 32: mode = 0x03; break;
      case 64: mode = 0x04; break;
      case 128: mode = 0x05; break;
      case 256: mode = 0x06; break;
      case 1024: mode = 0x7; break;
      default: return;
    }
    TCCR2B = TCCR2B & 0b11111000 | mode;
  }
}

void setup()
{
  pinMode(mosfetdriver, OUTPUT);   // sets the pin as output
  setPwmFrequency(9, 64);
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(mosfetdriver, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
  Serial.println(analogPin);
  delay(1000);
}

quali sono i pericoli a cui rischierei di andare incontro lavorando ad una frequenza troppo alta o troppo bassa?

grazie come sempre