CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug Reports on this forum. Send them to support@ccsinfo.com

How to use PWM slice in PIC18F47Q43?[SOLVED]

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
Guru Narasimha V S



Joined: 05 Aug 2022
Posts: 5

View user's profile Send private message

How to use PWM slice in PIC18F47Q43?[SOLVED]
PostPosted: Fri Aug 05, 2022 12:41 am     Reply with quote

I am a beginner to the PIC controllers. Trying to generate 4 PWM signals using PIC18F47Q43.
Used 3 CCP modules one with PWM slicing.
But could not turn on the fan.
It would be really helpful if I get this issue solved.
Need to know to how to use PWM slicing properly to generate PWM signals.
Code:

#pin_select CCP1OUT  = PIN_C2
#pin_select CCP2OUT  = PIN_C5
#pin_select CCP3OUT  = PIN_B5
#pin_select PWM2S1P2 = PIN_C1

void main(void)
{

    enable_interrupts(GLOBAL);
    setup_ccp1(CCP_PWM);
    setup_ccp2(CCP_PWM);
    setup_ccp3(CCP_PWM);
    setup_pwm2_slice(1, PWM_STANDARD);
    setup_timer_2(T2_DIV_BY_2, 250, 1);
    while(1)
    {
   set_pwm1_duty(200);
        set_pwm2_duty(1, 200, 200);
        set_pwm3_duty(200);
    }

}


Last edited by Guru Narasimha V S on Thu Sep 01, 2022 4:01 am; edited 1 time in total
Ttelmah



Joined: 11 Mar 2010
Posts: 18226

View user's profile Send private message

PostPosted: Tue Aug 09, 2022 1:04 am     Reply with quote

First, if you are a beginner, trying to start with one of the newest most
complex PIC's, is not a sensible way of going. Sad

Now, that having been said, several comments on using the slice PWM:

First you are trying to program it to an unsupported pin. If you are
using the 47Q43, the PWM2 pins can only go to ports B and ports D.
Table 21-2 in the data sheet. Look at the columns for 40 pin devices.
You can put the PWM1 pins onto port C.
Then you are not telling the PWM what to use as a clock. Understand that
the standard CCP PWM's all by default use Timer2, but the slice PWM's
use a separate clock. They have their own internal 16bit timers, and
these have to be clocked from something. Look at the PWM_CLK_ entries
for these.
Then understand that these are 16bit PWM's. With the standard PWM's, the
'period' is determined by the timer. With these you have to separately set
the period to be used. set_pwm2_period.
As a comment, why are you using slice2?. More simple to just use
the slice1 output, so the first number is the duty for this slice.
Then understand that with the standard PWM's, the duty values you show
won't work. You need to tell the function that these are 16bit values, so

set_pwm1_duty(200L);

Note the 'L'.

Then add a delay in the loop. Currently you are continuously resetting the
period before even a single cycle can execute.

These are the obvious problems I can see...
Guru Narasimha V S



Joined: 05 Aug 2022
Posts: 5

View user's profile Send private message

PostPosted: Wed Aug 10, 2022 4:29 am     Reply with quote

Hi Ttelmah ,
Thank you very much, information helped me a lot and I could get the fans running.

The updated code:
Code:

#pin_select CCP1OUT  = PIN_C2
#pin_select CCP2OUT  = PIN_C5
#pin_select CCP3OUT  = PIN_B5
#pin_select PWM1S1P2 = PIN_C1

void main(void)
{

   enable_interrupts(GLOBAL);

   setup_pwm1(PWM_ENABLED | PWM_CLK_FOSC | PWM_CLK_DIV_BY_8, 249);
   setup_pwm1_slice(1, PWM_STANDARD);
   setup_timer_2(T2_DIV_BY_2, 250, 1);
        setup_ccp1(CCP_PWM);
        setup_ccp2(CCP_PWM);
        setup_ccp3(CCP_PWM);
   
 while(1)
      {
   set_pwm1_duty(200);
        set_pwm2_duty(200);
        set_pwm3_duty(200);
   set_pwm1_duty(1, 200L, 200L);
   delay_ms(100);
      }

}
Ttelmah



Joined: 11 Mar 2010
Posts: 18226

View user's profile Send private message

PostPosted: Wed Aug 10, 2022 9:47 am     Reply with quote

Good.
The clocking was the critical bit. Smile
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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