单片机: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了。
|