Hi Mitch, I got a good chuckle out of your post, thanks. There are a lot of settings to make for the PWM to actually output something. I've struggled myself. The code below is what I use to init my pwm-A. It uses some of the low-level SDK stuff. It sets up only 2 channels for pwm but it could get you started (the other channels are software controlled outputs). Read and re-read the PWM chapter of the DSP User's Manual for more info on the registers and bit assignments and operation. Good Luck, Pete void InitPWMs(void) { //set edge and independent channels, all (no dead time) periphBitSet(0x100E, &ArchIO.PwmA.ConfigReg); //disable all faults periphBitClear(0xFFFF, &ArchIO.PwmA.DisableMapping1Reg); periphBitClear(0x00FF, &ArchIO.PwmA.DisableMapping2Reg); //Clear pending faults periphBitSet(0x0055, &ArchIO.PwmA.FaultStatusReg); //enable pwmA0-5 outputs (bit 15). //enable software control for led tests of pwmA5-2 (bits 13:10). //pwmA1-0 are for bulk ps control periphBitSet(0xBC00, &ArchIO.PwmA.OutputControlReg); //pwm resol. 10 bits (39khz) periphMemWrite(0x0400, &ArchIO.PwmA.CounterModuloReg); //initial fwd dc = 50% periphMemWrite(0x0200, &ArchIO.PwmA.ValueReg[0]); //initial rev dc = 50% periphMemWrite(0x0200, &ArchIO.PwmA.ValueReg[1]); //load settings periphBitSet(0x0002, &ArchIO.PwmA.ControlReg); //enable pwmA periphBitSet(0x0001, &ArchIO.PwmA.ControlReg); } // InitPWMs |