30.6.3.3 抖动操作
TCC 支持在16,32,64PWM周期帧内的脉宽或周期抖动。
在一个由几个PWM周期组成的帧里抖动是由额外的一些扩展时钟周期组成,这提高了输出脉宽或周期的平
均值精度。额外的时钟周期被添加上一些比较匹配信号,一次一个时间,通过“蓝噪声”的过程,最大限度
地减少对产生抖动图案忽隐忽现。
抖动使得能够提高平均输出脉冲宽度或周期的精度。
抖动是通过向CTRLA寄存器中的相应增强分辨率位写1来实现的(CTRLA.RESOLUTION)。
。DITH4 每16PWM帧使能抖动
。DITH5 每32PWM帧使能抖动
。DITH6 每64PWM帧使能抖动
DITHERCY比特在COUNT,PER和CCx定义了插入到帧中的扩展周期的数量(DITHERCY比特从独立的COUNT,PER或者
CCx寄存器)。COUNT,PER,CCx剩余的比特定义自己的比较值。
伪代码,给予额外的周期插入的周期是:
int extra_cycle(resolution, dithercy, cycle){
int MASK;
int value
switch (resolution){
DITH4: MASK = 0x0f;
DITH5: MASK = 0x1f;
DITH6: MASK = 0x3f;
}
value = cycle * dithercy;
if (((MASK & value) + dithercy) > MASK)
return 1;
return 0;
}
1.7.3.1:关于周期抖动
写PER里边的DITHERCY将导致一个平均PWM周期,配置通过下列公式:
如果DITH4模式使能,最后4个比特指示出了相应的DITHERCY的值,余下的比特是相应的RER/CCx或COUNT值。
可以用以下公式计算该脉宽调制分辨率:
1.7.3.3.2:关于脉宽的抖动
在CCx中写入DITHERCY将导致由下式构成的平均PWM脉冲宽度:
|