打印
[ZLG-ARM]

ADC的高速采集时的中断问题?

[复制链接]
2014|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qiang6091|  楼主 | 2007-12-2 18:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  在用LPC2138,ADC时钟为Fpclk/3,设置为外部P0.16触发,中断采样。P0.16的触发速度为220k/S,观察发现,ADC能够转换完成,但是在中断中时间过长,从中断响应到结束,大约有2.6uS.而实际应该小于1S。
  不知哪位高手遇到过此类问题,谢谢。

相关帖子

沙发
qiang6091|  楼主 | 2007-12-2 18:34 | 只看该作者

ADC的高速采集时的中断问题?

错了,经计算应该小于1uS。急啊!!!

使用特权

评论回复
板凳
lyl831015| | 2007-12-3 08:26 | 只看该作者

FIQ

你可以实验一下快速中断。

使用特权

评论回复
地板
toluoxin| | 2007-12-5 19:50 | 只看该作者

he

数据手册中说明ADC ,10BIT转换时间约2.4us,如果在中断程序中等待ADC结果怎么会小于1us?假使在中断程序中触发ADC,那么中断程序运行时间要看中断代码的长度了。

使用特权

评论回复
5
toluoxin| | 2007-12-5 19:55 | 只看该作者

HE

你的系统对ADC采样频率很高呀,除了应付ADC结果外,其他的程序还忙的来吗?

使用特权

评论回复
6
qiang6091|  楼主 | 2007-12-7 19:40 | 只看该作者

ADC的高速采集时的中断问题?

回4楼:不是等待ADC,而是外部触发后进入中断的采集。
我的代码很短,就两句话:
                       CCDBUF=AD0DR;
                       i++;
可是执行时间却很长,从中断响应到结束,大约有2.6uS。

回5楼:我的系统还有其他程序,有PWM驱动。

使用特权

评论回复
7
wangshujun| | 2007-12-8 17:25 | 只看该作者

进出中断需要的时间很长,这是带有流水线的cpu的共性

主频越高越明显

使用特权

评论回复
8
qiang6091|  楼主 | 2007-12-12 09:21 | 只看该作者

ADC的高速采集时的中断问题?

会这么长时间吗?

这是中断程序:
void __irq IRQ_AD1(void)
{
   CCDBuf[AD_NUM] = AD0DR;                    // 读取ADC结果
   AD_NUM++;
   VICVectAddr = 0x00;                  // 中断处理结束
}

这是主程序中的等待程序:
     while((IO0PIN & PWM_Sign) == 0);  
     T0TCR = 0x00;                // 关闭Timer,停止外部触发
     UART0_SendByte(AD_NUM);

使用特权

评论回复
9
zlgarm| | 2007-12-13 09:05 | 只看该作者

回复

楼主:
你其它程序还有中断吗?有没有可能发生中断嵌套~

使用特权

评论回复
10
qiang6091|  楼主 | 2007-12-14 10:36 | 只看该作者

ADC的高速采集时的中断问题?

其它程序没有了,就只有一个中断。有一个PWM驱动和一个Timer0驱动。
问题出在while((IO0PIN & PWM_Sign) == 0)这个语句,判断P0.21脚是否为高,这句总是跳不过去,说明在P0.21脚为高时进入了中断。P0.21脚就是图中的TG信号。

使用特权

评论回复
11
qiang6091|  楼主 | 2007-12-14 11:03 | 只看该作者

回复

还有一个问题,在周立功<<深入浅出ARM7>>的这本书中写明ADCR的设置EDGE为0是下降岩,而我做实验发现EDGE为1是下降沿。

使用特权

评论回复
12
qiang6091|  楼主 | 2007-12-14 11:46 | 只看该作者

回复

问题解决了,是ADCR的设置问题,加CCD输出的沿时,使我误认为是上升延采样,其实是下降延采样。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

124

帖子

0

粉丝