ATMEGA16 多通道AD采集

发布者:森绿企鹅最新更新时间:2016-08-15 来源: eefocus关键字:ATMEGA16  多通道  AD采集 手机看文章 扫描二维码
随时随地手机看文章
ATMEGA16 多通道AD采集 - 杰龙 - 电子-单片机

 

ATMEGA16 多通道AD采集 - 杰龙 - 电子-单片机

 

//ADEN置位即启动ADC  ,否则ADC功能关闭。在转换过程中关闭ADC将立即中止正在进行的转换。同时ADEN清零会将ADIE(AD结束中断使能)清除。另外工作在连续模式下如果没有对ADEN清零则AD采样一直运行。

#include "main.h"

#define  HOT_MUX    4
#define  MIX_MUX    5
#define  POWER_MUX  7
#define  AD_PORT    PORTA
#define  AD_DIR     DDRA

//采集次数
#define  HOT_SAMP_CNT    4     
#define  MIX_SAMP_CNT    4       
#define  POWER_SAMP_CNT  4     

unsigned char AD_READY = 0;
volatile unsigned int buf[8];

volatile unsigned int AD_hot_result = 0;
volatile unsigned int AD_mix_result = 0;
volatile unsigned int AD_power_result = 0;

void ADC_Init(void)
{
    AD_PORT &= ~(1<  AD_DIR &=  ~(1<     ADMUX = (1<  ACSR |= 0x80;     //禁止模拟比较器
 SFIOR = 0x00;       //连续转换模式
 ADCSRA = (1< }

#pragma interrupt_handler ADC_ISR:15
void ADC_ISR(void)
{
    unsigned int temp = 0;
 static unsigned int sum = 0;
 static unsigned char cnt = 0;
 static unsigned char AD_status = 0;
 
 if (cnt == 0)                   //切换通道时第一个数据必须舍弃
 {
     cnt = 1;
  ADCSR|=(1<   return;
 } 

 temp = ADCL;
 temp |= (unsigned int)ADCH<<8;
 sum += temp;
 
 switch(AD_status)
 {
  case 0:                  

   if (++cnt > HOT_SAMP_CNT)
   {       
    AD_status++;
    ADMUX = (1<     AD_hot_result = sum / HOT_SAMP_CNT;
    cnt = 0;
    sum = 0;
   }
   break;
  case 1:                 

   if (++cnt > MIX_SAMP_CNT)
   {       
    AD_status++;
    ADMUX = (1<     AD_mix_result = sum / MIX_SAMP_CNT;
    cnt = 0;
    sum = 0;
   }
   break; 
  case 2:                 //电源电压
   if (++cnt > POWER_SAMP_CNT)
   {       
    AD_status = 1;  
    ADMUX = (1<     AD_power_result = sum / POWER_SAMP_CNT;
    cnt = 0;
    sum = 0;
    AD_READY = 1;

     ADCSR &= ~(1<     return;
   }
   break;    
 }
 ADCSR|=(1< }

unsigned int Res_Matrixing_Temper(unsigned int temp)
{
    float Rt = 0;
 float T_inv = 0;
 float temper = 0;
 
 Rt = (float)50000*temp/(1024-temp);
 T_inv = log(Rt/50000)/3950 + 1/298.15;
 temper =  (1/T_inv -273.15)*10 + 0.5; 
 
    return ((unsigned int)temper);    
}

void get_AD_result(void)
{
    unsigned int t1 = 0;
 float T_inv = 0;
 float Rt = 0;
 float temp = 0;
    if (AD_READY == 1)
 { 
  AD_READY = 0;
  
        t1 = Res_Matrixing_Temper(AD_hot_result);    
 
  buf[0] = t1/100;
  buf[1] = t1/10%10;  
  buf[2] = t1%10;
  
  t1 = Res_Matrixing_Temper(AD_mix_result); 
  buf[3] = t1/100;
  buf[4] = t1/10%10;  
  buf[5] = t1%10; 
  
 }
}

关键字:ATMEGA16  多通道  AD采集 引用地址:ATMEGA16 多通道AD采集

上一篇:AVR EEPROM读写
下一篇:TWI ATMEGA16L 丛机模式

推荐阅读最新更新时间:2024-03-16 15:05

AVR ATmega16访问16 位寄存器
TCNT1、OCR1A/B与ICR1是AVR CPU 通过8位数据总线可以访问的16位寄存器。读写16位寄存器需要两次操作。 每个16位计时器都有一个8位临时寄存器用来存放其高8位数据。每个16 位定时器所属的16 位寄存器共用相同的临时寄存器。访问低字节会触发16位读或写操作。当CPU 写入数据到16 位寄存器的低字节时,写入的8 位数据与存放在临时寄存器中的高8 位数据组成一个16 位数据,同步写入到16 位寄存器中。当CPU 读取16 位寄存器的低字节时,高字节内容在读低字节操作的同时被放置于临时辅助寄存器中。 并非所有的16 位访问都涉及临时寄存器。 对OCR1A/B 寄存器的读操作就不涉及临时寄存器。 写16 位寄存
[单片机]
基于多通道宽带示波器的MIMO射频测试和调试
多输入多输出(MIMO)技术通过使用多个天线传输两路或四路数据流,为单个用户数据传输速率的提升提供了可能性。例如,此前有介绍LTE 的文章曾指出,64 QAM 2x2下行链路FDD MIMO和64 QAM 4x4下行链路FDD MIMO可分别提供高达172.8Mbps和326.4Mbps的峰值数据速率。但是,与单输入单输出(SISO)单个天线相比,实现双通道或四通道MIMO将会增加复杂性,从而影响可能达到的峰值数据速率,而且硬件设计和实施方面的不利影响(例如天线串扰和定时误差)有可能降低多天线技术可能带来的性能增益。 另外,多天线技术的实现过于复杂,使得对硬件性能问题进行故障诊断和调试颇具难度;增加天线和数据流数量(从2x2 MIM
[测试测量]
基于<font color='red'>多通道</font>宽带示波器的MIMO射频测试和调试
定量测量多通道串行数据系统中的串扰引起的抖动(二)
在参考文献 中推导了串扰引起的峰峰值BUj的关系式。该文基于的假设是干扰源(Aggressor)感应的串扰改变了被干扰信号的幅度,改变量的大小等于感应的串扰电压。受干扰对象(Victim)边沿移动的变化量由下面的等式(3)给出。 表示受干扰对象(Victim)上串扰感应的电压的峰峰值。该等式描述了当干扰源(Aggressor)的边沿和受干扰对象(Victim)的边沿一致的时候,感应的串扰引起的时序改变量。峰峰值抖动受限于干扰源(Aggressor)和受干扰对象(Victim)的边沿的重叠部分的大小。还有一个最大值限制等于干扰源(Aggressor)转换时间,当串扰电压大小超过一定程度时会达到这
[测试测量]
定量测量<font color='red'>多通道</font>串行数据系统中的串扰引起的抖动(二)
STM32的ADC多通道DMA使用方法
类似的问题 为什么我采集5条通道的电压,而采集到的值却都是第一条的呢? 我什么时候需要使用DMA功能? Ⅰ 关于ADC的一些知识 STM32的ADC是一种12位逐次逼近型的模拟数字转换器。它有多达18条通道,可测量16个外部和2个内部信号源。 各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器ADC_DR中。 其实就是说,一个ADC,可检测18条通道,我们外接的只有16条。而结果只保存在一个寄存器ADC_DR中。 要使用ADC1采集多条通道,那么就需要对采集的通道进行分组排序。STM32的ADC可以把转换组织成两组:规则组和注
[单片机]
STM32的ADC<font color='red'>多通道</font>DMA使用方法
基于STM8S的AD采集系统
STM8S系列最多有16路AD,据封装大小而不同。许多引脚多有复用功能,其功能类似于普通的51,及对于有复用功能的IO口,可以直接使用而不需要什么复用设置。此外复用功能还可以引脚重映射,这就需要在选项字节中进行映射配置。对于要配置为AD采集口的引脚,一定要设置为浮空输入模式,而不是其他什么输出模式,这样会严重干扰输入电压的测量。由于使用的是小封装,因此没有专门的参考电压,内部是直接连到电源端,因此电源端的不稳就是参考电压的不稳,会直接导致转换值的不稳及跳动,一开始设计中就有一个闪烁灯,造成电源的小幅波动,影响到了转换值,在取消闪烁灯后,转换值稳定下来。由于采用的是分压电阻进行的大电压的测量,因此由分压电阻的误差造成的转换值不精确在所
[单片机]
基于SPCE061A的高精度多通道温度测量系统设计
   0 引 言   温度的测量与控制在工农业生产、日常生活及科学研究中有着广泛的应用。由于常用温度传感器的非线性输出及一致性较差,使温度的测量方法和手段相对较复杂,也给电路的调试增加了难度。为此,设计了以台湾凌阳公司生产的SPCE061A 16位高性能单片机为系统控制核心。采用DALLAS公司的DS18820作为温度传感器的三通道高精度温度测控仪,该测控仪实现了温度数据和日期、时间的显示与保存;可输出显示三组温度和三路控制信号,具有故障和报警状态提示等功能,保证了测试的精度以及系统的可靠性和控制要求。    1 系统硬件设计   多通道智能温度测控仪的硬件电路原理框图如图1所示,测控仪主要由SPCE061A单片机、温度传感
[模拟电子]
基于红外探测原理的多路无线安防系统设计
  为了实现对重大安全场所无线自动报警和监控,根据热释电红外传感的基本原理,设计并实现了一种接收移动人体辐射出得红外线检测仪,该检测仪以ATmega16单片机为控制中心,融合了无线通信技术和信号检测技术等,通过无线收发模块与控制器通信,控制器通过RS-485与控制计算机连接,整个系统组成无线网络,实现多路无线声光报警和远程监控。另外该系统还设计了显示模块方便数据的读取分析。其设计具有实时性强,可靠性高,成本低,维护方便等优点。   随着电子技术和微机技术的迅速发展和广泛应用,给现代家庭防盗、车库。办公室、银行、博物馆等重大安全场所的报警系统带来新的变革,出现了新的面貌。在日常生活中,各种无线检测系统孕育而生,大大节约了铺设专用通
[单片机]
基于红外探测原理的多路无线安防系统设计
美国德州仪器推出三款全新多通道视频解码器
  日前,德州仪器 (TI) 宣布推出可实现优异图像质量的新型 TVP5158、TVP5157 以及 TVP5156 多通道 NTSC/PAL 视频解码器。三款全新器件采用高级二维自适应梳状滤波器内核以及自动对比度控制与视频噪声过滤等影像增强技术。全新 TVP515x 可同时解码 4 个通道的视频输入,是要求以节省空间的低成本方式实现多通道解码的应用的理想解决方案。此类应用包括多通道数字视频录像机 (DVR)、数字视频服务器 (DVS)、混合 DVR、视频会议摄像机以及数字标牌产品等。此外,TVP5158 高度灵活的视频输出与基于达芬奇 (DaVinciTM) 技术(TMS320DM6467 与 TMS320DM365)的 TI
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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