我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!

我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!,第1张

我给你一个参考,是完全可以采集到数据的,是ATMEGA64的, 希望可以帮助到您。

void adc_init(void) //AD通道初始化

{

ADCSRA = 0x00;

ADMUX = 0x60; //ACC参考电压,左对齐

ACSR |= 0x80; //关闭模拟比较器

ADCSRA = 0x85; //使能ADC,中断未使能,32分频

}

unsigned int get_ad(unsigned char chanel) //启动一次AD转换,查询方式,改变chanel可采集不同通道电压

{

unsigned int temp=0,temp1=0,temp2=0;

CLI();

if(chanel>7)

{

return 0;

}

ADMUX=0x60;

ADMUX |=chanel;

ADCSRA |=0x40;

while(!(ADCSRA&0x10));

ADCSRA |= 0x10;

temp2 = ADCL;

temp1 = ADCH;

temp = (temp1<<4)|temp2;

SEI();

return temp;

}

/sendtimebetweenbeatswitha/在LCD12864上显示BPM

}

delay(138);9;Set/发送并处理原始脉搏传感器数据

if(QS==true){//fadeRateVariableto255tofadeLEDwithpulse

sendDataToProcessing(B;Qi++){

delay(1000);}

if(Pressure<100){

beep=0;}}

if(BPM<60|BPM>100){

for(i=0;i<显示信息4

while(1)

{

sendDataToProcessing(}

}

}

//AD转换结果result

ADC_CONTR&=0xf8;/依次执行写入 *** 作

{

putchar(ucStr3[i]);

}

for(i=0;

_nop_();/延时196ms

LCD_disp_list_char(4,DisBuff2);设置ADCCONTR控制寄存器后;/S确定发现一个心跳

fadeRate=255,0;/voidledFadeToBeat(){

//,BPM);///analogWrite(fadePin,fadeRate);/:GetADCResult

函数功能:获取AD转换结果函数

入口参数;,Signal);

sys_init();

beep=1;

LCD12864_DisplayOneLine(0x80,ucStr1);//,255);//prefix

QS=false;/,IBI),4;/resettheQuantifiedSelfflagfornexttime

LCD_disp_list_char(2:BYTEch(通道选择)

返回值:result(A///依次执行写入 *** 作

{

putchar(ucStr2[i]);

}

for(i=0、CHS1、CHS0(清除通道选择)

_nop_();//显示信息1

LCD12864_DisplayOneLine(0x90,ucStr2);//keepLEDfadevaluefromgoingintonegativenumbers!

/B}

for(i=0;i<3;i++)

{

putchar(DisBuff[i]);/清除ADC控制寄存器ADCCONTR的CHS2,DisBuff);/16;i++)/和心率

sendDataToProcessing(setLEDfadevalue

//,要加4个空 *** 作延时才可以正确读到ADCCONTR寄存器的值

_nop_();4;i++)//,4;i++){

delay(1000);}

if(BPM<60|BPM>100){

beep=0;i<16;/i++)//8;

}

for(i=0;Q/}

/

函数名称;显示信息2

LCD12864_DisplayOneLine(0x88,ucStr3);//ledFadeToBeat();显示信息3

LCD12864_DisplayOneLine(0x98,ucStr4);//i<16;}

for(i=0;i<

unsignedintGetADCResult(BYTEch)

{unsignedintresult;//依次执行写入 *** 作

{

putchar(ucStr1[i]);/fadeLED

/i<16;fadeRate=constrain(fadeRate;i++)///发送一个fadeRate-=15;//D转换结果)

备注:无

/

_nop_();

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;//开ADC电源,选择AD转换速率,并选择AD通道,开始AD转换

_nop_();//设置ADCCONTR控制寄存器后,要加4个空 *** 作延时才可以正确读到ADCCONTR寄存器的值

_nop_();

_nop_();

_nop_();

while(!(ADC_CONTR&ADC_FLAG));//等待AD转换结束

ADC_CONTR&=~ADC_FLAG;//关闭ADC

result=ADC_RES;//将AD转换结果的高两位赋给result

result=result<<8;//将result循环左移8位

result+=ADC_RESL;//将AD转换结果的底8位加高两位共10位给result

returnresult;//返回10位AD转换结果

}

voidsendDataToProcessing(charsymbol,intdat){

putchar(symbol);//symbolprefixtellsProcessingwhattypeofdataiscoming

printf(\"%drn

ADC(模数/数字转换器)的性能测试软件有很多,下面列举一些比较常用的:

1 ADCTest:ADCTest是一款由美国ADI公司开发的测试软件,用于测试ADI公司的模数/数字转换器。它具有自动测试和手动测试两种模式,可以用于测试分辨率、采样率、信噪比等参数。

2 SPIStorm:SPIStorm是一款由美国Crossware Tools公司开发的测试软件,用于测试模数/数字转换器和其他器件。它可以测试转换器的分辨率、采样率、线性范围、失真等性能参数,并可以输出测试结果。

3 LabVIEW:LabVIEW是一款由美国National Instruments公司开发的测试软件,用于测试多种电子器件。它可以测试数据采集卡、模数/数字转换器等器件,并可以进行自动化测试。

4 MATLAB:MATLAB是一款由美国Mathworks公司开发的数学软件,用于数学计算和数据分析。它提供了丰富的测试工具箱,包括信号处理工具箱和数据采集工具箱,可以用于模数/数字转换器的性能测试。

5 ADCPro:ADCPro是一款由美国Texas Instruments公司开发的测试软件,用于测试TI公司的模数/数字转换器。它可以测试转换器的分辨率、采样率、线性范围、失真等性能参数,并能够生成详细的测试报告。

以上只是一些常用的ADC性能测试软件,具体可根据实际需求选择使用。

最近需要用一款高精度的ADC,选择了TI的ADS1256,现将学习过程中的主要内容整理列出,与大家共同探讨,若有错误还请指正

暂时就涉及到这些,互相交流学习,有没注意到的地方还请指教~

P1ASF是选择哪个口模拟AD转换功能,(1<<ADC_CH0)(ADC_CH0相当于0)故P1ASF第0位被置1,选择P10为模拟通道。

第二个是对ADC_CONTR寄存器进行了设置,(1 << 7)将第八位置1,(1 << 5)将第六位置1,ADC_CONTR = ADC_360T | ADC_ON 将ADC_CONTR寄存器第六位和第八位置1,具体功能就是开启AD转换,选择转换速度。

如有不对请指正!

以上就是关于我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!全部的内容,包括:我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!、谁有pulsesensor心率传感器,的c语言程序,带注释的。在线等挺急的、adc性能测试软件有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9793466.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存