共2条
1/1 1 跳转至页
adc12 关于adc12采样控制问题

问
问题一:在用adc12对频率信号采样时,通过ADC12CTL0的SHT0选择了采样频率,选择采样模式为单通道多次转换,在中断服务程序中把ADC12MEM中的数据读出,这种做法为什么不能保持原来选择的采样频率。实际采样频率低于选择的采样频率。
问题二:ADC12CTL1中SHS如果采用第2种模式,Timer_A.OUT1,它是如何工作的? 答 1: 我也用ADC12,但是没有去过分关注频率,请问频率与设定差距很大吗? 答 2: 我现在想用ADC12的单通道连续采样模式,它每次采样之后有中断产生,在中断服务程序中我写了几条语句,大概在10个指令周期,而我选用的SHT0为7,即tsample=4*tadc12clk*48,tadc12clk=mclk,这就是说我在中断服务程序中把ADC12MEM的数据读出的过程中,新的数据还未更新,当我读出数据后等待下一次的数据更新产生中断请求。这样,连续采样应该能够在所设定的采样频率下发生,而且应该不会出现数据丢失的现象。但现在的问题就是采样频率没有按照我所设定的情况发生,都是比设定的采样周期慢,而且改变不同的SHT0其采样频率改变不大,尤其是采样频率选择高的时候。
这种情况的发生时为什么呢?是否是因为在等待中断服务的时候发生的延迟,或者是因为中断执行过程中执行时间比采样时间多而产生的数据丢失呢? 答 3: 我觉得你说的都有可能,还有可能是别的中断服务程序的原因 答 4: 中断中的时间要求很严格,不要放运算付值的语句 答 5: 大家继续阿,我还在迷惑中。 答 6: 建议时钟选高频的,AD中断时关闭别的中断,中断内只进行存放数据,语句不能太多,采样几次后集中处理数据 答 7: 中断里少放算法和赋值 答 8: #pragma vector=ADC_VECTOR
__interrupt void ADC12(void)
{
ADC12IE&=~BIT0;
result[num]=ADC12MEM[0];
num++;
if(num>=200)
{
num=0x00;
ADC12IFG&=~BIT0;
ADC12CTL0&=~ENC;
LPM0_EXIT;
}
ADC12IE|=BIT0;
}
这是我的中断服务程序,大家看看
问题二:ADC12CTL1中SHS如果采用第2种模式,Timer_A.OUT1,它是如何工作的? 答 1: 我也用ADC12,但是没有去过分关注频率,请问频率与设定差距很大吗? 答 2: 我现在想用ADC12的单通道连续采样模式,它每次采样之后有中断产生,在中断服务程序中我写了几条语句,大概在10个指令周期,而我选用的SHT0为7,即tsample=4*tadc12clk*48,tadc12clk=mclk,这就是说我在中断服务程序中把ADC12MEM的数据读出的过程中,新的数据还未更新,当我读出数据后等待下一次的数据更新产生中断请求。这样,连续采样应该能够在所设定的采样频率下发生,而且应该不会出现数据丢失的现象。但现在的问题就是采样频率没有按照我所设定的情况发生,都是比设定的采样周期慢,而且改变不同的SHT0其采样频率改变不大,尤其是采样频率选择高的时候。
这种情况的发生时为什么呢?是否是因为在等待中断服务的时候发生的延迟,或者是因为中断执行过程中执行时间比采样时间多而产生的数据丢失呢? 答 3: 我觉得你说的都有可能,还有可能是别的中断服务程序的原因 答 4: 中断中的时间要求很严格,不要放运算付值的语句 答 5: 大家继续阿,我还在迷惑中。 答 6: 建议时钟选高频的,AD中断时关闭别的中断,中断内只进行存放数据,语句不能太多,采样几次后集中处理数据 答 7: 中断里少放算法和赋值 答 8: #pragma vector=ADC_VECTOR
__interrupt void ADC12(void)
{
ADC12IE&=~BIT0;
result[num]=ADC12MEM[0];
num++;
if(num>=200)
{
num=0x00;
ADC12IFG&=~BIT0;
ADC12CTL0&=~ENC;
LPM0_EXIT;
}
ADC12IE|=BIT0;
}
这是我的中断服务程序,大家看看
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 |