请教如何用4M的MCU IO模拟产生2K PWM

2019-12-10 18:32发布

请教如何用4M的MCU IO模拟产生2K  PWM
占空比0-100%可调,分100阶, 主函数中任务还有AD扫描检测 1ms扫描检测一次.
这个产品主要用于PWM调光用,频率太低了 会闪,所以至少要2K的频率
但是芯片的速度又有限制,大家有什么好的办法。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
Gorgon_Meducer
1楼-- · 2019-12-13 01:00
主循环里跑个计数器……就是不不停的自增的那种,然后搞个简单的变量去比较匹配……
一个简单的PWM模拟就搞定了。

楼主的2K其实只是一个柔性的要求……真正刚性的是100阶的精度而已……那么小气干啥,搞个128的……
也就是


  1. uint_fast8_t chCounter = 0;
  2. uint_fast8_t chThreshold = 64;

  3. while(1) {

  4.     chCounter++;
  5.     chCounter &= 0x7F;

  6.     if (chCounter > chThreshold ) {
  7.          set_io_high();
  8.     } else {
  9.          set_io_low();
  10.     }
  11. }
复制代码
原理就是这样,至于其它任务,做成非阻塞的就行了……

记得开最高的性能优化……
剩下看你的基本功了。
szxszx
2楼-- · 2019-12-13 05:55
innovision 发表于 2019-5-23 14:27
有没有定时器中断可以用呢?
如果有的话,设定1个500us的定时中断。
在中断程序中,进行判断。

好方法,学习了

一周热门 更多>