• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > MSP430多路捕获问题……

MSP430多路捕获问题……

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了msp430多路数据采集,msp430捕获,msp430定时器捕获,12864液晶屏msp430,msp430系列等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:MSP430 多路捕获问题……
描述:

MSP430捕获函数代码定时器

我编了一个MSP430f169 捕获8路PWM波信号的程序。分别用定时器B的所有捕获比较寄存器以及定时器A的一个捕获比较寄存器进行捕获。结果只有TBCCR0和TBCCR1捕获的两路信号是对的,其他几路都不对。实在找不出哪出问题了,各位前辈帮我看一下。下面是代码。
主函数代码:

/*********************************************************
程序功能:分别检测加速度计模块从P4.0到P4.6端口输入的PWM波
          信号的T1和T2(T1为高电平脉宽,T2为周期),并将数
          据通过串口发送到PC(理想PWM波周期1600us情况下)
-----------------------------------------------------------
通信格式:N.8.1, 9600
-----------------------------------------------------------
**********************************************************/
#include<MSP430f169.h>
#include "UART0_Func.c"
#include "function.c"
//#define M1 16
//unsigned int cap1=0,cap2=0,N1=0,N2=0;
unsigned int cap[8]={0,0,0,0,0,0,0,0};//存放捕获是6路信号各自的上升沿时计数器的数值
unsigned int n[8]={0,0,0,0,0,0,0,0};//存放计数溢出的次数
long widthT01[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT02[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//存放每路信号的高点平宽度和周期信息
long widthT03[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT04[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT11[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT12[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT13[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT14[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT21[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT22[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT23[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT24[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT31[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT32[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT33[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
long widthT34[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//char m=0,n=0,a=0,b=0;
char m[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//用于记录每路数据已经采集了的个数,每路信号采集M1个数,
long XT1[4]={0,0,0,0};//存放8路信号取平均后的值。
long XT2[4]={0,0,0,0};
long YT1[4]={0,0,0,0};
long YT2[4]={0,0,0,0};
unsigned char data_T[34];//存放将要发送的数据
void main( void )
{
  char k1;
   // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
 //-------开晶振XT2---------
   BCSCTL1&=~XT2OFF;                //打开XT2振荡器
   do
   {
   IFG1 &= ~OFIFG;                     // 清除振荡器失效标志
   for (int i=256;i>0;i--);                     // 延时,等待XT2起振
   }
  while ((IFG1 & OFIFG) != 0);            // 判断XT2是否起振 */
   IFG1&=~OFIFG; 
  
  BCSCTL2=SELM1+SELS+DIVS0+DIVS1;//SMCLK=XT2,8分频
  P4SEL|=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6;////P4.0和P4.1作为捕获模块功能输入端输入方波
  //TBCCTL0=0;//捕获源为P4.0,即CCI0A(也是CCI0B)
  P1DIR = BIT0+BIT4;   //设置P1.0方向为输出
  P1SEL = BIT2;  //设置P1.2端口为功能模块使用
  TACTL = TACLR+TASSEL_2+TAIE+MC1;
  //==定时器A时钟信号选择SMCLK,8分频,同时设置定时器A计数模式为连续增计模式==
  TACCTL1|=CM_1+SCS+CAP+CCIE; //MC0
     //输入上升沿捕获,CCI0A为捕获信号源
  TBCCTL0|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL1|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL2|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL3|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL4|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL5|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCCTL6|=CM_1+SCS+CAP+CCIE;//上升沿捕获,同步捕获,工作在捕获模式+中断允许
  TBCTL|=TBSSEL_2+MC_2+TBIE;//选择SMCLK+连续计数模式
   //+终端允许
  InitUART();//初始化UART端口
  _EINT();//中断允许
  
  while(1)
  {
    for(k1=0;k1<M1;k1++)
    {
      XT1[0]+=widthT01[k1];
      XT2[0]+=widthT02[k1];
      YT1[0]+=widthT03[k1];
      YT2[0]+=widthT04[k1];
      XT1[1]+=widthT11[k1];
      XT2[1]+=widthT12[k1];
      YT1[1]+=widthT13[k1];
      YT2[1]+=widthT14[k1];
      XT1[2]+=widthT21[k1];
      XT2[2]+=widthT22[k1];
      YT1[2]+=widthT23[k1];
      YT2[2]+=widthT24[k1];
      XT1[3]+=widthT31[k1];
      XT2[3]+=widthT32[k1];
      YT1[3]+=widthT33[k1];
      YT2[3]+=widthT34[k1];
    }
    XT1[0]>>= 4;
    XT2[0]>>= 4;
    YT1[0]>>= 4;
    YT2[0]>>= 4;
    XT1[1]>>= 4;
    XT2[1]>>= 4;
    YT1[1]>>= 4;
    YT2[1]>>= 4;
    XT1[2]>>= 4;
    XT2[2]>>= 4;
    YT1[2]>>= 4;
    YT2[2]>>= 4;
    XT1[3]>>= 4;
    XT2[3]>>= 4;
    YT1[3]>>= 4;
    YT2[3]>>= 4;//求和取平均
    if(n[0]==0)
    {
      Hex2Dec(0,XT1,XT2,YT1,YT2,data_T);//将第一对信号放入data_T数组准备发送
      Hex2Dec(1,XT1,XT2,YT1,YT2,data_T);//第二对信号
      Hex2Dec(2,XT1,XT2
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MSP430多路捕获问题……

相关文章

  • 2017-06-05 文件透明加密
  • 2017-06-05 linux文件读写open()函数的返回值
  • 2017-06-05 us/os-ii中有关任务调度的问题
  • 2017-06-05 本人刚接触串口编程,请大家帮帮忙,指点一下,来者有分
  • 2017-06-05 PCI64-255字节的配置空间怎么访问
  • 2017-06-05 VS2008开windowsCE程序如何通过webservice连接oracle
  • 2017-06-17嵌入式系统的定义
  • 2017-06-05 TVP5150图像抖动问题
  • 2017-06-05 C51中除了数组越界还有哪些可能导致变量被异常修改
  • 2017-06-05 一个硬盘控制器在系统启动时候,到底要提供那些信息给BIOS程序,这些信息放置在内存什么位置?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求一个简单的三菱PLC程序,供学习用,谢谢!
    • 求助!!W5500死机问题。
    • 关于SetupDixxx函数,removecdrom
    • FPGA芯片的选择
    • 用s5pv210跑linux3015无限卡在kernel解压完成阶段
    • 请问你们为什么不用Objective-c?
    • 电脑通过路由器与互联网的通信IP方式
    • 请教一个单片机驱动小马达的电路
    • BluetoothDeveloperStudio产生的NRF5的源代码以后怎么使用到工程中?
    • 放分100------求武昌相关方面的兼职!!!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有