單片機:PIC18F45K80
編輯環境:MPLAB IDE V8.92
編譯器:XC8 V1.45
一個逆變器項目,輸出AC 0~15v 電壓連續可調,用SPWM波來實現,現在是產生SPWM波的數據放在一個數組里調用,為了省DATA空間用const修飾了,在主程序里調用沒事,但這個必須要放在中斷里去賦值調PWM。中斷里調用數組賦值全變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];這個數會變成0,如果數組不用const修飾就沒問題。(我用數碼管在中斷里調用顯示過,確實變成0了。)
有知道的大神么 為什么const修飾的數據放在中斷里使用就變成0了。
|