关于2812的AD采集

2019-03-26 15:17发布

本人新手,想用2812内置的AD模块进行实时的数据采集和处理,但是对AD中断部分和数据处理部分的运行有些疑惑。首先AD中断如果采用软件启动的话,假如在中断结尾进行如此设置:AdcRegs.ADCTRL2.bit.SOC_SEQ1=1,是不是马上就开始下一次中断?是不是主函数部分就不会执行?还有有人和我说数据运算的部分最好不要放到中断部分里,但如果和中断分开的话,这两个部分是如何执行的?我希望AD在采集512次之后进行FFT,怎样保证在采到了512个数据能够跳出中断进行FFT运算?如果主函数这样编写:
main()
{
省略初始化部分
  for(;;)
   {
     if(AdcRegs.ADC_ST_FLAG.BIT.SEQ1_BSY==0)
        AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;                    
       //是不是这里只要置1,就马上开始AD中断?中断部分中把各次采集到的数据放在一个数组中,并且不在中断结尾进行软件出发,是不是在满足n=512之前都是一次中断结束就会执行下一次循环,直到n=512才会执行下面的if语句?
     if(n==512)
        FFTmain();  //FFT运算

   }
}
新手有些钻牛角尖,关于AD中断的问题总想不明白,这些问题可能有些低级,望各位给予解答,万分感谢
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
ltbytyn
1楼-- · 2019-03-26 19:40
 精彩回答 2  元偷偷看……
ltbytyn
2楼-- · 2019-03-26 23:20
< 建议用定时器起动AD。不需要人为干涉
xialang921
3楼-- · 2019-03-27 04:13
ltbytyn 发表于 2014-11-11 09:08
设置好定时器,使用定时器起动AD中断。在AD中断程序中读取采样值。采样样本达到512个时,置位个标志。在主 ...

那样本达到512个并且置位哪个标志位比较好?在置位标志位后是不是就不执行中断开始执行主程序了?还是在执行主程序中FFT时AD还在继续采集?
ltbytyn
4楼-- · 2019-03-27 06:48
自己定义个标志位。
xialang921
5楼-- · 2019-03-27 08:36
ltbytyn 发表于 2014-11-11 11:11
自己定义个标志位。

那在开始进行FFT的时候,AD还在进行采集吗?还是是暂停的状态?
ltbytyn
6楼-- · 2019-03-27 09:53
 精彩回答 2  元偷偷看……

一周热门 更多>