对了,请教一下,在7位pwm输出这里, 文档说:
PCA_PWMn 寄存器中的EBSn[1:0]设置为01时,PCA模块n工作于7位PWM 模式,此时将10,CL[6:01}与捕获寄存器{EPCnL,CCAPnL[6:0]}进行比较。当PCA 模块工作于7位PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[6:0]}进行设置。当{0,CL[6:0]}的值小于{EPCnL,CCAPnL[6:0]}时,输出为低电平;当{0,CL[6:0]}的值等于或大于{EPCnL,CCAPnL[6:0]}时,输出为高电平。当CL[6:0]的值由 7F变为00溢出时,{EPCnH,CCAPnH[6:0]}的内容重新装载到{EPCnL,CCAPnL[6:0]}中。这样就可实现无干扰地更新 PWM。
我这里有点晕,不明白, {EPCnL,CCAPnL[6:0]} 这个 不是一共8位了,而不是7位, 我现在是设置是 EPCnH 是0 , CCAPnH 是设置了7位,目前工作的是正常的。
我理解为 即是:
{EPCnL,CCAPnL[6:0]} == {0,CCAPnL[6:0]},
因为EPCnH为0.
但是我有点不解的是,
如果我设置 EPCnH 为1, 那么,
EPCnL 也会给重载成1, 即 :
{EPCnL,CCAPnL[6:0]} == {1,CCAPnL[6:0]},
那么,
{0,CL[6:0]} 和 {EPCnL,CCAPnL[6:0]} 比较, 等效于 {0,CL[6:0]} 和 {1,CCAPnL[6:0]},
那么,无论CCAPnH 设置任何值,
{0,CL[6:0]} 不是永远比 {1,CCAPnL[6:0]} 小? !!!!
即是,如果 EPCnH 为1 , 那么这个pwm 输出 ,无论你如何调 CCAPnH , 这个输出永远低电平? !!!
感觉不对劲, 我是有什么地方理解错了吧? 请指教一下!!谢谢!
关于 EPCnH和EPCnL,文档是这样说的:
EPCnH:PWM 模式下,重载值的最高位(8位PWM 的第9位,7位PWM 的第8位,6位PWM 的第7
位,10位PWM 的第11位) EPCnL:PWM模式下,比较值的最高位(8位PWM的第9位,7位PWM的第8位,6位PWM的第7 位,10位PWM的第11位)
17.3.4.5 如何控制PWM 固定输出高电平/低电平 当PCA_PWMn &=OxCO,CCAPnH=0x00时,PWM固定输出高电平当 PCA_PWMn|= Ox3F,CCAPnH= OxFF 时,PWM固定输出低电 |