MSP430:输入捕获

2020-07-03来源: eefocus关键字:MSP430  输入捕获

在做超声模块时用到



 1 //捕获上升沿

 2 void Capture_Pos(void)

 3 {

 4       P2SEL |= Echo;    //选择P23作为捕捉的输入端子    Timer1_A

 5 

 6       //TA1CCTL1 |=CM_3+SCS+CAP+CCIE;  //上下沿都触发捕捉,用于测脉宽,同步模式、时能中断  CCI1A

 7 

 8       TA1CCTL1 |=CM_1+SCS+CAP+CCIE;  //上升沿触发捕捉,同步模式、时能中断  CCI1A

 9 

10       TA1CTL |= TASSEL1+MC_2;  //选择SMCLK时钟作为计数时钟源,不分频   增计数模式不行,必须连续计数模式

11 

12 }

//捕获上升沿


 1 //捕获下降沿

 2 void Capture_Neg(void)

 3 {

 4       P2SEL |= Echo;    //选择P23作为捕捉的输入端子    Timer1_A

 5 

 6       TA1CCTL1 |=CM_2+SCS+CAP+CCIE;  //下降沿触发捕捉,同步模式、时能中断  CCI1A

 7 

 8       TA1CTL |= TASSEL1+MC_2;  //选择SMCLK时钟作为计数时钟源,不分频   增计数模式不行,必须连续计数模式

 9 

10 //      TA1R=0;

11 

12 }

//捕获下降沿


 1 #pragma vector=TIMER1_A1_VECTOR      //Timer1_A CC1  的中断向量

 2 

 3 __interrupt void Timer_A1(void)

 4 

 5 {

 6     unsigned int count;

 7     char countH,countL;

 8     float mile;

 9     UCHAR shi[2];

10        //的方法进行判断是哪一个中断源产生的中断

11 

12   switch(TA1IV)    //如果是Timer1_A CC1产生的中断

13 

14   {

15 

16     case 2:      // CCR1 not used   捕获/比较器1

17 

18     {

19         if(CaptureFlag==0)

20         {

21 //            uart_send_ch('H');

22             CaptureFlag=1;

23             Capture_Neg();

24         }

25         else if(CaptureFlag==1)

26         {

27             /*

28              * 声速340m/s = 34cm/ms;

29              * distance = 34/2*time

30              * time=count/1000 (ms) 认为频率为1Mhz

31              * */

32 //            uart_send_ch('L');

33             count=TA1CCR1;

34 //            countL=(char)(count&0xff);

35 //            countH=(char)(count>>8);

36             mile=(float)count;

37             mile=mile/1000*17;

38             distance=(char)mile;

39             P1OUT ^= GRN_LED;

40             uart_send_ch(distance);

41 //            shi[0]=distance/10+0x30;

42 //            shi[1]=distance%10+0x30;

43 //            OLED_SSD1306_Display8x16Str(0,80,&shi[0]);

44 //            OLED_SSD1306_Display8x16Str(0,96, "cm");

45             CaptureFlag=2;

46 //             uart_send_ch(distance);

47 //            uart_send_ch(shi[0]);

48 //            uart_send_ch(shi[1]);

49 //            CaptureFlag=0;

50 //            Capture_Pos();

51 

52         }

53 

54 

55         break;

56 

57      }

58 

59     case 4:break;  // CCR2 not used    捕获/比较器2

60 

61     case 10:break; // overflow  定时器溢出

62 

63    }

中断处理


中断处理只需要记住结果,内部逻辑代码跟模块有关


关键字:MSP430  输入捕获 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic502086.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:msp430f2618捕获方波
下一篇:【MSP430】16 * 16 汉字点阵

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430实现计时器的源代码
和上一篇文章一样,用到了 TM1638。计时器初值设为 23:57:45,计时到 23:59:59 时重置为 0点 0分 0秒。(和上次的定时器一样,主函数中的delay是我自己写的,是为了便于调试,并没有真正起到延时1s的作用)源の代码:#include "TM1638.h"#include "msp430f6638.h"#include "stdint.h"uint8_t num[8];    //各个数码管显示的值uint8_t led_flag[8];const uint8
发表于 2020-07-25
MSP430f5529之PWM控制舵机程序
#include <msp430.h>                        //函数库int sum=0;                                  //全局变量int main(void){  volatile unsigned int i;     
发表于 2020-07-25
msp430超声波测距源程序 1602显示
单片机源程序如下:#include <msp430x14x.h>#include "cry1602.h"uchar tishi[]={"the distance is:"};uchar geshi[]={".cm"};//26.2cmuchar  num[]={"0123456789 "};uchar Edge=1;uint RiseCapVal;   //上升沿时刻捕获值存放变量//uint TA_Overflow_Cnt; //TA溢出次数存放变量,可能距离远超过65535unsigned long int
发表于 2020-07-25
MSP430单片机定时器TA中断 程序
程序1#include  <msp430x41x.h>void main(void){  WDTCTL = WDTPW + WDTHOLD;                       // 停止看门狗  FLL_CTL0 |= XCAP18PF;                         // 配置晶振负载电容  P1DIR
发表于 2020-07-25
msp430f5529 MCP4725程序
//**************************************//I2C起始信号//**************************************void I2C_Start(){    SDAOUT;                  //数据线设为输出方向    SDA1;                   &
发表于 2020-07-25
msp430f5529 RC522射频卡程序
;   SDA p2.2    SCK P2.7    MOSI P3.3    MISO p3.4    IRQ 不接    RST p2.3连接好上述引线后,能实现以下功能:1.PC发送字符A,读出卡的型号和UID信息。2.PC发送字符F,单次寻卡模式,接触一次显示一次卡的型号信息。*/#include "msp430.h"#include "PIN_DEF.H"#include "RC522.H"#include "UART_Func.h"//串口已
发表于 2020-07-25
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved