慎用Proteus7.5 SP3和Proteus7.4 SP3模拟SPWM
最近做PIC单片机的SPWM,用TMR2定时器中断后改变占空比结果发现Proteus7.5 SP3和Proteus7.4 SP3只要程序在中断中改变占空比就完全没有PWM波形输出,找了2天原因也没找到,拿去实际电路一试却完全正常。
然后装回Proteus7.2 SP6模拟,也一切正常。 我用AVR模拟SPWM,或者多路输出PWM,版本为Proteus 7.1,也发现了在中断里面修改OCR的值,不一定能成功。另外发现TIMSK不能在中断里面关闭自己。例如
SIGNAL(SIG_OUTPUT_COMPARE1B)
{
OCR1B=ocr_2;//更新OCR1B
//更新之后立即禁止该中断
// TIMSK &= !(1<<OCIE1B);
}
//TC1的A匹配中断,不应该用来更新B的OCR1B
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
OCR1A=ocr_1;//更新OCR1A
// TIMSK &= !(1<<OCIE1A);
}
我的本意是在外部更新了OCR值之后立即开放中断,中断修改之后立即关闭中断,节约CPU时间。
结果发现PWM波形压根就不变,注释掉TIMSK关闭之后就好了。
页:
[1]