打印
[Atmel]

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

[复制链接]
754|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ddllxxrr 于 2015-3-26 21:52 编辑

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



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

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

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

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


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

tatic uint32_t toggle_led_test(uint32_t ul_dly_ticks)
{
        int32_t ul_cnt = 0;
        uint32_t ul_cur_ticks;

        ul_cur_ticks = g_ul_ms_ticks;
        do {
                ul_cnt++;
        #if SAM4CM
                ioport_toggle_pin_level(LED4_GPIO);
        #else
                ioport_toggle_pin_level(LED0_GPIO);
        #endif
        } while ((g_ul_ms_ticks - ul_cur_ticks) < ul_dly_ticks);

        return ul_cnt;
}


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

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

        /* Second, test with Round-Robin arbitration with last access master */
        puts("-- Test2: configure Round-Robin arbitration with last access master. --\r");
        for (ul_slave_id = 0; ul_slave_id < MATRIX_SLAVE_NUM; ul_slave_id++) {
#if (!SAM4E) && (!SAM4C) && (!SAM4CP) && (!SAM4CM)
                matrix_set_slave_arbitration_type(ul_slave_id,
                                MATRIX_ARBT_ROUND_ROBIN);
#endif
                matrix_set_slave_default_master_type(ul_slave_id,
                                MATRIX_DEFMSTR_LAST_DEFAULT_MASTER);
        }
        ul_cnt = toggle_led_test(1000);
        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

2398

主题

6948

帖子

66

粉丝