gnupic@linuxhacker.org

gnupic@linuxhacker.org


Subject: Re: PWM Fun
From: Scott Dattalo
Date: Wed, 22 Jan 2003 13:20:03 -0800 (PST)

On Wed, 22 Jan 2003, Jeff Jackowski wrote:

> I'm working on a device to emulate some old game console controllers. To
> support everything I want, I need 4 individually timed PWM outputs. I'm
> not an electronics expert, so I thought I'd ask here to find some
> alternatives.
> 
> The PIC16F877 I've been using is too busy for me to figure a way for it
> to output the PWM. I've considered using 2 PIC's so one can concentrate on
> PWM. I can see how to do it, but it does make things a bit more complex.
> I've also considered using an Atmel megaAVR controller that can manage 4
> PWM outputs in hardware, but the part I was considering (ATmega128)
> doesn't seem to be supported by gcc yet, and I have no desire to code 
> everything in assembly.

Check out
http://www.dattalo.com/technical/software/software.php

and particularly:
http://www.dattalo.com/technical/software/pic/pwm8.asm

This code will drive 8 PWMS simultaneously. I've got a new version that 
does the same thing but allows you to easily update the Pulse Width. 

For 8 pwms, it takes 23 cycles. For 4 it would only take 15 cycles. 
That's very little overhead. The code reside in a timer 0 interrupt 
handler.

Scott


gnupic@linuxhacker.org