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 CCS Technical Support

16F877A dual PWM signals problem

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
desert
Guest







16F877A dual PWM signals problem
PostPosted: Fri Nov 28, 2008 10:12 am     Reply with quote

hi all,

I try to generate 2 PWM signals at CCP1 & CCP2 via this simple code:
Code:

#include <16F877.h>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)

void main()
{
output_low(PIN_C1);   // Set CCP2 output low
output_low(PIN_C2);   // Set CCP1 output low

setup_ccp1(CCP_PWM);  // Configure CCP1 as a PWM
setup_ccp2(CCP_PWM);  // Configure CCP2 as a PWM

setup_timer_2(T2_DIV_BY_4, 124, 1);  // 500 Hz     
set_pwm1_duty(62);                    // 25% duty cycle on pin C2
set_pwm2_duty(62);                    // 50% duty cycle on pin C1

while(1);  // Prevent PIC from going to sleep  (Important !)
}

Checking with a scope I get the PWM I want at CCP2 but no luck on CCP1 no matter what I do.
Could this be due to a faulty PIC?
Is there a way to rule out this option?

Thanks for the help,
Moshe
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri Nov 28, 2008 11:47 am     Reply with quote

Are there any external components connected to the CCP1 pin (Pin C2) ?
desert
Guest







PostPosted: Fri Nov 28, 2008 3:36 pm     Reply with quote

No, I disconnected everything so I can examine the micro controller alone.
it was originally connected to an H BRIDGE, but once it failed I started investigating.
the whole thing is mounted on a breadboard, but I sample the signal at the chip leg directly.
I find the chances of a hardware malfunction slim, but who knows...
any guesses or suggestions will be welcome.

thanks,
Moshe.
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Fri Nov 28, 2008 3:49 pm     Reply with quote

Quote:
it was originally connected to an H BRIDGE, but once it failed

Try a new PIC.
desert
Guest







PostPosted: Fri Nov 28, 2008 4:10 pm     Reply with quote

thanks for the help, I will try...
mlkushan



Joined: 16 Nov 2008
Posts: 22
Location: Sri Lanka

View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger

Sample code to generate two 40KHz PWM signals
PostPosted: Tue Dec 02, 2008 12:20 am     Reply with quote

Hi,

Check this code segment. This works fine. Hope this will be helpful to you also. This generates 40KHz PWM signals on both PIN_C1 and PIN_C2.

Thanks.

Code:

#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES WRT_50%                  //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main()
{
   int16 pwm_duty = 50;              //to get  a higher resolution
   
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_1,24,1);
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   set_pwm1_duty(pwm_duty);
   set_pwm2_duty(pwm_duty);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
   while(1);

}

_________________
Kushan Sharma
[email protected]
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