[ZLG-ARM] ADC的高速采集时的中断问题?

[复制链接]
2932|11
 楼主| qiang6091 发表于 2007-12-2 18:32 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;在用LPC2138,ADC时钟为Fpclk/3,设置为外部P0.16触发,中断采样。P0.16的触发速度为220k/S,观察发现,ADC能够转换完成,但是在中断中时间过长,从中断响应到结束,大约有2.6uS.而实际应该小于1S。<br />&nbsp;&nbsp;不知哪位高手遇到过此类问题,谢谢。
 楼主| qiang6091 发表于 2007-12-2 18:34 | 显示全部楼层

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

错了,经计算应该小于1uS。急啊!!!
lyl831015 发表于 2007-12-3 08:26 | 显示全部楼层

FIQ

你可以实验一下快速中断。
toluoxin 发表于 2007-12-5 19:50 | 显示全部楼层

he

数据手册中说明ADC&nbsp;,10BIT转换时间约2.4us,如果在中断程序中等待ADC结果怎么会小于1us?假使在中断程序中触发ADC,那么中断程序运行时间要看中断代码的长度了。
toluoxin 发表于 2007-12-5 19:55 | 显示全部楼层

HE

你的系统对ADC采样频率很高呀,除了应付ADC结果外,其他的程序还忙的来吗?
 楼主| qiang6091 发表于 2007-12-7 19:40 | 显示全部楼层

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

回4楼:不是等待ADC,而是外部触发后进入中断的采集。<br />我的代码很短,就两句话:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCDBUF=AD0DR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />可是执行时间却很长,从中断响应到结束,大约有2.6uS。<br /><br />回5楼:我的系统还有其他程序,有PWM驱动。
wangshujun 发表于 2007-12-8 17:25 | 显示全部楼层

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

主频越高越明显
 楼主| qiang6091 发表于 2007-12-12 09:21 | 显示全部楼层

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

会这么长时间吗?<br /><br />这是中断程序:<br />void&nbsp;__irq&nbsp;IRQ_AD1(void)<br />{<br />&nbsp;&nbsp;&nbsp;CCDBuf[AD_NUM]&nbsp;=&nbsp;AD0DR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读取ADC结果<br />&nbsp;&nbsp;&nbsp;AD_NUM++;<br />&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束<br />}<br /><br />这是主程序中的等待程序:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((IO0PIN&nbsp;&&nbsp;PWM_Sign)&nbsp;==&nbsp;0);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T0TCR&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;关闭Timer,停止外部触发<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UART0_SendByte(AD_NUM);
zlgarm 发表于 2007-12-13 09:05 | 显示全部楼层

回复

楼主:<br />你其它程序还有中断吗?有没有可能发生中断嵌套~<br /><br />
 楼主| qiang6091 发表于 2007-12-14 10:36 | 显示全部楼层

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

其它程序没有了,就只有一个中断。有一个PWM驱动和一个Timer0驱动。<br />问题出在while((IO0PIN&nbsp;&&nbsp;PWM_Sign)&nbsp;==&nbsp;0)这个语句,判断P0.21脚是否为高,这句总是跳不过去,说明在P0.21脚为高时进入了中断。P0.21脚就是图中的TG信号。
 楼主| qiang6091 发表于 2007-12-14 11:03 | 显示全部楼层

回复

还有一个问题,在周立功&lt&lt深入浅出ARM7&gt&gt的这本书中写明ADCR的设置EDGE为0是下降岩,而我做实验发现EDGE为1是下降沿。
 楼主| qiang6091 发表于 2007-12-14 11:46 | 显示全部楼层

回复

问题解决了,是ADCR的设置问题,加CCD输出的沿时,使我误认为是上升延采样,其实是下降延采样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

124

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部