I found that higher PWM frequencies were a big waste of time. In my robotics tinkering, I ended up using around 30Hz, but I did try up to 30kHz. Here's what I found: The motors and gearing have some "stiction" and pulsed power helps overcome this so you can get smooth operation at slow motor speeds. The real time constraints of your code are greatly reduced if you generate LF PWM. The RF interference from 10's of kHz PWM was ugly to eliminate. It got in the A/D's and the CPU would even crash once in a while. This was the number one reason most student robotics projects failed. The inductance of the motor was really the limiting factor on PWM carrier frequency. At higher frequencies your switching losses go up too. My S/W used only 16 discrete PWM values with a direction (sign) bit. I couldn't notice 256 speeds at all. If you're not sure, hook up a signal generator and MOSFET to your motor and try different frequencies and pulse widths. Ken