打印

dspic内建函数 急求助

[复制链接]
2793|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yqypower|  楼主 | 2013-4-10 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在用C30编译器的时候发现 编译器不能启动DSP引擎,必须要用到DSP库或者是内建函数,但是 __builtin_mac 这条函数编译出错,很困惑啊
代码如下:
void Calc_ProData(void)
{
u8 i,j;
signed int tmp = 1;
signed int xVal, yVal;
signed int *xm,*ym;
register int reg_a asm("A");

_IF = 1; //整形运算

i = ProAcBuf.pcnt-SIZE_POINTS;
j = MeaAcBuf.mcnt-SIZE_POINTS;

xm = &cos_tab[j];
ym = &ProAcBuf.UAB[i];
//        reg_a = __builtin_clr();
reg_a = __builtin_lac(tmp,0);
reg_a = __builtin_movsac(&xm, &xVal, 2,&ym, &yVal, 2, 0,0);

#if 1
reg_a = __builtin_mac(reg_a, xVal, yVal,
  &xm, &xVal, 2,
  &ym, &yVal, 2, 0,0);           
#endif

#if 0
reg_a = __builtin_mac(reg_a, xVal, yVal,
  &xm, &xVal, 2,
  &ym, &yVal, 2, 0,0);        

reg_a = __builtin_mac(reg_a, xVal, yVal,
  &xm, &xVal, 2,
  &ym, &yVal, 2, 0,0);        

reg_a = __builtin_mac(reg_a, xVal, yVal,
  &xm, &xVal, 2,
  &ym, &yVal, 2, 0,0);        
#endif

//        tmp =  __builtin_sac(reg_a ,0);
}
cos_tab 在X空间  ProAcBuf 定义在Y空间
报错 error: Automatic generation of DSP instructions not yet supported; use __builtin_lac() instead
编译器版本 3.30  IDE 8.90
请帮忙看下 到底错在哪里了?非常感谢
沙发
yqypower|  楼主 | 2013-4-11 10:26 | 只看该作者
期待回复!!!!!!

使用特权

评论回复
板凳
yqypower|  楼主 | 2013-4-11 22:58 | 只看该作者
自己顶了!!!

使用特权

评论回复
地板
yqypower|  楼主 | 2013-4-12 10:42 | 只看该作者
别沉啦!!!!!!!

使用特权

评论回复
5
yqypower|  楼主 | 2013-4-15 21:48 | 只看该作者
请帮帮忙吧!!!!

使用特权

评论回复
6
yqypower|  楼主 | 2013-4-19 14:35 | 只看该作者
在 reg_a = __builtin_mac 指令前加一条__builtin_lac 问题解决了,但是编译之后也有一些附加的汇编指令,速度不够理想,后来直接用汇编解决了,还是汇编好啊

使用特权

评论回复
7
XIEYUANBIN| | 2013-4-21 22:25 | 只看该作者
碰到这种事,我都是直接汇编

使用特权

评论回复
8
杨立业yly| | 2013-8-10 15:48 | 只看该作者
yqypower 发表于 2013-4-11 10:26
期待回复!!!!!!

你好,用dsp内核需要加载库吗?有dsp内核使用这方面的资料吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

30

帖子

0

粉丝