我程序设计如下:
ADC以5MHz的频率采样,没有和任何信号同步。
TimerD2以1秒的周期闪LED2(黄色的那个LED),以便观察是否dsp还在运行。
TimerA0设置周期为334微秒。我用示波器看过了。的确是这个周期。在每一个中断内做以下事情:
1.读取ADC0的数据。然后平均6个点来滤波。
2.读取ADC1的数据。然后平均6个点滤波。
3.对数据进行处理。
我想在这个中断最后用取到的数据计算产生1000赫兹的PWM信号(还没有做)。ADC的采样频率至少应该在2000赫兹(500微秒)以上。在TimerA0中断周期为334微秒的设置下,应该1秒可以采到3000个数据。
最初,我用了浮点数类型。做了一点数据处理,就发现采样回来的数据点很少。然后给Freescale发邮件。他们说可能是中断内东西太多,有些中断没有响应,不要用浮点数。然后,我就都改成了定点数运算。为了测试是否还有问题。我就在中断内放了一个简单的循环,做定点数乘法运算。结果,我发现,做100个乘法,采样回来的数据就变少了。因为我用C写的程序。我就查了一下编译后的汇编有多少行。包括循环中的乘法运算,总共只有750行左右。板子设置工作频率为40MHz。一条指令需要25纳秒执行。750行只要18.75微秒。远少于334微秒的中断周期。为什么我采样到的数据少了呢。
是不是ADC设置有问题。应该和TimerA0中断同步?或者应该在ADC0中断内进行数据处理?
请高手指点一下。
谢谢
[此贴子已经被作者于2005-12-23 23:57:32编辑过] |