在产品设计中用到PWM的一个功能,需要对PWM通道输出做出精准控制。想实现的功能是:在命令发出时立刻终止当前通道的PWM输出周期,同时需要立刻再开启一个新的输出周期。目的是可以随时改变占空比对电磁阀开启时间做出精准无延时控制。
现在能实现的功能:开启一个新的PWM输出周期只能在当前PWM输出周期结束后下一个周期开始时才可以。问题是如果我的PWM周期为10MS,如果我的控制指令是在该PWM输出周期刚开始时发出的,PWM要到10MS之后结束前一个周期才能执行我刚才发出的指令。这样就会造成有接近10ms的延时。现在的控制策略:用PWM通道的周期作为主程序的循环周期,10MS的周期,查询PWM通道计数器的值,在PWM计数器走到8MS时运行主程序并输出PWM通道控制,这样在下一个周期开始时,就可以执行新的PWM通道赋值,这样延时基本上在1MS左右。这个策略接近我原来用NXPs12的控制效果了,但是还是有差异。不能做到完全相同。
|