STC进行pwm互补输出扫频时波形缺失
通过影子寄存器
单片机:STC8H1K17
功能: 1、输出40~70 khz的互补pwm。
2、对互补pwm进行扫频,初始化定时器0每100us进行一次中断,每次中断改变pwm的ARR值进行扫频,扫频时长为10ms。
3、在扫频周期内控制互补PWM的开启时间进行功率控制。
问题描述:
在进行pwm扫频的过程中,使用示波器发现图像存在缺失。

图1.互补pwm波形缺失图
通过示波器可以观察到5ms内未出现波形显示,这对程序来说无疑是一个很严重的漏洞。在重复调试的过程中发现这种缺失波形的情况非常随机。
下面要提到一个很重要的寄存器:影子寄存器

图2.寄存器时序图
- 可在在两种模式下写自动重载寄存器:
- 自动预装载已使能(PWMA CR1 寄存器的 ARPE 位为 1)。在此模式下,写入自动重载寄存器的数据将被保存在预装载寄存器中,并在下一个更新事件(UEV)时传送到影子寄存器。
- 自动预装载已禁止(PWMA CR1 寄存器的 ARPE 位为0)。在此模式下,写入自动重载寄存器的数据将立即写入影子寄存器。
通过AI可以搜索到影子寄存器的作用:
1.数据备份功能
影子寄存器可以作为主寄存器的数据备份。在系统运行过程中,如果主寄存器因为硬件故障(如寄存器芯片的损坏)、软件错误(如寄存器被错误的指令覆盖)等原因导致数据丢失或损坏,影子寄存器中存储的数据可以用来恢复主寄存器的内容。例如,在一个关键的控制系统中,如飞机的飞行控制系统,寄存器中存储着重要的飞行参数。影子寄存器可以定期保存这些参数的副本,当主寄存器出现问题时,通过影子寄存器中的数据可以迅速恢复系统状态,确保飞行安全。
2.错误检测与纠正
影子寄存器可以用于检测和纠正错误。系统可以在一定的时间间隔内或者在特定的操作之后,比较主寄存器和影子寄存器的内容。如果两者不一致,说明在这段时间内寄存器数据可能出现了错误。然后可以根据具体的错误情况采取纠正措施,如重新读取数据、执行错误纠正算法等。这种机制可以有效提高系统对数据错误的容忍度,增强系统的健壮性。
在单片机进行多个中断时,数据可能会由于中断无法及时退出而导致丢失,通过将PWMA_CR1的ARPE位置1开启影子寄存器最后将缺失的波形“找回来了”。

图3.互补pwm波形图
更多推荐



所有评论(0)