PWM values with Talon SRX

I have a Talon SRX motor controller, and need help with translating its specifications into PWM values on an Arduino Nano. This is to drive a brushed DC motor with simple speed control.

The Talon specs are:

PWM Input Pulse(High Time) 1 –2 ms Nominal
0.6–2.4ms max
PWM Input Rate (Period) 2.9–100ms
PWM Output Chop Rate(Switching Frequency) 15.625kHz

So, if I had PWM high for 2 ms, low for 4 ms, it looks like it would meet the controller specs, but 1) I'm not sure if I have this right, and 2) do not know what the Output Chop Rate means.

Is it recommended to just use AnalogWrite, or use the register method (I'm clearly not very familiar with either of these).

Any help with the code required for this would be appreciated.

Thank you,
Rick

"PWM Input Pulse(High Time) 1 -2 ms Nominal"

That's a common servo signal.
Try the servo example in the IDE.
Leo..

Yes a standard servo signal as produced by the Servo library has "input pulse high time" 0.544 to 2.4ms max and "Input Rate" of 20ms so it's just what you need. You drive the motor controller as though it was a servo.

The "Output Chop Rate" is the switching frequency of the output to the motor. So it's just for information and has nothing to do with the input signal that you need to provide to control the speed.

Steve

OK, thanks guys.

I'll try the servo library and go from there.

Here's a wee test sketch:

/*
 Try this test sketch with the Servo library to see how your
 ESC responds to different settings, type a speed (1000 - 2000)
 in the top of serial monitor and hit [ENTER], start at 1500
 and work your way toward 1000 50 micros at a time, then toward
 2000. 
*/
#include <Servo.h>
Servo esc;
void setup() {
  // initialize serial:
  Serial.begin(9600); //set serial monitor baud rate to match
  esc.writeMicroseconds(1500);
  esc.attach(9);
  prntIt();
}

void loop() {
  // if there's any serial available, read it:
  while (Serial.available() > 0) {

    // look for the next valid integer in the incoming serial stream:
    int speed = Serial.parseInt();
    speed = constrain(speed, 1000, 2000);
    esc.writeMicroseconds(speed);
    prntIt();
  }
}
void prntIt()
{
  Serial.print("microseconds =  ");
  Serial.println(speed);
}