PIC的PWM模块学习经验
来源:互联网 发布:基本公共卫生考核软件 编辑:程序博客网 时间:2024/05/22 03:31
今天我们做超声波测距模块,用的是SONY的CX20106A处理接受的信号,要求是标准的40KHz方波,我们打算用PIC自带的PWM模块做40KHz的方波。以前也用过PWM,不过只是普通的用PWM输出信号来控制各类电机,对其输出信号周期、脉宽和占空比没有过高的要求。
今天需要用到很精确的周期跟脉宽,这从而让我们发现了很多问题,也学到了很多
1、PWM周期 = 4T * (TMR2预分频值)*(PR2+1) 这是PIC16F877芯片手册上的公式,开始我们按照北航出版社的《PIC单片机原理及应用(第三版)》上的公式计算周期,总是出不来准确的值,后来再看877的英文手册的时候才发现这本书的PWM周期公式写错了,把(PR2+1)写成了PR2,这一下子就让周期差了很多。
2、在计算脉宽的时候,用到了公式 PWM高电平(脉宽)=CCPR1L:CCP1CON(Bit5~Bit4)*T*(TMR2预分频值),书中只是提到CCPR1L:CCP1CON(Bit5~Bit4)为10位脉宽寄存器,至于这个表达式什么意思并没有详细的说。
开始我们对CCPR1L:CCP1CON(Bit5~Bit4)的理解是CCPR1L是小数点之前的位数,CCP1CON(bit5~bit4)代表的CCP1X和CCP1Y的是小数点以后的位数
比如说:我们预设的脉宽是12.5uS,系统时钟周期T是4MHz,TMR2预分频值是1:1,那么根据脉宽计算公式可以算出
CCPR1L:CCP1CON(Bit5~Bit4)= 50
根据我们开始的理解,也就是需要设定CCPR1L为50,但是在烧入PIC中通过示波器检测的时候发现完全是高电平。
之后我们尝试着将CCPR1L设置为40,结果还是全高电平。
将CCPR1L设置为1后,才出现正常的矩形波。
之后我们就开始考虑我们对CCPR1L:CCP1CON(Bit5~Bit4)的理解的问题。
我们算出来的CCPR1L:CCP1CON(Bit5~Bit4)= 50 代表的意思是CCPR1L跟CCP1CON(bit4——bit5)组成的10位等于50,也就是说在对CCPR1L赋值的时候,如果我们设定了50,那么在CCPR1L:CCP1CON(Bit5~Bit4)中CCPR1L需要升高两位,数值会扩大4倍,
故CCPR1L:CCP1CON(Bit5~Bit4)的值变成了50*4等于200,又因为整个周期为50uS,所以实际输出波形完全是高电平了。
CC
- PIC的PWM模块学习经验
- PIC单片机输出比较(PWM)模块介绍
- PIC学习 SPI模块部分
- ST17H26的PWM模块
- PIC单片机之PWM
- PIC单片机之PWM
- PIC单片机-PWM波
- PIC单片机之PWM PWM原理
- stm32的pwm学习总结
- stm32的pwm学习总结
- 学习PWM的一些总结
- pic16f877a的PWM实验学习
- AB1601 PWM模块
- 分析 ddp pwm 模块
- 使用 RPi.GPIO 模块的脉宽调制(PWM)功能
- K60定时器模块FIM的PWM,输入捕获,正交解码
- 使用 RPI.GPIO 模块的脉宽调制(PWM)功能
- Arm汇编学习笔记(二)——编写编译并执行依赖外部模块的汇编代码以及PIC代码分析
- 使用MRTG监控路由、交换设备(下)
- getHibernateTemplate().method()与getSession().method()
- 什么才是状态机?什么又是状态?
- mrtg实验
- mrtg 安装指南
- PIC的PWM模块学习经验
- RRDTOOL使用说明
- iBATIS框架技术----一个简单的应用
- 用mrtg监测win2003流量
- 迭代算法与递归算法的概念及区别
- 什么是i18n?
- 何去何从
- IDC机房实战MRTG
- MRTG (Multi Router Traffic Grapher)