本帖最后由 Tobey 于 2017-4-23 21:48 编辑
此内容由EEWORLD论坛网友Tobey原创,如需转载或用于商业用途需征得作者同意并注明出处
第一次真正意义上的编写PIC单片机程序,被个PWM折腾了一天,,,总算是解决了,发个帖子记录下
开发环境:
MPLAB IDE v8.92
硬件:
PIC16LF1823
调试器:
PICkit3
引脚配置描述:
RA:
RA0, RA1, RA2:调试接口
RA2:输入,接收信号
RA5:输出,片选信号
RC:
RC0:输入,检测触摸信号
RC1:输出,LED
RC2:PID,timer2_pwm信号输出引脚
RC3:输出,控制信号
原理图:
程序实现的功能:
1、当RC0引脚检测到触摸事件时通过RC1引脚翻转LED灯状态
2、配置timer2计时器的PWM模块,使RC2引脚输出1KHZ的信号
PWM配置步骤来源:
设置PWM需要计算的变量:
1、PR2, 2、 CCPR1L:CCP1CON<5:4>
依据下图所示公式计算:
提供个快捷计算方式:
(1、说明:这是一个可以自动依据设定的时钟频率、PWM频率和占空比计算出
所有相关寄存器取值的代码生成器链接,,
2、注意:该代码生成器列出的所支持的PIC单片机类型不包括PID16LF1823!
本人测试结果:生成的PR2, CCPR1L寄存器值可直接使用,T2CON的预分频值
设定有误!显示的预分频值为16,实际寄存器配置为64,需要修改!!!
CCP1CON本身并没什么毛病,生成的代码注释也已标注--确保实际使用的PWM
引脚被配置为数字输出!因此,需要检验CCP1CON的P1M<1:0>的配置是否符
合实际项目需求,以当前PCB为例,P1D(RC2)需要设置为PWM输出引脚,实际
生成的P1M<1:0>为00,不符合要求,需要将其修改为01!!!
PWM代码生成器
实现功能如图:
遇到过的问题及原因:
1、引脚配置无效: 配置位未配置(__CONFIG())
2、PWM引脚无输出:CCP1CON中的P1M<1:0>配置有误
程序源码: