大学生电子设计竞赛
直播中

蔡维林

7年用户 244经验值
私信 关注
[问答]

请问如果我设置DTC的触发为IRQ中断,正常模式,count为10,那触发一次IRQ中断是搬运一次数据吗?

如果我设置DTC的触发为IRQ中断,正常模式,count为10,那触发一次IRQ中断是搬运一次数据还是10次?进入IRQ中断函数是10次搬运完,还是搬运一次进入一次中断,搬运完10次后停止?

回帖(9)

李德鹏

2018-7-23 01:05:14
这个是可以选择的吧?
 
 
举报

蔡维林

2018-7-23 01:22:39
引用: szzjfyp 发表于 2018-7-23 01:05
这个是可以选择的吧?
 
 

这两个 触发方式有什么不同?谢谢
举报

李德鹏

2018-7-23 01:29:39
引用: 梓沐凡晨 发表于 2018-7-23 01:22
这两个 触发方式有什么不同?谢谢

上面的是搬运所有的数据才触发一次中断,后面是搬运一次数据触发一次中断。
你看这个测试的程序,用了cmt0中断触发DTC,
搬运256个数据。
dtc_sar_addr[]是源地址的数据,dtc_dst_addr[]是目的地址的数据。
如果是上面的触发方式,dtc_int_cnt结果是0;如果是下面的触发方式,结果不为0
static void r_cmt_cmi0_interrupt(void)
{
    /* Start user code. Do not edit comment generated here */
if(dtc_sar_addr[255] != dtc_dst_addr[255])
{
dtc_int_cnt++;
nop();
}
举报

蔡维林

2018-7-23 01:49:33
引用: szzjfyp 发表于 2018-7-23 01:29
上面的是搬运所有的数据才触发一次中断,后面是搬运一次数据触发一次中断。
你看这个测试的程序,用了cmt0中断触发DTC,
搬运256个数据。

奥,谢谢,还有就是如果CMT0定时5ms,那 这两种是不是都是5ms搬运一次,第一种是256*5ms搬运完触发中断,第二种是每5ms触发一次中断,搬运完触发256次中断?
举报

李德鹏

2018-7-23 02:09:32
引用: 梓沐凡晨 发表于 2018-7-23 01:49
奥,谢谢,还有就是如果CMT0定时5ms,那 这两种是不是都是5ms搬运一次,第一种是256*5ms搬运完触发中断,第二种是每5ms触发一次中断,搬运完触发256次中断?

测试是这样,如果count不为1,每搬运一次都要有触发。
两种的区别是搬运完是否有中断。
 
如果同时要搬运很多数据,建议使用BLOCK模式,count=1。
这样只要触发一次,就将所有的数据传送。

 
举报

蔡维林

2018-7-23 02:21:37
引用: szzjfyp 发表于 2018-7-23 02:09
测试是这样,如果count不为1,每搬运一次都要有触发。
两种的区别是搬运完是否有中断。
 

奥,谢谢,明白了
举报

蔡维林

2018-7-23 02:40:12
引用: szzjfyp 发表于 2018-7-23 02:09
测试是这样,如果count不为1,每搬运一次都要有触发。
两种的区别是搬运完是否有中断。
 

这样设置为什么在目标地址只有两个字节的数值变了,其他的还为初始值0,程序想让DTC触发一次搬运8位,共搬运600次
举报

李德鹏

2018-7-23 02:59:53
引用: 梓沐凡晨 发表于 2018-7-23 02:40
这样设置为什么在目标地址只有两个字节的数值变了,其他的还为初始值0,程序想让DTC触发一次搬运8位,共搬运600次

请检查你的触发中断是否只有2次进中断
举报

h1654155275.5842

2018-7-23 03:05:46
引用: 梓沐凡晨 发表于 2018-7-23 02:40
这样设置为什么在目标地址只有两个字节的数值变了,其他的还为初始值0,程序想让DTC触发一次搬运8位,共搬运600次

原地址:0x0.。。。。    从哪来哈??
举报

更多回帖

发帖
×
20
完善资料,
赚取积分