On Oct 21, 2006, at 6:49 PM, Martin Peach wrote:
Hans-Christoph Steiner wrote:
On Oct 20, 2006, at 4:31 PM, martin.peach@sympatico.ca
martin.peach@sympatico.ca wrote:"David NG McCallum" d@mentalfloss.ca said:
I can see that if you tried software PWM through pins 9-11 it
wouldn't be any different than using any of the other digital pins. But I thought that pins 9-11 did hardware PWM through the analogWrite() function in the regular Arduino C. Am I wrong on this?I don't know. I don't have an Arduino, I'm trying to make
something with a PIC that emulates the Arduino running Firmata.Do you mean that hardware PWM on those pins hasn't yet been implemented with Firmata?
That's what I meant. Also that software PWM has not been
implemented with Firmata either AFAIK.Hardware PWM is implemented and functional on the lastest firmata/ pduino release. Software PWM and pulseOut are still lacking.
Once one/both of those are implemented, servo control will be
possible. Any volunteers?Ah I see, the hardware PWM function is called analogWrite in Wiring. My calculations based on a 16MHz arduino clock and the arduino
firmware at : http://svn.berlios.de/svnroot/repos/arduino/trunk/targets/arduino/ wiring.c suggest that the hardware pwm is running at 490Hz. Anyone know if this is the case? If so, this should work for DC motors but is too fast for servos
and too slow for audio.
The Atmel ATMEGA8 has a 30kHz hardware PWM, so it'll do audio too.
But yes, its waaaay too fast for servos.
It could be used as an 8-bit DAC if a lowpass filter is placed on
the output, something like a 10k resistor feeding a 0.1uF capacitor:pwm->---///----+--->filtered 10k | = 0.1uF | gnd
As for software PWM it would work best if you had access to the
timer interrupts, which would have to occur at the granularity of
the pwm (for servos, 1/256 ms ~ 4us). I can see how to do it by
directly writing assembly code but in the context of the Wiring
environment I'm not sure...
There are timer interrupts available. They are not documented in the
Wiring stuff, but the Wiring code is literally just C++, so you can
use the standard calls. I haven't touched that yet though...
.hc
The arc of history bends towards justice. - Dr. Martin Luther
King, Jr.