[ZLG-ARM] LM3S615 可否在一个定序列中完成4个通道的ADC,并读回4个值?

[复制链接]
2348|3
 楼主| qihao 发表于 2007-10-26 11:20 | 显示全部楼层 |阅读模式
希望设定ADC&nbsp;对&nbsp;LM3S615的4个模拟通道分别转换完成后,发出中断,&nbsp;在中断服务中对读出结果。<br /><br />亦即CPU&nbsp;在一个中断服务中可以的到4个通道的结果。
 楼主| qihao 发表于 2007-10-26 13:43 | 显示全部楼层

Up Once。

  
 楼主| qihao 发表于 2007-10-26 15:04 | 显示全部楼层

echo 附程序

/*******************************************************************************************<br /><br />*******************************************************************************************/<br />#include&nbsp;&quot;hw_memmap.h&quot;<br />#include&nbsp;&quot;hw_types.h&quot;<br />#include&nbsp;&quot;hw_ints.h&quot;<br />#include&nbsp;&quot;hw_adc.h&quot;<br />#include&nbsp;&quot;src/interrupt.h&quot;<br />#include&nbsp;&quot;src/sysctl.h&quot;<br />#include&nbsp;&quot;src/gpio.h&quot;<br />#include&nbsp;&quot;src/adc.h&quot;<br />#include&nbsp;&quot;src/pwm.h&quot;<br /><br />unsigned&nbsp;int&nbsp;wait_for_ADCINT&nbsp;=&nbsp;1;<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlClockSet(SYSCTL_SYSDIV_1&nbsp;|&nbsp;SYSCTL_USE_PLL&nbsp;&nbsp;|SYSCTL_OSC_MAIN&nbsp;|SYSCTL_XTAL_6MHZ);<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;125KSps采样率<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceDisable(ADC_BASE,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;禁能所有采样序列<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceConfigure(ADC_BASE,&nbsp;0,&nbsp;ADC_TRIGGER_PROCESSOR,&nbsp;0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;采样序列0为处理器触发&nbsp;&nbsp;&nbsp;&nbsp;&&&&1<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;0,&nbsp;ADC_CTL_CH1);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;1,&nbsp;ADC_CTL_CH2);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;2,&nbsp;ADC_CTL_CH3);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;3,&nbsp;ADC_CTL_CH4);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;4,&nbsp;ADC_CTL_CH1);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;5,&nbsp;ADC_CTL_CH2);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;6,&nbsp;ADC_CTL_CH3);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceStepConfigure(ADC_BASE,&nbsp;0,&nbsp;7,&nbsp;(ADC_CTL_CH1&nbsp;|&nbsp;ADC_CTL_IE&nbsp;|&nbsp;ADC_CTL_END));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ADCSequenceEnable(ADC_BASE,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCIntEnable(ADC_BASE,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;IntEnable(INT_ADC0);<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IntMasterEnable();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能总中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(wait_for_ADCINT&nbsp;==1){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADCProcessorTrigger(ADC_BASE,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait_for_ADCINT&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;ADCIntHandler(void){<br />&nbsp;&nbsp;static&nbsp;unsigned&nbsp;long&nbsp;ADC_Value[8];<br />&nbsp;&nbsp;unsigned&nbsp;short&nbsp;int&nbsp;n;<br />&nbsp;&nbsp;ADCIntClear(ADC_BASE,&nbsp;0);<br />&nbsp;&nbsp;for(n=0;n&lt8;n++){<br />&nbsp;&nbsp;&nbsp;&nbsp;ADC_Value[n]&nbsp;=&nbsp;HWREG(ADC_BASE&nbsp;+&nbsp;ADC_O_SSFIFO0);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;wait_for_ADCINT&nbsp;=1&nbsp;;<br />}<br /><br /><br />这段代码目的:<br />软件触发,用序列0&nbsp;对4个通道进行ADC&nbsp;转换,&nbsp;期望在中断中读出8次转换结果。<br />实际未能进入中断服务程序来观察转换结果,望&nbsp;ZLGARM&nbsp;或者那位帮助一下,&nbsp;<br /><br />软件由“ADC过采样技术&nbsp;应用文档”仿制而来。<br />
 楼主| qihao 发表于 2007-10-29 09:06 | 显示全部楼层

Up again

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

410

帖子

1

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