基于累加的PDM算法的原理
- 基于累加的PDM算法(2)
PDM编码原理如下:
单片机能输出Sin(t)吗?能,DA。
没有DA怎么办?PWM。
没有PWM怎么办?
事情就是这么来的。20多年前,不要说单片机内没有PWM,而且当时的MCS-51系列内连Timer2还没有呢。这个算法就是20多年前逼出来的。
下面看我怎样在数字端口输出SQRT(0.5)= 0.70710678…。
假设我们要输出实数值x,x在[0,1)。
我们只需要一个变量存累计数,事实上,我们只须保存尾数,不妨就叫它为Mantissa。Mantissa可以有[0,1)范围内的任意初始值。
下面一段程序是在定时中断内执行的。中断间隔是由你系统的需要和MCU的能力确定的。
Timer_ISR: