EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

CCP PWM

Started by Unknown July 7, 2004
Anything in C? --- In , "Patrick Reitelbach"
<preitelbach@y...> wrote:
> It can be found at www.polydevelopment.com/pd_code/servo.
> my_servo_2_channel.asm.
>
> pr
> --- In , honamos@y... wrote:
> > This is indeed for RC Servo Control. Do you think you could
pass
> > along that code?
> >
> > Thanks,
> > Shamoon
> >
> > --- In , "Patrick Reitelbach"
> > <preitelbach@y...> wrote:
> > > I do not think you will be able to get the numbers you want
with
> a
> > > standard timer setup. The PWM cannot get that slow with a
8Mhz
> > > clock. I made a 60Hz source with a 16F628 using its internal
> > 37Khz
> > > clock.
> > >
> > > Maybe you could setup a timer/interrupt for your required
control
> > > step value (how fine of control do you want?) and count the
> > > interrupts in an isr to control your output(s). Like 100us
> > > resolution gives 12 steps between 600 and 1800us. Set a timer
to
> > > overflow every 100us and do the counting.
> > >
> > > Is this by chance to be used for RC servo control?
> > >
> > > I have an assembly program for the 628 which controls 2 servos
at
> > > 4Mhz clock. With 8 Mhz you could control 4. I process all
servo
> > > outputs in parallel vs serially (one at a time). The serial
> > methods
> > > I looked at were cpu time hogs. This means for 2 ms about 90%
of
> > cpu
> > > cycles are used for servo control. Other tasks have the cpu
100%
> > for
> > > the remaining 18 ms.
> > >
> > > pr
> > > --- In , honamos@y... wrote:
> > > > Nope, this is just one of the various things. The clock
speed
> I
> > > > have is 8Mhz.
> > > >
> > > > --- In , "Patrick Reitelbach"
> > > > <preitelbach@y...> wrote:
> > > > > Is this the only thing the pic will be doing? What is the
> > clock
> > > > > speed you want to use?
> > > > > pr
> > > > >
> > > > > --- In , honamos@y... wrote:
> > > > > > That's about right, yeah... Ideas?
> > > > > >
> > > > > > Shamoon
> > > > > >
> > > > > > --- In , "Patrick Reitelbach"
> > > > > > <preitelbach@y...> wrote:
> > > > > > > You want a pulse every 20ms and control the pulse
width
> > from
> > > > > 600us
> > > > > > to
> > > > > > > 1800us. Is this correct?
> > > > > > >
> > > > > > > pr
> > > > > > > --- In , honamos@y... wrote:
> > > > > > > > Any ideas?
> > > > > > > >
> > > > > > > > --- In , honamos@y... wrote:
> > > > > > > > > Hey now,
> > > > > > > > > I have the PIC18F458 and I'm using the CCS C
> > compiler.
> > > My
> > > > > > > > question
> > > > > > > > > is simple. I want to output a square wave at 50Hz
> and
> > > > vary
> > > > > > the
> > > > > > > > duty
> > > > > > > > > cycle between 3% and 9%. Any ideas how to
accomplish
> > > > this?
> > > > > I
> > > > > > > > know
> > > > > > > > > I should use "SETUP_TIMER", I'm just not sure how.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Shamoon





Any ideas? > --- In , "Patrick Reitelbach"
> <preitelbach@y...> wrote:
> > It can be found at www.polydevelopment.com/pd_code/servo.
> > my_servo_2_channel.asm.
> >
> > pr
> > --- In , honamos@y... wrote:
> > > This is indeed for RC Servo Control. Do you think you could
> pass
> > > along that code?
> > >
> > > Thanks,
> > > Shamoon
> > >
> > > --- In , "Patrick Reitelbach"
> > > <preitelbach@y...> wrote:
> > > > I do not think you will be able to get the numbers you want
> with
> > a
> > > > standard timer setup. The PWM cannot get that slow with a
> 8Mhz
> > > > clock. I made a 60Hz source with a 16F628 using its
internal
> > > 37Khz
> > > > clock.
> > > >
> > > > Maybe you could setup a timer/interrupt for your required
> control
> > > > step value (how fine of control do you want?) and count the
> > > > interrupts in an isr to control your output(s). Like 100us
> > > > resolution gives 12 steps between 600 and 1800us. Set a
timer
> to
> > > > overflow every 100us and do the counting.
> > > >
> > > > Is this by chance to be used for RC servo control?
> > > >
> > > > I have an assembly program for the 628 which controls 2
servos
> at
> > > > 4Mhz clock. With 8 Mhz you could control 4. I process all
> servo
> > > > outputs in parallel vs serially (one at a time). The serial
> > > methods
> > > > I looked at were cpu time hogs. This means for 2 ms about
90%
> of
> > > cpu
> > > > cycles are used for servo control. Other tasks have the cpu
> 100%
> > > for
> > > > the remaining 18 ms.
> > > >
> > > > pr
> > > > --- In , honamos@y... wrote:
> > > > > Nope, this is just one of the various things. The clock
> speed
> > I
> > > > > have is 8Mhz.
> > > > >
> > > > > --- In , "Patrick Reitelbach"
> > > > > <preitelbach@y...> wrote:
> > > > > > Is this the only thing the pic will be doing? What is
the
> > > clock
> > > > > > speed you want to use?
> > > > > > pr
> > > > > >
> > > > > > --- In , honamos@y... wrote:
> > > > > > > That's about right, yeah... Ideas?
> > > > > > >
> > > > > > > Shamoon
> > > > > > >
> > > > > > > --- In , "Patrick Reitelbach"
> > > > > > > <preitelbach@y...> wrote:
> > > > > > > > You want a pulse every 20ms and control the pulse
> width
> > > from
> > > > > > 600us
> > > > > > > to
> > > > > > > > 1800us. Is this correct?
> > > > > > > >
> > > > > > > > pr
> > > > > > > > --- In , honamos@y... wrote:
> > > > > > > > > Any ideas?
> > > > > > > > >
> > > > > > > > > --- In , honamos@y... wrote:
> > > > > > > > > > Hey now,
> > > > > > > > > > I have the PIC18F458 and I'm using the CCS C
> > > compiler.
> > > > My
> > > > > > > > > question
> > > > > > > > > > is simple. I want to output a square wave at
50Hz
> > and
> > > > > vary
> > > > > > > the
> > > > > > > > > duty
> > > > > > > > > > cycle between 3% and 9%. Any ideas how to
> accomplish
> > > > > this?
> > > > > > I
> > > > > > > > > know
> > > > > > > > > > I should use "SETUP_TIMER", I'm just not sure
how.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Shamoon





piclist.com has some C examples.

join the MiniSumoMarkIII group and look in the message base (#3440)
and the files. examples there.

--- In , honamos@y... wrote:
> Any ideas? > > --- In , "Patrick Reitelbach"
> > <preitelbach@y...> wrote:
> > > It can be found at www.polydevelopment.com/pd_code/servo.
> > > my_servo_2_channel.asm.
> > >
> > > pr
> > > --- In , honamos@y... wrote:
> > > > This is indeed for RC Servo Control. Do you think you could
> > pass
> > > > along that code?
> > > >
> > > > Thanks,
> > > > Shamoon
> > > >
> > > > --- In , "Patrick Reitelbach"
> > > > <preitelbach@y...> wrote:
> > > > > I do not think you will be able to get the numbers you want
> > with
> > > a
> > > > > standard timer setup. The PWM cannot get that slow with a
> > 8Mhz
> > > > > clock. I made a 60Hz source with a 16F628 using its
> internal
> > > > 37Khz
> > > > > clock.
> > > > >
> > > > > Maybe you could setup a timer/interrupt for your required
> > control
> > > > > step value (how fine of control do you want?) and count the
> > > > > interrupts in an isr to control your output(s). Like 100us
> > > > > resolution gives 12 steps between 600 and 1800us. Set a
> timer
> > to
> > > > > overflow every 100us and do the counting.
> > > > >
> > > > > Is this by chance to be used for RC servo control?
> > > > >
> > > > > I have an assembly program for the 628 which controls 2
> servos
> > at
> > > > > 4Mhz clock. With 8 Mhz you could control 4. I process all
> > servo
> > > > > outputs in parallel vs serially (one at a time). The
serial
> > > > methods
> > > > > I looked at were cpu time hogs. This means for 2 ms about
> 90%
> > of
> > > > cpu
> > > > > cycles are used for servo control. Other tasks have the
cpu
> > 100%
> > > > for
> > > > > the remaining 18 ms.
> > > > >
> > > > > pr
> > > > > --- In , honamos@y... wrote:
> > > > > > Nope, this is just one of the various things. The clock
> > speed
> > > I
> > > > > > have is 8Mhz.
> > > > > >
> > > > > > --- In , "Patrick Reitelbach"
> > > > > > <preitelbach@y...> wrote:
> > > > > > > Is this the only thing the pic will be doing? What is
> the
> > > > clock
> > > > > > > speed you want to use?
> > > > > > > pr
> > > > > > >
> > > > > > > --- In , honamos@y... wrote:
> > > > > > > > That's about right, yeah... Ideas?
> > > > > > > >
> > > > > > > > Shamoon
> > > > > > > >
> > > > > > > > --- In , "Patrick Reitelbach"
> > > > > > > > <preitelbach@y...> wrote:
> > > > > > > > > You want a pulse every 20ms and control the pulse
> > width
> > > > from
> > > > > > > 600us
> > > > > > > > to
> > > > > > > > > 1800us. Is this correct?
> > > > > > > > >
> > > > > > > > > pr
> > > > > > > > > --- In , honamos@y... wrote:
> > > > > > > > > > Any ideas?
> > > > > > > > > >
> > > > > > > > > > --- In , honamos@y...
wrote:
> > > > > > > > > > > Hey now,
> > > > > > > > > > > I have the PIC18F458 and I'm using the CCS C
> > > > compiler.
> > > > > My
> > > > > > > > > > question
> > > > > > > > > > > is simple. I want to output a square wave at
> 50Hz
> > > and
> > > > > > vary
> > > > > > > > the
> > > > > > > > > > duty
> > > > > > > > > > > cycle between 3% and 9%. Any ideas how to
> > accomplish
> > > > > > this?
> > > > > > > I
> > > > > > > > > > know
> > > > > > > > > > > I should use "SETUP_TIMER", I'm just not sure
> how.
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > > Shamoon





The 2024 Embedded Online Conference