AnwarB
Newbie level 4
Hi all
On the subject of Tahmid
tahmidmc.blogspot.com/2012/10/generation-of-sine-wave-using-spwm-in_10.html
Talk about generating a sine wave with SPWM in the PIC16F684
Feedback added here
tahmidmc.blogspot.com/2012/11/feedback-in-sine-wave-inverter-pic16f.html
To be like this
And on the topic of Thamed
Talk about Sine Wave Generation with "Fast PWM Mode" of AVR - using ATmega16
I tried adding a feedback to it and it stopped at ADC pins
Please help with that as my experience is not enough
This is what I modified, is it correct?
I am doing an experiment on the ATmega8
Thank
On the subject of Tahmid
tahmidmc.blogspot.com/2012/10/generation-of-sine-wave-using-spwm-in_10.html
Talk about generating a sine wave with SPWM in the PIC16F684
Feedback added here
tahmidmc.blogspot.com/2012/11/feedback-in-sine-wave-inverter-pic16f.html
To be like this
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 const unsigned char sin_table[416]= { 0,16,33,49,64,79,93,106,118,129,138,146,153,158,161,163,163,161,158,153,146,138,129,118,106,93,79,64,49,33,16,0, //65% 0,17,34,51,67,82,97,110,122,134,143,152,158,164,167,169,169,167,164,158,152,143,134,122,110,97,82,67,51,34,17,0, //67.5% 0,18,35,52,69,85,100,114,127,138,149,157,164,169,173,175,175,173,169,164,157,149,138,127,114,100,85,69,52,35,18,0, //70% 0,18,36,54,71,88,103,118,131,143,154,163,170,175,179,181,181,179,175,170,163,154,143,131,118,103,88,71,54,36,18,0, //72.5% 0,19,38,56,74,91,107,122,136,149,160,169,176,182,186,188,188,186,182,176,169,160,149,136,122,107,91,74,56,38,19,0, //75% 0,20,39,58,77,94,111,126,141,153,165,174,182,188,192,194,194,192,188,182,174,165,153,141,126,111,94,77,58,39,20,0, //77.5% 0,20,40,60,79,97,114,130,145,158,170,180,188,194,198,200,200,198,194,188,180,170,158,145,130,114,97,79,60,40,20,0, //80% 0,21,41,62,81,100,118,134,149,163,175,185,193,199,204,206,206,204,199,193,185,175,163,149,134,118,100,81,62,41,21,0, //82.5% 0,22,43,64,84,103,122,139,154,168,181,191,200,206,211,213,213,211,206,200,191,181,168,154,139,122,103,84,64,43,22,0, //85 0,22,44,66,86,106,125,143,159,173,186,197,205,212,216,219,219,216,212,205,197,186,173,159,143,125,106,86,66,44,22,0, //87.5% 0,23,45,67,89,109,129,147,163,178,191,202,211,218,222,225,225,222,218,211,202,191,178,163,147,129,109,89,67,45,23,0, //90% 0,23,46,69,91,112,132,150,167,183,196,207,217,224,228,231,231,228,224,217,207,196,183,167,150,132,112,91,69,46,23,0, //92.5% 0,24,48,71,94,116,136,155,173,188,202,214,223,230,235,238,238,235,230,223,214,202,188,173,155,136,116,94,71,48,24,0, //95% }; unsigned int TBL_POINTER_NEW, TBL_POINTER_OLD, TBL_POINTER_SHIFT, SET_FREQ; unsigned int DUTY_CYCLE, FBV, FB_Step, adder; void interrupt() { if (TMR2IF_bit == 1){TBL_POINTER_NEW = TBL_POINTER_OLD + SET_FREQ; if (TBL_POINTER_NEW < TBL_POINTER_OLD){P1M1_bit = ~P1M1_bit;} TBL_POINTER_SHIFT = TBL_POINTER_NEW >> 11; DUTY_CYCLE = TBL_POINTER_SHIFT + adder; 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; FB_Step = 0; adder = 0; T1CON = 0b00001001;//1:1 Prescale Value, Enables Timer1 ANSEL = 0b00000001;//RA0/AN0 as analogue input. TRISA = 0b00000001;//PortA as output except RA0 as input ADCON0 = 0b00000011;//Analog Channel (AN0) ADCON1 = 0b01100000;//FOSC/64 CMCON0 = 7; PR2 = 249; TRISC = 0x3F; CCP1CON = 0x4C; TMR2IF_bit = 0; T2CON = 4; while (TMR2IF_bit == 0); TMR2IF_bit = 0; TRISC = 0; TMR2IE_bit = 1; GIE_bit = 1; PEIE_bit = 1; ADC_Init(); while(1) { FBV = ADC_Get_Sample(0); if (FBV < 512){FB_Step++; if (FB_Step > 12) FB_Step = 12; } else { if (FB_Step > 0){FB_Step--;}} adder = FB_Step << 5; TMR1L = 0; TMR1H = 0; T1IF_bit = 0; } }
And on the topic of Thamed
Talk about Sine Wave Generation with "Fast PWM Mode" of AVR - using ATmega16
I tried adding a feedback to it and it stopped at ADC pins
Please help with that as my experience is not enough
This is what I modified, is it correct?
I am doing an experiment on the ATmega8
Thank
Attachments
Last edited by a moderator: