I have these files somewhere. if I can find them I will post them (if that's OK with Darrel)
I have these files somewhere. if I can find them I will post them (if that's OK with Darrel)
I've uploaded the whole package few weeks ago
http://www.picbasic.co.uk/forum/show...&postcount=210
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Steve
Thank you for pointing me in the right direction!
I just realized that Darrel's code is a slow SPWM and cannot handle high frequencies (e.g. up to 20KHz).
I would like to generate two frequencies simultaneously where the one is a
multiple of the other, e.g Freq 1 = 10 kHz, Freq 2 = 20KHz
I do not need to vary the duty cycle. I only need a duty cycle of 50%, thus
either on or off.
Darrel's code would have been perfect if it could handle higher frequencies.
I cannot use the hardware PWM because all PICs with multiple PWM outputs that I know of, share the same timebase.
Thus the frequency must be the same on all the outputs, but the duty cycles are individually controllable. I don't know of a PIC that's an exception
In short, I am looking for a software PWM that is capable of handling 2 different frequencies simultaneously, where each frequency may vary up to 20KHz. I have looked everywhere but could not find any example code to this.
I will appreciate any help or suggestions.
Last edited by passion1; - 31st May 2007 at 07:16.
Are the two fequencies always a factor of 2X apart? (10kHz and 20kHz)
What else does this PIC need to do?
Do the two PWM need to be in phase?
Paul Borgmeier
Salt Lake City, UT
USA
__________________
PWM and maybe a programmable divider OR a divider and a MUX to select the appropriate frequency multiple.
Whats your application btw please??
Thank you guys.
I got the following clever code from MeLabs support, that solves my problem. It produce simultaneous frequencies of 20KHz, 10KHz, and 5KHz:
DEFINE OSC 20 ' Use a 20MHz crystal for best results
freq_delay VAR WORD
freq_delay = 25 ' 25uS for 20KHz top frequency ((1/20K)/2)
TRISB = %11111000 ' freq pins to outputs
' Output 20KHz on RB0, 10KHz on RB1, 5KHz on RB2
' Adjust freq_delay to compensate for loop overhead
loop:
PAUSEUS freq_delay
PORTB = (PORTB & %00000111) + 1 ' count binary 000 to 111
GOTO loop
Bookmarks