本人是DSP28335的使用者,学习使用了一年多了,今天突然发现了一个问题一直没有考虑仔细,可能是我对PWM还是理解不够深入,还请大神们帮忙解惑!问题是这样的:
PWM的中断触发可以设定在时基计数器归零的时候触发,假设计数模式选择增减计数模式,当中断触发后,程序进入PWM中断服务子程序,同时,时基计数器开始从零向上计数,而中断服务子程序中要经过采样,滤波,计算等一系列的计算后在某一时刻将CMP值送入CMP寄存器,如果这个值较小,而时基计数器当前计数值已经超过了CMP的值,那么这个周期递增计数的匹配时间就不会发生了是吗?
举例:PWM周期设定为100us,增减计数模式,计数值从0->3750->0 ,假设这个周期我要送的CMP值是100,而当我算出CMP的值得时候,时基计数器TBCTR的值已经到了300,那么这个PWM周期的匹配事件就不会发生了?递减计数的时候会不会发生匹配事件呢?如果会那么这个周期只发生一次电平翻转,这样是不是不合理呢?
这个问题从想起到现在查了些许资料还没有解决,还请资深人士帮忙解答!!!
Igor An:
这个问题提的很深入,你的分析是对的。但前提是你把PWM的CMP寄存器更新方式设置为immediate,就是算出结果后立即更新,这样的话如果计算时间比较长,那么能够发出的最大或者最小占空比是受限于计算时间长短的。这种配置方式会在一些实时性要求极高的应用中使用,比如伺服控制器。为了应对这种应用,我们用28377D芯片,做出了1us电流环,来最大限度缩短计算时间,同时增大可发出的PWM范围。可以去TI官网搜索一下1us电流环。
因为有这样的限制存在,所以大多数应用中会配置为下一个PWM时基的0或者周期事件处更新CMP值,也就是认为加入一个PWM周期的延迟。
本人是DSP28335的使用者,学习使用了一年多了,今天突然发现了一个问题一直没有考虑仔细,可能是我对PWM还是理解不够深入,还请大神们帮忙解惑!问题是这样的:
PWM的中断触发可以设定在时基计数器归零的时候触发,假设计数模式选择增减计数模式,当中断触发后,程序进入PWM中断服务子程序,同时,时基计数器开始从零向上计数,而中断服务子程序中要经过采样,滤波,计算等一系列的计算后在某一时刻将CMP值送入CMP寄存器,如果这个值较小,而时基计数器当前计数值已经超过了CMP的值,那么这个周期递增计数的匹配时间就不会发生了是吗?
举例:PWM周期设定为100us,增减计数模式,计数值从0->3750->0 ,假设这个周期我要送的CMP值是100,而当我算出CMP的值得时候,时基计数器TBCTR的值已经到了300,那么这个PWM周期的匹配事件就不会发生了?递减计数的时候会不会发生匹配事件呢?如果会那么这个周期只发生一次电平翻转,这样是不是不合理呢?
这个问题从想起到现在查了些许资料还没有解决,还请资深人士帮忙解答!!!
user5229665:
也是第一次注意到这个问题,为你的思考习惯点赞。顺便学习了。