liansh 发表于 2009-5-15 09:44:29

慎用Proteus7.5 SP3和Proteus7.4 SP3模拟SPWM

最近做PIC单片机的SPWM,用TMR2定时器中断后改变占空比
结果发现Proteus7.5 SP3和Proteus7.4 SP3只要程序在中断中改变占空比就完全没有PWM波形输出,找了2天原因也没找到,拿去实际电路一试却完全正常。
然后装回Proteus7.2 SP6模拟,也一切正常。

youpeng 发表于 2009-5-17 19:42:54

我用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]
查看完整版本: 慎用Proteus7.5 SP3和Proteus7.4 SP3模拟SPWM