登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. IOT
  4. MSP430
  5. 正文

使用MSP430G2553单片机捕获PWM脉冲波占空比-学习笔记

2015-05-09

这个问题解决办法还是蛮简单的,我就直接上代码了。使用MSP430G2553捕获时,只需要将定时器设置为捕获模式,并设置相关寄存器即可进行捕获。

0c3a310ac68ba578

方法一:上升沿、下降沿循环触发法计算(自命方法名,勿喷)

简介:使用一个IO口,循环捕获上升沿、下降沿、然后计数计算即可。具体操作看代码后即可明晰。

 

代码使用CCS V5 编译通过,且完美捕获频率值在(50,350)范围内,峰峰值为2.3V (0,2.3)的脉冲波。
所需变量声明:
unsigned int start,last,end,overflow,h,s;//h-pwm占空比高电平技术  s-pwm总周期计数
定时器初始化:
	TACTL=TASSEL_2+TAIE+MC_2;
	CCTL1=CM_1+SCS+CAP+CCIE;
	P1DIR&=~BIT2;
	P1SEL|=BIT2;
	TACCR1=0;
	TACCR2=0;
定时器中断函数:
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMERA1()//捕获上升沿
{

	switch(TAIV)                              //向量查询
	  { case 2:                                //捕获中断
	       if(CCTL1&CM_1)                      //上升沿
	         {
	           CCTL1=(CCTL1&(~CM_1))|CM_2;       //更变设置为下降沿触发
	           start=TACCR1;                      //记录初始时间
	           s=start-last+65536*overflow;
	           last=start;
	           overflow=0;                     //溢出计数变量复位
	         }
	       else if(CCTL1&CM_2)                 //下降沿
	        {
	         CCTL1=(CCTL1&(~CM_2))|CM_1;       //更变设置为上升沿触发
	         end=TACCR1;                        //用start,end,overflow计算脉冲宽度
	         TACTL &=~CCIFG;

	         h=end-start+65536*overflow;


	        }
	       break;
	    case 10:                               //定时器溢出中断
	       overflow++;
	       break;                              //溢出计数加1
	    default:break;
	  }

}
main()函数计算方法:
占空比=h/s
标签: 暂无
最后更新:2018-11-12

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号