本人刚接触PIC(我用的IC是PIC16F883),有一个关于PWM占空比的疑问始终没找到答案,希望前辈指点。
在PWM模式,CCPRxH寄存器与一个2位的内部锁存器用于为10位的PWM占空比数据提供一个10位的缓冲,
在TMR2等于PR2的时候芯片会自动将CCPRxL与CCPxCON[4:5]中的10位数据加载到这个缓冲区。
我的疑问是:
假设我的当前10位占空比是4 也就是 (高8位)CCPRxL = 1,(低2位)CCPxCON[4:5] = 0;
在程序执行过程中我需要将占空比调整为 3,理所当然的需要两个步骤来完成,
1、CCPRxL = 0, //将高8位改为0
2、CPxCON[4:5] = 3;//将低2位改为3
如果在我执行了第1个步骤 CCPRxL = 0,还没有来得及执行第二个步骤时,刚好TMR2等于PR2,此时芯片自动将当前的10位数据加载到CCPRxH寄存器与一个2位的内部锁存器。此时就会产生一个错误的占空比。
不知道我是我的理解对不对,如果事实也是这样的话,那么在设计当中有什么办法避免这种现象出现?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>