|
|
View previous topic :: View next topic |
Author |
Message |
JONNATHAN_R
Joined: 14 Jul 2014 Posts: 3
|
Problem with dsPIC30f4011 in complementary mode |
Posted: Mon Jul 14, 2014 7:01 pm |
|
|
I am doing a position control system using complementary PWM mode, however I have had multiple problems to configure the additional module, the last configuration I have is this:
Configuration:
Code: | set_motor_unit(pwm,unit,options, active_deadtime, inactive_deadtime);
set_motor_unit(1,1,MPWM_ENABLE,0,0); //
setup_motor_pwm(pwm,options, timebase);
setup_motor_pwm(1,MPWM_FREE_RUN,999);
|
Code: | set_motor_pmw_duty(pwm,group,time);
set_motor_pwm_duty(1,1,q);
|
q = cycle is useful here is where I should define whether or PWM1 PWM2 mode is activated complementary.
The compiler does not throw me any error. The code is extensive but the only part that fails is the complementary PWM mode. I've been working on this week,
I appreciate your help...
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19504
|
|
Posted: Tue Jul 15, 2014 8:25 am |
|
|
What compiler version?.
You talk about 'q' affecting the complementary mode, in your posted bits. It doesn't.
Complementary mode is selected in the set_motor_unit command, and is the default. The pin pair is then activated by the set_motor_unit command.
As a comment, you ought to think again about having the dead time as zero. Unless the switch 'off' time of each half circuit is guaranteed to be faster than the switch 'on' time, you need some deadtime.
Further comment, the duty cycle numbers are 2* the timebase numbers (CPU clock versus instruction clock). This is why the timebase register is 15bit, and the period register 16bit.
You are using the simplified (3 variable) version of setup_motor_pwm. I'd always explicitly set the prescaler, otherwise it may not give what you expect.
However I suspect the one that is causing your problems, may be OVDCON.
Add a word define to access this:
#word OVDCON=getenv("SFR:OVDCON")
and make sure you have the bits set to use the PWM.
OVDCON=0x300; //For your two bits - should be the default.
Some older compiler versions did not set this correctly.
Make sure you have programmed the polarity you want for the bits and how you want them to start set, in the fuses.
Get the manual 70062E from the MicroChip site. |
|
|
JONNATHAN_R
Joined: 14 Jul 2014 Posts: 3
|
|
Posted: Tue Jul 15, 2014 9:41 am |
|
|
Dear thanks for your answer,
I am using ccs xc16, I have done the following:
Postcaler leave 4 prescaler and, add 200 ns timeout according to calculations using crystal 20 MHz.
I have read the Manual 70062E.
Do not know about
Quote: | #word OVDCON=getenv("SFR:OVDCON")
and make sure you have the bits set to use the PWM.
OVDCON=0x300; //For your two bits - should be the default.
|
I can not load records directly xc16.
Appreciate your help, and then the new configuration.
Code: |
setup_motor_pwm(1,MPWM_FREE_RUN,4,4,999);
set_motor_unit(1,1,MPWM_ENABLE,200,200);
set_motor_pwm_duty(1,0,q);
|
where q = the useful cycle, I have not had much luck.
Thanks. |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1933 Location: Norman, OK
|
|
Posted: Tue Jul 15, 2014 6:23 pm |
|
|
CCS is NOT xc16!. This is not the xc16 forum.
You need to got to the microchip xc16 forum.
http://www.microchip.com/forums/f250.aspx _________________ Google and Forum Search are some of your best tools!!!! |
|
|
JONNATHAN_R
Joined: 14 Jul 2014 Posts: 3
|
|
Posted: Tue Jul 15, 2014 6:29 pm |
|
|
greeting
You're right I can not program in CCS xc16, I am using MPLABXC16, to which I refer is that I take as a guide the CCS manual programming.
Thank you |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19504
|
|
Posted: Wed Jul 16, 2014 7:37 am |
|
|
Microchip XC16, is not CCS C. All the commands are different, which is why they won't work for you... |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|