在msp430上使用AWM3300

2019-10-30来源: eefocus关键字:msp430  AWM3300  ad采样

属于msp430的ad采样的应用。由于项目需要,在中断中对AWM3300模拟输入做了阈值检测。一般使用ad采样时,不需要在中断中做此处理。


使用器件型号:msp430F169/msp430F149,AWM3300@honeywell

典型应用电路:具体看AWM3300使用手册


#include "msp430x16x.h"

#include"AWM.h"

//标注CO2的代码与AWM3300无关

double CO2_o,ADC_CO2;//CO2


double ADC_Vol_speed=0,sum,ADC_temp;

int i,gas_rate;


double gas_flow_rate(double voltage)

{

  if(voltage > VOL_SP800)                                                                                                                                            

    return (800 + (voltage - VOL_SP800)*200/(VOL_SP1000 - VOL_SP800));

  if(voltage > VOL_SP700)

    return (700 + (voltage - VOL_SP700)*100/(VOL_SP800 - VOL_SP700));

  if(voltage > VOL_SP500)

    return (500 + (voltage - VOL_SP500)*200/(VOL_SP700 - VOL_SP500));

  if(voltage > VOL_SP400)

    return (400 + (voltage - VOL_SP400)*100/(VOL_SP500 - VOL_SP400));

  if(voltage > VOL_SP300)

    return (300 + (voltage - VOL_SP300)*100/(VOL_SP400 - VOL_SP300));

  if(voltage > VOL_SP200)

    return (200 + (voltage - VOL_SP200)*100/(VOL_SP300 - VOL_SP200));

  if(voltage > VOL_SP100)

    return (100 + (voltage - VOL_SP100)*100/(VOL_SP200 - VOL_SP100));

  if (voltage > VOL_SP0)

    return (voltage - VOL_SP0)*100/(VOL_SP100 - VOL_SP0);

else

return 0;

}

void AWM3300_init(void)

{

  WDTCTL=WDTPW+WDTHOLD;

  P6SEL|=BIT0;//P6。0模拟ADC输入(上电后默认0为输入)

  ADC12CTL0 &=~ ENC;

  ADC12CTL0=SHT0_2+ADC12ON;//采样转换时间,默认参电1.5V

  ADC12CTL0|=REFON+REF2_5V;//参电选择2.5V

 // for ( i=0; i<0x3600; i++);

  ADC12CTL1=SHP;//选用采样定时器作为触发信号

  ADC12IE=BIT0;//使能1中断

  ADC12MCTL0=SREF_1;

  ADC12CTL0 |=ENC;//AD转换使能

}

int main(void)

{

  AWM3300_init();

  for(;;)

  {

    ADC12CTL0|=ADC12SC;//开始转换

    _BIS_SR(CPUOFF+GIE);

    if(ADC_Vol_speed!=0){

      gas_rate=(int)gas_flow_rate(ADC_Vol_speed*1000);

      ADC_Vol_speed=0;

    }

    

//    if(gas_rate!=0)

//    {

//     return 0;

//   }

  }

}


#pragma vector=ADC_VECTOR

__interrupt void ADC12_ISR(void)                                                          

{

  ADC_temp=(double)ADC12MEM0/(double)0xfff*2.5*2;

  if((double)ADC12MEM0>=2818){                    //ad:2818-->vol:3.44/2

    i++;

    sum+=(double)ADC12MEM0;

  }

  

  if(i>=19){

    ADC_Vol_speed=(sum/(double)0xfff)/20*2.5*2;

    sum=0;

    i=0;

  }

  ADC_CO2=(double)ADC12MEM0/(double)0xfff*2.5;//CO2

  CO2_o=ADC_CO2*5000。0/3。0;//CO2

//  ADC_Vol_speed=((double)ADC12MEM0/(double)0xfff)*2。5*2;

  //if(ADC12MEM0<0x7ff)//max:0xfff,half:0x7ff 小于1/2AVCC

  _BIC_SR_IRQ(CPUOFF);

}


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

上一篇:MSP430之IAR map文件解析
下一篇:MSP432学习笔记:IAR的环境配置(官方demo程序的测试)

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

推荐阅读

MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用
比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序:1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平
发表于 2019-11-06
怎么用keil5实现MSP432E401Y点灯
**第一步**先去官网下载芯片包在keil这个序列中选择TI公司相对应的芯片包下载后在pack installer->import->I agree ->finish出现绿色图标,就代表成功。第二步下载模板模板链接打开工程,选择正确的芯片出现下载失败或者没法编译时选择正确的编译器版本插好线接下来Debug的配置是选择正确的芯片flash然后点击编译下载就好了第三步下面两个网站可以下载资料开发板资料芯片资料从开发板原理图可以知道LED灯的引脚接下来是简单流水灯
发表于 2019-11-06
怎么用keil5实现MSP432E401Y点灯
MSP432E401Y-PWM的生成和占空比的调整
 * MSP432E4 Empty Project * * Description: An empty project that uses DriverLib * *                MSP432E401Y *             ------------------ *         /||          
发表于 2019-11-06
MSP432时钟系统CS
MSP432共有六个时钟源,五个时钟,下面分别由我来介绍一下时钟源分别有以下几个LFXTCLK:低频振荡器(LFXT),可与低频32768-Hz手表配套使用,晶体,标准晶体,谐振器,或外部时钟源在32千赫或以下的范围。当在旁路模式下,LFXTCLK可以由32 khz或以下的外部方波信号驱动的范围内。HFXTCLK:高频振荡器(HFXT),可与1-MHz至48-MHz范围内的标准晶体或谐振器一起使用。在旁路模式下,HFXTCLK可以通过外部方波信号驱动。DCOCLK:内部数字控制振荡器(DCO),默认频率为可编程频率和3 mhz频率。VLOCLK:内部极低功率低频振荡器(VLO),典型频率为9.4 khzREFOCLK:内部低功率
发表于 2019-11-06
MSP432E401Y单片机智能小车测速功能
 * MSP432E401Y * Description:本函数实现定时和测速功能   * 引脚:PD0->编码器输入信号 *         * Author: Robin.J***************************************************************************//* DriverLib Includes */#include <ti/devices/msp432e4/driverlib/driverlib.h>/* Standard
发表于 2019-11-06
MSP432学习笔记:IAR的环境配置(官方demo程序的测试)
近来入手一块MSP432,折腾了一天,终于把官方demo程序导入IAR,可以愉快的写代码了,以下是我个人的解决办法。首先,如果要使用IAR对TI的单片机进行开发,首先要下载对应的单片机型号的MSPWARE,本人目前使用的是TI的MSP432P401R的launchpad,对应的MSPWARE的下载地址为msp432ware下载地址,下载完成后默认路径安装即可,安装完成后可以在安装路径下找到下图的文件IAR的下载安装在这里就不做赘述了,需要注意的是IAR的版本应该为IAR for ARM版本,这个千万不能搞错,否则可能会吃很多问题,不能正常运行。正确安装完IAR后应该是这个样子的,我现在安装的是最新的版本,测试没有问题准备工作完成
发表于 2019-11-06
MSP432学习笔记:IAR的环境配置(官方demo程序的测试)
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 pyfle.com, Inc. All rights reserved
快乐赛车开奖直播 安徽快3计划 荣鼎彩 快乐飞艇 快乐飞艇怎么玩 快乐飞艇官方网站 北京赛车怎么玩 快乐飞艇官网 诚信网投开户 快乐赛车怎么样