本帖最后由 hl1200aa 于 2024-1-1 14:56 编辑
PWM的设置包括
1. 输出管脚 (已经配置)
2. 模式配置
3. pwm频率设置
4. pwm占空比设置
这次根据手册里面的例程,配置一个频率为1hz,占空比特定的pwm。
pca的计数器结构图如下
PWM_CLK = CLK_in / 64
PWM_CLK = 1
CLK_in 则是64hz
系统时钟11059200, 12分配后也远超这个频率
所以选择用T0溢出。
配置T0输出64hz,则是每15625us溢出一次
CLK_in = 64hz
最简单的6位pwm模式,
PWM_CLK = CLK_IN/64
计算得到PWM_CLK = 1
看下手册里面的例程
复制代码
- CMOD = 0x08; //PCA 时钟为系统时钟
复制代码
- CL = 0x00;CH = 0x00; //清零计数寄存器
复制代码
- CCAPM0 = 0x42; //PCA 模块 0 为 PWM 工作模式
复制代码
- PCA_PWM0 = 0x80; //PCA 模块 0 输出 6 位 PWM
复制代码
结合这张图可以看到,设置为0x80时,pwm工作在6bit模式
CH永远为0, EPC0L如果为0则可以比对,为1时,则永远为1。
在CL发生溢出时,EPC0H的值重载到EPC0L,CCAP0H的值重载到CCAP0L。
- CCAP0L = 0x20; //PWM 占空比为 50%[(40H-20H)/40H]
复制代码
占空比一般是计算高电平的时间,对于我们这个,刚好相反,低电平为亮,那就是CCAP0L/64。
如果我们设置为8,则8/64*100%=12.5%,亮的时间短灭的时间长
复制代码 最后记得打开计数开关
复制代码
|