snjugunachege
Newbie level 1
hi all out there...am an electronics student and doing my project. i am using pic 18f4431 microcontroller to produce two sinusoidal pulse width modulated signals that i will use to control my H bridge so that i can construct a simple inverter. i have written some code using ccs but on simulating on proteus i am not getting the required output. the code that i have written is shown here. i need your expert advice if you can i will greatly appreciate. i am new to PICs.
#if defined(__PCM__) // preprocessor directive that chooses the compiler
#include <18F4431.h> // preprocessor directive that selects the chip PIC16F4431
#fuses HS,NOWDT,NOPROTECT,NOLVP // preprocessor directive that defines fuses for the chip
#use delay(clock=40000000) // preprocessor directive that specifies the clock speed
#elif defined(__PCH__) // same as above but for the PCH compiler and PIC18F4431
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=40000000)
#endif
#int_TIMER0//This function is called when timer 0 overflows
void clock_isr()
{
int index=0;
char wavetable[]={0x7F,0x95,0xAB,0xBF,0xD1,0xE1,0xED,0xF7,0xFD,0xFF,0xFD,0xF7,
0xED,0xE1,0xD1,0xBF,0xAB,0x95,0x7F,0x69,0x53,0x3F,0x2D,0x1D,
0x11,0x07,0x01,0x00,0x01,0x07,0x11,0x1D,0x2D,0x3F,0x53,0x69,0x7F
};
set_pwm1_duty(50*wavetable[index]);
index++;
if(index>37)
index=0;
}
void main()
{ // main function
setup_ccp1(CCP_PWM); //CONFIGURE CCP1 AS A PWM
setup_power_pwm(PWM_CLOCK_DIV_64| PWM_FREE_RUN |PWM_DEAD_CLOCK_DIV_8|PWM_UPDATE_ENABLE,
1,65569,1020,0,0,50);//SETTING UP THE POWER PWM MODULE
setup_timer_2(T2_DIV_BY_1,200,1);
set_timer2(0);
setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_OFF,PWM_OFF,PWM_OFF); //CONFIGURING THE PWM OUTPUT PINS
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_BIT);
set_timer0(44);
enable_interrupts(GLOBAL);
while (TRUE);
}
#if defined(__PCM__) // preprocessor directive that chooses the compiler
#include <18F4431.h> // preprocessor directive that selects the chip PIC16F4431
#fuses HS,NOWDT,NOPROTECT,NOLVP // preprocessor directive that defines fuses for the chip
#use delay(clock=40000000) // preprocessor directive that specifies the clock speed
#elif defined(__PCH__) // same as above but for the PCH compiler and PIC18F4431
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=40000000)
#endif
#int_TIMER0//This function is called when timer 0 overflows
void clock_isr()
{
int index=0;
char wavetable[]={0x7F,0x95,0xAB,0xBF,0xD1,0xE1,0xED,0xF7,0xFD,0xFF,0xFD,0xF7,
0xED,0xE1,0xD1,0xBF,0xAB,0x95,0x7F,0x69,0x53,0x3F,0x2D,0x1D,
0x11,0x07,0x01,0x00,0x01,0x07,0x11,0x1D,0x2D,0x3F,0x53,0x69,0x7F
};
set_pwm1_duty(50*wavetable[index]);
index++;
if(index>37)
index=0;
}
void main()
{ // main function
setup_ccp1(CCP_PWM); //CONFIGURE CCP1 AS A PWM
setup_power_pwm(PWM_CLOCK_DIV_64| PWM_FREE_RUN |PWM_DEAD_CLOCK_DIV_8|PWM_UPDATE_ENABLE,
1,65569,1020,0,0,50);//SETTING UP THE POWER PWM MODULE
setup_timer_2(T2_DIV_BY_1,200,1);
set_timer2(0);
setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_OFF,PWM_OFF,PWM_OFF); //CONFIGURING THE PWM OUTPUT PINS
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64|RTCC_8_BIT);
set_timer0(44);
enable_interrupts(GLOBAL);
while (TRUE);
}