历史上的今天
今天是:2024年10月07日(星期一)
2018年10月07日 | Atmega8a的采样(查询法)
2018-10-07 来源:eefocus
实现了ADC0和ADC1的切换采样,每个通道采样10次,累计满10次取一次平均,然后输出数据

========================================
在main.c中:
int main(){
//此处都是初始化的函数
//...........................
while (1)
{
ad_calc();
_delay_ms(50);
PORTD |=(1<<5);
_delay_ms(50);
PORTD &=~(1<<5);
}
}
========================================
void ad_calc()
{
switch(step)
{
case 1:
get;
step=2;
break;
case 2:
switch (ADC_sel(ch))//ch选择
{
case 0://ch=0
get;
result = ADCL;
result = result+(ADCH<<8);
if (adcnt
{
volta[adcnt++] = result;
if (adcnt==ADNUM)//采满
{
ADC_Average_Vol();
ch = ADC_sel(1);
adcnt=0;//采满的计数清零
}
}
break;//ch=0
case 1://ch=1
get;
result = ADCL;
result = result+(ADCH<<8);
if (adcnt
{
volta[adcnt++] = result;
if (adcnt==ADNUM)//采满
{
ADC_Average_Tmp();
ch = ADC_sel(0);
adcnt=0;//采满的计数清零
}
}
break; //ch=1
}
break; //step=2
}
}
========================================
uchar step=1,adcnt=0,ch=0;//AD相关
uint result=0;//存AD值
uint volta[20];//存电压
uint temper[10];//存温度
#define get while(!(ADCSRA & (1 << ADIF)))//若转化完成,ADIF=1
========================================
atmega8和16不同,16的采样可以由定时器触发
史海拾趣
|
小弟最近新上手学习数字电路。上课老师也不怎么样就知道放幻灯片忽悠我们。。没有办法查阅图书馆相关题型未找到, 还望哪位高手详细指点一下。 有如下设计题型不知怎样着手解决。 某大厅 ...… 查看全部问答> |
|
cs8900的product id始终读不对,请讨论! 哥们的2410板子,用cs8900。在linux下正常! 发现其地址0x1900000,采用io方式,0x1900030A,写入所需要访问的寄存器的地址,然后从0x1900030C读出。 但是,怎么都不对,在0x0000地址的寄存器应该能读 ...… 查看全部问答> |
|
耗了整天。测试 64点点的FFT程序性能。两个纯汇编的程序:1. ARM7 64点FFT RADIX-2 VFFT_ARM72. CORTEX-M3 64点FFT RADIX-4 ST公司的cr4_fft_64_stm32我把VFFT_ARM7在A ...… 查看全部问答> |




