[Atmel] 跑一下SAM4N例程(十六):MATRIX距阵

[复制链接]
1261|1
 楼主| ddllxxrr 发表于 2015-3-26 21:49 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2015-3-26 21:52 编辑

这个例程是测试MATRIX即混合矩阵



本例程的第一个测试是运行在without default master
第二个测试是运行在with last access master

象前几个例程一样,首先打开:

而这两个定义是在这里:martix.h

  1. /** \brief Matrix slave: default master type */
  2. typedef enum {
  3.         MATRIX_DEFMSTR_NO_DEFAULT_MASTER    = MATRIX_SCFG_DEFMSTR_TYPE(0),
  4.         MATRIX_DEFMSTR_LAST_DEFAULT_MASTER  = MATRIX_SCFG_DEFMSTR_TYPE(1),
  5.         MATRIX_DEFMSTR_FIXED_DEFAULT_MASTER = MATRIX_SCFG_DEFMSTR_TYPE(2)
  6. } defaut_master_t;


并且用了滴答时钟记数看看哪个用时多。

  1. tatic uint32_t toggle_led_test(uint32_t ul_dly_ticks)
  2. {
  3.         int32_t ul_cnt = 0;
  4.         uint32_t ul_cur_ticks;

  5.         ul_cur_ticks = g_ul_ms_ticks;
  6.         do {
  7.                 ul_cnt++;
  8.         #if SAM4CM
  9.                 ioport_toggle_pin_level(LED4_GPIO);
  10.         #else
  11.                 ioport_toggle_pin_level(LED0_GPIO);
  12.         #endif
  13.         } while ((g_ul_ms_ticks - ul_cur_ticks) < ul_dly_ticks);

  14.         return ul_cnt;
  15. }


最后在程序中转换主控制:

  1. /* First, test with Round-Robin arbitration without default master */
  2.         puts("-- Test1: configure Round-Robin arbitration without default master. --\r");
  3.         for (ul_slave_id = 0; ul_slave_id < MATRIX_SLAVE_NUM; ul_slave_id++) {
  4. #if (!SAM4E) && (!SAM4C) && (!SAM4CP) && (!SAM4CM)
  5.                 matrix_set_slave_arbitration_type(ul_slave_id,
  6.                                 MATRIX_ARBT_ROUND_ROBIN);
  7. #endif
  8.                 matrix_set_slave_default_master_type(ul_slave_id,
  9.                                 MATRIX_DEFMSTR_NO_DEFAULT_MASTER);
  10.         }
  11.         ul_cnt = toggle_led_test(1000);
  12.         printf("Led toggled %ld times in one second\n\r", (long)ul_cnt);

  13.         /* Second, test with Round-Robin arbitration with last access master */
  14.         puts("-- Test2: configure Round-Robin arbitration with last access master. --\r");
  15.         for (ul_slave_id = 0; ul_slave_id < MATRIX_SLAVE_NUM; ul_slave_id++) {
  16. #if (!SAM4E) && (!SAM4C) && (!SAM4CP) && (!SAM4CM)
  17.                 matrix_set_slave_arbitration_type(ul_slave_id,
  18.                                 MATRIX_ARBT_ROUND_ROBIN);
  19. #endif
  20.                 matrix_set_slave_default_master_type(ul_slave_id,
  21.                                 MATRIX_DEFMSTR_LAST_DEFAULT_MASTER);
  22.         }
  23.         ul_cnt = toggle_led_test(1000);
  24.         printf("Led toggled %ld times in one second\n\r", (long)ul_cnt);



运行的结果如下:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
okyouwin 发表于 2015-3-30 18:08 | 显示全部楼层
,前排学习。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部