本帖最后由 JackTang1994 于 2021-9-22 09:57 编辑
#申请原创# #技术资源#
前言:
PWM在直流电机调速,LED灯调亮度等场景应用非常广泛
硬件平台:PIC16(L)F1826
软件平台:MPLAB X IDE V5.5、MPLAB Code Configurator V4
PIC16(L)F1826数据手册:https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/DataSheets/41391D.pd
示例代码:
PWM_Demo.X.zip
(297.27 KB)
手册阅读
查看PWMPIC16(L)F1826芯片只有EECP1模块
EECP1模块5个功能,我们使用时可以任意只要配置好相关寄存器即可。
• Single PWM
• Half-Bridge PWM
• Full-Bridge PWM, Forward Mode
• Full-Bridge PWM, Reverse Mode
• Single PWM with PWM Steering Mode(极性相反的PWM)
这里先使用PWM输出模式:Single PWM
查看手册——PWM介绍
查看手册第24.3节,了解PWM是什么以及PIC16(L)F1826芯片是如何产生PWM的。
PWM波形
从图中可以看出定时器的PRx寄存器值就是PWM波的频率,而高电平时间就是CCPRxH寄存器和CCPxCON寄存器的Bit5、Bit4组成的10bit数值
PWM产生框图
从图中我们可以得出要生成PWM波形需要以下几个外设及相关寄存器:Timer、CCP、IO
PWM相关参数计算
此图中介绍了PWM生成需要的定时器为Timer2/4/6,但是PIC16(L)F1826芯片只有Timer2没有Timer4/6这个可以从第1章Device OverView的PIC16(L)F1826/27 PINOUT DESCRIPTION表中得到信息。此图主要是要知道PWM波形的频率和占空比计算即可。
注:这里只给出了PWM的周期,那么PWM频率就是周期的导数
死区延时
在半桥驱动的PWM模式时死区延时才有效果,其他模式死区延时是没有用的。
IO附加功能
PWM输出功能属于IO口的附加功能,需要设置相应IO口的附加功能
PWM要求
1KHZ、50%占空比、系统时钟选择16MHz
PWM参数计算
1KHz频率就是1ms的周期,所以代入到前面PWM的周期计算公式中,其中PRx为Timer2的定时值,Fosc为系统时钟。
MCC软件配置
系统时钟设置
按照以下图所示设置(关于时钟源的来源及如何设置,在定时器使用中有提到PIC16(L)F1826——定时器使用 - Microchip论坛 - PIC单片机论坛 - Microchip(微芯科技)MCU官方技术支持论坛 - 21ic电子技术开**坛)
添加Timer2外设
在Device Resources窗口中点开Timer选择按钮,点击Timer2前面的+号图标添加Timer2模块。
设置PWM频率
按照下图设置PWM周期为1ms(频率为1KHz)
添加ECCP外设点击Device Resourcs窗口的ECCP模块前面的+号或者右边Available Resources窗口中的ECCP模块前面的+号都可以添加ECCP模块
设置PWM其他参数(占空比、输出引脚等)
根据前面分析的PWM参数来配置ECCP外设参数。
然后点击左边窗口中的Generate按钮生成工程代码。
编写代码
因为这个PWM是由硬件直接完成的,也没有使用中断。所以这里我们不需要main函数中添加任何代码。编译工程
调试代码
逻辑分析仪使用
逻辑分析可以用于测试引脚的波形,并且可以对波形进行测量。
添加逻辑分析仪点击Window >> Simulator >> Logic Analyzer打开逻辑分析窗口
添加观察的引脚
向逻辑分析仪中添加需要观察的引脚,点击窗口左下角的锤子图标打开引脚添加窗口
在Logic Analyzer Settings窗口的左侧窗口中,选择P1A然后点击中间的右箭头图标,将P1A添加到右侧窗口中。最后点击OK
点击调试工具栏中的“运行”按钮,运行程序,然后再点击“暂停”按钮。即可从逻辑分析仪查看P1A上的波形如下:
设置“逻辑分析仪”参数:以运行周期计时还是实际运行时间。这里我们需要查看时间,所以选择“Real time"
//=============**结束=========**结束=============**结束===================//
*****以下图片,不知道如何删除。大家不用管与本篇**内容没啥关系,非常抱歉!^_^
|