在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.2689mr.com/mcu/ic478720.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

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

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

推荐阅读

Ubuntu 下TinyOS msp430 Toolchain mspgcc升级
目前,TinyOS官网发布的TinyOS2.1.1,其内部支持的mspgcc还是老版本3.2.3,对于TI 430系列高端单片机都不支持,支持的也仅为msp430x1611等低端系列。为了把TinyOS移植到更高端的单片机上,比如msp430f2618,就必须升级MSP Toolchain。Sourceforge上已经更新了最新版本的mspgcc4,这个本版全面的支持TI 430全系列,最新支持GCC版本为4.4.3 ,支持GDB本版为7.0.1,Insight最新版本为6.8-1。更多的性能改进可以参考http://mspgcc4.sourceforge.net/。首先,安装必要的软件包,这些可以使用debian的apt-get
发表于 2020-05-20
MSP430--UART模块
0.5取“1”,如果小于0.5取“0”,具体实例可见参考资料1。 UART是通用异步串行接口的简称。串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。在此以MSP430x149为例介绍UART功能及其实现过程。1.异步通信的结构:2.UART数据格式(数据协议):  异步通信再不发送数据的时候,通信线路上总是呈现高电平状态,称为空闲状态
发表于 2020-05-20
MSP430--UART模块
MSP430G2转换结果数据类型
以下是程序,软件用的IAR:#include "io430.h" #include "dandao_duocai.h" #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define dataout P2OUT unsigned int ADC10_Result[100]; int d,c;void cheek_clock() { BCSCTL3_bit.LFXT1S0
发表于 2020-05-20
2.0 MSP430的IO配置
MSP430单片机一般有多组IO口,P1、P2、P3、P4、P5和P6等。在单片机所有的端口都有控制输入输出方向和进行输入、输出的能力。其中P1、P2组端口具有中断寄存器,能够响应外部中断,大部分端口拥有第二功能。每一个端口都有PxDIR(信号方向)、PxIN(输入)、PxOUT(输出)和PxSEL(功能选择)4个寄存器。P1、P2 可以配置为输入信号上升沿或者下降沿触发中断,但固定的电平不会引起中断,中断所使用的寄存器为:PxIE(中断使能)、PxIES(中断触发沿)、PxIFG(中断标志)。还有一个寄存器PxREN,这个寄存器主要是配置单片机内部的上下拉电阻,注意,早期的单片机并没有内部上下拉电阻。PxDIR:信号方向控制
发表于 2020-05-20
2.0 MSP430的IO配置
MSP430应用技巧3:MSP-FET430UIF V3驱动程序的安装
原先一直使用正版windows操作系统和CCS进行MSP430的程序设计,在升级CCS以后,插上仿真器都会要求升级仿真器上的firmware,更新后一直使用正常。由于计算机硬盘损坏,装了个和谐的windows win7旗舰版操作系统(这里说明的是,Dell公司很不像话,操作系统的镜像虽然在硬盘上,但是操作系统也是用户花钱购置的,你不能硬盘坏了,操作系统就不能用了吧,为这事情我和Dell公司沟通很多次,三位支持工程师给我了三种不同的回答,第一个说给我一个正版的光盘寄过来,我等了一周没有消息了;第二个说给我个正版的链接,我自己装就好了,呵呵,仔细一看哪个连接是Microsoft的Win7 SP2的更新,真不知这位工程师怎么配在Dell
发表于 2020-05-18
MSP430应用技巧3:MSP-FET430UIF V3驱动程序的安装
MSP430f5529——点阵LCD测试小程序
#include "msp430.h"#include "HAL_Buttons.h"#include "HAL_Board.h"#include "HAL_Dogs102x6.h"void main(void){uint8_t contrast ;uint8_t brightness ;WDTCTL = WDTPW + WDTHOLD; //关闭看门狗Dogs102x6_init(); //初始化LCDDogs102x6_backlightInit(); //背光初始化contrast = 11;brightness = 11
发表于 2020-05-18
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
棋牌娱乐app送彩金 博彩送彩金38元 免费送彩金28元 彩票大赢家 网上百家乐免费送彩金 充值送彩金平台 白菜大全自动送彩金 彩票网送彩金存款 百家乐送彩金最新资讯 购彩送彩金