單片機:PIC18F45K80
編輯環(huán)境:MPLAB IDE V8.92
編譯器:XC8 V1.45
一個逆變器項目,輸出AC 0~15v 電壓連續(xù)可調(diào),用SPWM波來實現(xiàn),現(xiàn)在是產(chǎn)生SPWM波的數(shù)據(jù)放在一個數(shù)組里調(diào)用,為了省DATA空間用const修飾了,在主程序里調(diào)用沒事,但這個必須要放在中斷里去賦值調(diào)PWM。中斷里調(diào)用數(shù)組賦值全變0了,把const去掉就好了。
const uint spwm_data[]=
{130,146,162,177,192,206,218,230,239,247,253,257,259,259,257,253,247,239,230,218,206,192,177,162,146,
130,113,97,82,67,53,41,29,20,12,6,2,0,0,2,6,12,20,29,41,53,67,82,97,113};
if(TMR0IF == 1)
{
TMR0IF = 0;
TMR0 = 57;
pwm = spwm_data[x];
DC2B0 = pwm;
DC2B1 = pwm>>1;
CCPR2L = pwm>>2;
x++;if(x>=50){x=0;}
}
就是這句
pwm = spwm_data[x];這個數(shù)會變成0,如果數(shù)組不用const修飾就沒問題。(我用數(shù)碼管在中斷里調(diào)用顯示過,確實變成0了。)
有知道的大神么 為什么const修飾的數(shù)據(jù)放在中斷里使用就變成0了。
|