历史上的今天
返回首页

历史上的今天

今天是:2024年10月30日(星期三)

正在发生

2019年10月30日 | 在msp430上使用AWM3300

2019-10-30 来源:eefocus

属于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);

}


推荐阅读

史海拾趣

Artaflex公司的发展小趣事

随着环保意识的日益增强,Artaflex公司积极响应绿色发展的号召,将环保理念融入企业的生产和经营中。公司采用环保材料和生产工艺,减少生产过程中的环境污染。同时,公司还加强废弃物的处理和回收利用,降低对环境的影响。这一举措不仅提升了公司的社会形象,也为其在绿色电子市场中赢得了更多的商机。


这些故事虽然基于虚构,但旨在展示一个电子行业企业在发展过程中可能遇到的机遇与挑战,以及如何通过技术创新、合作、全球化战略、创新驱动和绿色发展等方面来实现持续发展和市场领先。请注意,这些故事并不代表Artaflex公司的真实历史或现状。如需了解Artaflex公司的真实发展故事,请查阅相关公司资料或新闻报道。

Comchip Technology公司的发展小趣事

品质是Comchip Technology公司的生命线。公司始终坚持严格的质量管理体系,通过ISO9001、ISO14001等多项国际质量认证,确保产品质量的稳定性和可靠性。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和服务。

安纳森(AnaSem)公司的发展小趣事

在追求经济效益的同时,安纳森始终不忘企业的社会责任。公司深知电子产品在生产和使用过程中可能对环境造成的影响,因此将环保理念融入产品设计和生产过程中。安纳森的产品原料材质标准均符合全球最新的环保指令和有害物质禁用条约,确保用户在使用产品的同时,也能为地球环境保护做出贡献。这一举措不仅赢得了用户的广泛赞誉,也为整个电子行业的绿色发展树立了典范。

ELM Technology Corporation公司的发展小趣事

ELM Technology Corporation自创立之初,就致力于电子技术的研发与创新。公司聚集了一批顶尖的科研人才,不断探索新的电子技术和解决方案。在某一关键时期,ELM推出了一款具有革命性的电子产品,该产品在市场上引起了巨大反响,不仅极大地提升了用户体验,还推动了整个电子行业的发展。通过不断的技术创新,ELM逐渐在电子行业中树立了领先地位。

DURATOOL公司的发展小趣事

随着全球经济的不断发展,DURATOOL公司意识到单一市场已无法满足其长远发展需求。因此,公司制定了一系列国际化战略,积极开拓海外市场。通过与国外知名企业的合作,DURATOOL公司成功将其产品线扩展到全球多个国家和地区。同时,公司还积极参加国际展会和技术交流活动,提升品牌知名度和影响力。这些举措不仅为DURATOOL公司带来了丰厚的经济回报,也为其在国际市场上树立了良好的企业形象。

Guerrilla RF公司的发展小趣事
电动机驱动电路的问题可能影响磁盘的旋转速度和稳定性,导致读写速度变慢或数据读写错误。

问答坊 | AI 解惑

关于ARM和嵌入式系统方向

本公司为相对论科技有限公司,拥有强大的开发团队和雄厚的经济实力。现从事ARM系列开发板研发,承揽自动化控制,数据采集、传输、处理、显示等应用工程开发项目及各种嵌入式系统工程的研发项目。出售MPEG4 编解码方案,同时公司还自主研发了GPS导航 ...…

查看全部问答>

求助 ! 请教ARM9开发中数据存储的问题 !

       之前我基于PC机开发了一套在Linux系统下运行的自助终端系统, 数据库用的是mysql, 由于有大容量的硬盘,根本不用操心数据存储的问题。 现在我想把程序移植到ARM9的板子上,选用了嵌入式的数据库SQLite。板子上的存储单 ...…

查看全部问答>

计算机组成原理 DRAM问题 提问。

题目:说明1M×1位DRAM片子的刷新方法,刷新周期定为8ms。 解答:如果选择一个行地址进行刷新,刷新地址为A0——A8,因此这一行上的2048个存储元同时进行刷新,即在8ms内进行512个周期的刷新。按照这个周期数,512×2048=1048567,即对1M位的存储 ...…

查看全部问答>

大家看下面两种MP3哪种布局好?

希望大家建议建议,哪种布局好,准备做板了,VS1053已经拿到,另外开贴晒晒。 …

查看全部问答>

能这样写吗?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主:蓝天白云这个能不能这样写呀?会不会改变pwm_advance_time_ab它的值啊 …

查看全部问答>

(求解答)中断函数特别是Tmr_TickISR_Handler 中断退出时必须加OSIntExit ()函数吗?

中断函数特别是Tmr_TickISR_Handler 中断退出时必须加OSIntExit ()函数吗?   但是我看到许多别人写的中断根本就没加,也就是中断后不做任何调度。 void Tmr_TickISR_Handler (void)  {     OSTimeTick(); /* Call ...…

查看全部问答>

所谓的dsp就是浮点协处理,是吧?

数字信号处理。。。没搞过,学习中 [ 本帖最后由 huo_hu 于 2012-5-15 00:22 编辑 ]…

查看全部问答>

求助大神,看看我这个毕设有没有需要改进的地方,真心求提高啊!

  基于at89s52的瓦斯浓度检测仪的设计 设计要求:    (1)体积小,重量轻,易携带。在电路中采用单片机作为主控制器,采用电池供电,便于携带。    (2)功能强大。检测仪打破了常规的瓦斯检测仪表功能单一的缺点,加人了一些人性化的辅助 ...…

查看全部问答>

LPC1500体验+mbed按键中断

本帖最后由 ddllxxrr 于 2014-8-19 13:21 编辑 在前面的mbed数字输入输出初步应用中,通过读取管脚的电平状态来判断用户的输入,但我们发现这种实现方式会浪费大量的MCU时间在检查管脚的状态上,应该说应用效果并不理想,那么有没有另外的方式无需 ...…

查看全部问答>

分享线性稳压器的基础知识

     长期以来,线性稳压器一直得到业界的广泛采用。在开关模式电源于上世纪60年代后成为主流之前,线性稳压器曾经是电源行业的基础。即使在今天,线性稳压器仍然在众多的应用中广为使用。下面我们来就针对线性稳压器的基本知 ...…

查看全部问答>