swapan
Full Member level 4
- Joined
- Feb 20, 2009
- Messages
- 204
- Helped
- 27
- Reputation
- 54
- Reaction score
- 24
- Trophy points
- 1,298
- Location
- Kolkata
- Activity points
- 2,839
Hi Friends,
I am taking a closer look into the valued topic on "Generation of sine wave using SPWM in PIC16F684" by courtesy Mr. Tahmid Mahbub. As I am very new to C language, I am trying to get the idea line by line. I have some query on the code. Any help from friends warmly welcome. Please see the code given by Mr. Tahmid. Once TRISC is set as 0x3F. Again the TRISC is set as 0x00. Here I could not get the idea.
regards,
swapan
I am taking a closer look into the valued topic on "Generation of sine wave using SPWM in PIC16F684" by courtesy Mr. Tahmid Mahbub. As I am very new to C language, I am trying to get the idea line by line. I have some query on the code. Any help from friends warmly welcome. Please see the code given by Mr. Tahmid. Once TRISC is set as 0x3F. Again the TRISC is set as 0x00. Here I could not get the idea.
regards,
swapan
Code:
unsigned char sin_table[32]={0,25,49,73,96,118,137,
159,177,193,208,220,231,239,245,249,250,249,245,
239,231,220,208,193,177,159,137,118,96,73,49,25};
unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ;
unsigned int TBL_temp;
unsigned char DUTY_CYCLE;
void interrupt(){
if (TMR2IF_bit == 1){
TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ;
if (TBL_POINTER_NEW < TBL_POINTER_OLD){
CCP1CON.P1M1 = ~CCP1CON.P1M1; //Reverse direction of full-bridge
}
TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11;
DUTY_CYCLE = TBL_POINTER_SHIFT;
CCPR1L = sin_table[DUTY_CYCLE];
TBL_POINTER_OLD = TBL_POINTER_NEW;
TMR2IF_bit = 0;
}
}
void main() {
SET_FREQ = 410;
TBL_POINTER_SHIFT = 0;
TBL_POINTER_NEW = 0;
TBL_POINTER_OLD = 0;
DUTY_CYCLE = 0;
ANSEL = 0; //Disable ADC
CMCON0 = 7; //Disable Comparator
TRISC = 0x3F; // [U][COLOR="#FF0000"]Here is one setting of TRISC.[/COLOR][/U]
CCP1CON = 0x4C;
TMR2IF_bit = 0;
T2CON = 4; //TMR2 on, prescaler and postscaler 1:1
while (TMR2IF_bit == 0);
TMR2IF_bit = 0;
TRISC = 0; // [U][COLOR="#FF0000"]Another setting of TRISC is here.[/COLOR][/U]
TMR2IE_bit = 1;
GIE_bit = 1;
PEIE_bit = 1;
while(1);
}