Check out this page http://puggy.symonds.net/~catalyticideas/rat_ring/index.php?page=guide&chapter=3#1 This is Ken's implementation of a DTMF dialer, but you could use it as a launching pad for greatness. Scott At 06:20 AM 5/25/04, you wrote: >No PIC (that I'm aware of) has real analog outputs - you'll need to produce >a PWM output (on/off at varying duty cycles) at a significantly higher >frequency than the highest you need to generate, and filter it externally. > >3 separate PWM modules are generally not found except in extremely high >pin-count PICs, so you'd probably want to combine the 3 sinewaves >internally and output them on a single PWM channel. Fortunately, this is >no problem - the standard PWM module has 10-bit resolution, so you could >simply add up to 4 8-bit signals. > >An 18Fxxx PIC would be a good choice. Its hardware multiplier is exactly >what you need to adjust the amplitude of the individual sinewaves. > >The sinewave itself comes from a table of precalculated values. Normally, >a table covering a quarter cycle is used - you play it forwards, then >backwards, then forwards with the value negated, then backwards negated. >However, a table covering a full sine cycle might be easier to work with, >and any 18F PIC should have plenty of room to hold that at reasonable >resolution. > >You'd have three pointers into that table, one for each sinewave. At each >step, you'd grab the values from each pointer, multiply each by its >corresponding amplitude, add them together, and send to the PWM module. >You'd then advance each pointer by an amount depending on the corresponding >frequency, wrapping around at the end of the table. That's all there is to >it. > Jason Harper > >-- >http://www.piclist.com hint: To leave the PICList >mailto:piclist-unsubscribe-request@mitvma.mit.edu -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu