首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教:我的设计有错吗?56F805

请教:我的设计有错吗?56F805

我程序设计如下:

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编辑过]

LEON

没有人回答

自己顶一下。
LEON
我也在做,我是用56F8013,前两天我也碰见,关于中断采样的问题,后来发现根本不能在中断里面用浮点数,不然中断周期会变长!你的问题应该是中断设置的问题!
你ADC采样用的是什么方式; Loop sequential or Loop Simultaneously mode 或别的模式. 因为805总共只有8个结果寄存器,但你怎么读了12个数呢?
要有你的ADC初始化程序。
用 CW7.0 Bean 好了。可能哪些寄存器没有设置对。
现在在调试 SPWM 。谁有例子参考一下啊。
我用定时器中断采样(334 us)电压电流。在这个中断中计算出需要的占空比。
在PWM更新中断(1kHz)里,将占空比送到 PWM 所需 channel 的寄存器内。
发现生成的PWM不对。不知道大家是怎么做的。
LEON
返回列表