搜索
bottom↓
回复: 11

怎样优化能加快这段代码的执行效率(已解决)

[复制链接]

出0入0汤圆

发表于 2014-5-24 13:31:46 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-5-25 22:06 编辑

#defined S_Value  //采样值

unsigned char i;

Amplitude = Adc_Amplitude();   //ADC读入幅值

// 幅值计算
unsinged int Amplitude_calculate(unsigned char i)
{
    double a,b,c;
    unsigned int Result;

    a = (double)i /S_Value;
    b = sin(2 * 3.14159 * a);
    c = (double)(Amplitude * b);
    Result = (WORD)c + 2048;

    return Result;
}


//输出正弦波
for(i = 0; i <S_Value;i++)
{
   DAC_SET(1, Amplitude_calculate(i);
}

以上代码是用DAC来拟合输出正弦波,幅值可以通过外部旋钮调整,使用这段代码的调整幅值输出正弦波的功能可以实现,但是如果采样次数多的话输出频率上不去
目前使用的是PIC18F45K80单片机,使用外部16MHZ晶振,4倍频之后是64MHZ系统时钟,采样值取128的话,正弦波频率只有几个HZ,现在要实现40HZ左右的输出,采样值i就只能取16了
求教怎样做才能使执行效率更高在高采样值的前提下(比如说128),输出40HZ的正弦波

出20入25汤圆

发表于 2014-5-24 13:33:40 | 显示全部楼层
你这么多的浮点运算,能快得了吗

出0入0汤圆

 楼主| 发表于 2014-5-24 13:43:54 | 显示全部楼层
chenchaoting 发表于 2014-5-24 13:33
你这么多的浮点运算,能快得了吗

其他的倒还好办,大不了乘以一个基数作整型运算,比如说乘以1000,就是这个sin()计算貌似不怎么好办

出0入0汤圆

 楼主| 发表于 2014-5-24 13:46:02 | 显示全部楼层
或者我把sin()值做个表,直接查表?

出0入8汤圆

发表于 2014-5-24 13:46:03 来自手机 | 显示全部楼层
sin用cordic算法或是查表
自己搞个牛顿迭代也行

出0入0汤圆

发表于 2014-5-24 14:11:40 来自手机 | 显示全部楼层
用pic的单片机来砸场子啊?

出0入0汤圆

发表于 2014-5-24 14:15:44 | 显示全部楼层
要快只能用查表输出

出0入0汤圆

 楼主| 发表于 2014-5-24 14:41:20 | 显示全部楼层
本帖最后由 cn_x 于 2014-5-24 14:44 编辑
wangpengcheng 发表于 2014-5-24 14:11
用pic的单片机来砸场子啊?


现在只会用这个,Kinetis还在学习中,东西要保证完成,只能先用着PIC了

弄完这个,整个K60板子来玩,手上的K20资源不够

kinetis有没有DAC比较多的型号? 貌似都是两个通道来着

出0入0汤圆

 楼主| 发表于 2014-5-24 14:42:06 | 显示全部楼层
cn_x 发表于 2014-5-24 14:41
现在只会用这个,Kinetis还在学习中,东西要保证完成,只能先用着PIC了

谢谢各位,现在用查表可以做到100HZ左右了,128次采样

出0入0汤圆

发表于 2014-5-24 19:44:15 | 显示全部楼层
cn_x 发表于 2014-5-24 14:42
谢谢各位,现在用查表可以做到100HZ左右了,128次采样

换个思路就不一样了。

出0入0汤圆

发表于 2014-5-24 20:19:28 | 显示全部楼层
把正弦表弄细一点儿。用类似DDS的方法累加相位,然后查表。另外不要用浮点。

出0入0汤圆

发表于 2014-5-24 21:40:46 | 显示全部楼层
可以试着把公式分解后提取固定值出来先算好,然后以常量的方式代入。
曾经用STC以16K载波产生SPWM,输出40-400Hz频率/幅值可调的正弦波。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 23:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表