这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » zvvv试用手记 Math_Api性能测试

共7条 1/1 1 跳转至

zvvv试用手记 Math_Api性能测试

菜鸟
2010-11-27 22:39:57     打赏

Fujitsu  Easy Kit非常小巧精致,功能也很丰富,主要优势还是在于其低廉的价格,对于足以应付大多数一般应用。 拿到手之后先是查阅资料。然后配置各项参数。先后按照示例代码运行了点灯;时钟;PWM;..... 一切顺利。 具体的开发环境搭建,和各项基本功能代码论坛里面各位大大已经写的很清楚了。在这里就不再重复了。在这里主要给出Math_Api的用法,和系能测试。 一般用于AD转换的测量电路中会用到数字滤波的功能。这方面的工作一般由Dsp完成,为节约成本对要求不高的场合常用单片机资源进行的滤波运算。滤波运算的过程中难免用到大量的乘除法运算。而两数相乘就会出现溢出问题; Fujitsu的Math_api就是为了解决F²MC-8FX系列8位MCU乘除法运算位溢出问题,而开发的算法库。本文测试了其在算法的性能。 测试代码(在 halibote523 的基础上进行修改): 

#include "mb95200.h"
#include "MATH_API.h"
unsigned int Systemtime;
/******************************************************************************
NAME: InitCompTimer();
FUNCTION: initial timer for the interval timer (Free run) function
******************************************************************************/
void InitCompTimer (void)
{
  T01DR = 0x0f; // set count value (high 8 bit)
  T00DR = 0xff ; // set count value (low 8 bit)
  TMCR0 = 0x10; // 16-bit, no filtering
  T00CR0 = 0x82; // interval timer in free run mode // enable IF flag interrupt
  T00CR1 = 0xA1; // enable interrupt, enable output // start timer
}
/******************************************************************************
name: CompTimer ();
function: enter ISR while the counter value matches the pre-set value
******************************************************************************/

__interrupt void CompTimer (void)
{
  T00CR1_IE = 0; // disable interrupt
  T00CR1_IF = 0; // clear flag //... // interrupt service routine
  Systemtime++;
  T00CR1_IE = 1; // enable interrupt
}
/******************************************************************************
NAME: delay ();
FUNCTION: test Multiplication func time
******************************************************************************/

void delay(unsigned int delay)
{
  unsigned long _t;
  while(delay--)
  { //asm("\tNOP"); //_t = 0xff + delay;
  _t = UCharMulUInt(0xff ,delay); //_t = 0xff * delay;
  }
}
/******************************************************************************
NAME: main ();
FUNCTION: main loop
******************************************************************************/

void main (void)
{
  InitCompTimer();
  InitIrqLevels();
  __EI();
  while(1)
  {
  delay(0xffff);
  }
}

 分别测试 运行一次delay函数 加法、接使用乘法、和UCharMulUInt()(Math_Api提供的函数)时,系统产生时钟中断的次数(systemtime)。 
测试结果如下:加法 0x2C (62)直接使用乘法 0x44 (98) UCharMulUInt() 0x94 (148) 由此可见,Math_Api在解决溢出的问题的同时也带来了近一倍的硬件资源的消耗。如果没有溢出可能的时候还是尽量少使用Math_Api。 
附录: Fujitsu Math_api lib库的使用:下载链接 http://www.fujitsu.com/downloads/CN/fmc/MCU/mb95260/MCU-AN-500073-E14_Math_Lib.rar 应用文档(英文) http://www.fujitsu.com/downloads/CN/fmc/MCU/mb95260/MCU-AN-500073-E-14.pdf [img]http://uphotos.eepw.com.cn/zvvv/thumb/e0cfa1dde03297d711710fa78eb6d1d5.png[/img] [img]http://uphotos.eepw.com.cn/zvvv/thumb/590af5109f8b2ea8d0e9be916dd54297.png[/img] [img]http://uphotos.eepw.com.cn/zvvv/thumb/af88e1d91a0e6e7533733705940da851.png[/img] [img]http://uphotos.eepw.com.cn/zvvv/thumb/22051530702682018337084864f75eb9.png[/img] [img]http://uphotos.eepw.com.cn/zvvv/thumb/28c492084034dd905c33cd7f49c893e1.png[/img] [img]http://uphotos.eepw.com.cn/zvvv/thumb/1b5b0a5abea399dfce1809898e100c9a.png[/img]




关键词: 试用     手记     性能     测试    

菜鸟
2010-11-27 22:42:28     打赏
2楼
为什么格式全乱了? 哪位大大说下怎么整格式?

院士
2010-11-29 08:45:41     打赏
3楼
是不是放在文本中后再copy过来会好些?

菜鸟
2010-12-01 22:53:39     打赏
4楼
不行呢,我加html标签都改不了,莫非是和chrome不兼容?

专家
2010-12-02 09:49:52     打赏
5楼

我给你把程序的格式修改了一下,这样大家好看一点!!程序还是你原先的程序!只是为了让大家放点好看!

 


助工
2010-12-08 17:49:58     打赏
6楼
mark

助工
2011-03-30 22:28:10     打赏
7楼
楼主使用的是非IE浏览器吧?

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]