jacktom 发表于 2015-3-17 10:56:29

同样的程序在28346里运行时间比在28335里的时间长,什么原因?

28346的速率是28335的两倍,但是为什么同样的程序在TMS320C28346里执行的时间比在28335里执行的时间长很多,几乎是2倍,这是什么原因?求指导!谢谢!

steaven2000 发表于 2015-3-17 11:50:09

1、你确认是同样的代码,一字不差?
2、检查时钟
3、测过几次?是否可能刚好执行过程中被中断打断导致?

hkchenhao 发表于 2015-3-17 11:53:43

估计是时钟不对

jacktom 发表于 2015-3-17 14:56:26

steaven2000 发表于 2015-3-17 11:50
1、你确认是同样的代码,一字不差?
2、检查时钟
3、测过几次?是否可能刚好执行过程中被中断打断导致?


确实是一样的代码,时钟正确的,执行时间小于中断周期,其他还有可能是什么原因?
谢谢~

jacktom 发表于 2015-3-17 14:57:24

hkchenhao 发表于 2015-3-17 11:53
估计是时钟不对

时钟对的,测过的

steaven2000 发表于 2015-3-17 16:01:57

jacktom 发表于 2015-3-17 14:56
确实是一样的代码,时钟正确的,执行时间小于中断周期,其他还有可能是什么原因?
谢谢~ ...

那不就对了!
你要确保这段代码在执行时不会被任何中断打断才行。
举例说明吧:假定测试代码运行2ms,中断运行10ms。
第一次,测试代码运行了2ms,完了,测试时间是2ms;
第二次,测试代码运行了1ms,中断来了,执行10ms,然后测试代码继续运行1ms,完了,测试时间是12ms

你能说第二次这段代码运行时间是第一次的6倍?更何况你的中断可能发生多次,更何况你的测试代码里面有if/else条件运行语句,这些影响你分析了吗?

siyeb 发表于 2015-3-17 19:15:36

怎么判断出慢两倍?IO翻转还是CPU执行计数?

jacktom 发表于 2015-3-18 09:46:38

steaven2000 发表于 2015-3-17 16:01
那不就对了!
你要确保这段代码在执行时不会被任何中断打断才行。
举例说明吧:假定测试代码运行2ms,中 ...

我是这样测试的,一进中断就让一个IO口输出1,中断最后再让它输出0,用示波器看的。这样应该不会有你说的问题吧~

jacktom 发表于 2015-3-18 09:47:56

siyeb 发表于 2015-3-17 19:15
怎么判断出慢两倍?IO翻转还是CPU执行计数?

是IO翻转~

siyeb 发表于 2015-3-18 10:07:27

jacktom 发表于 2015-3-18 09:47
是IO翻转~

那程序是在FLASH里运行还是SRAM还是内部RAM?关掉中断呢?

jacktom 发表于 2015-3-18 11:03:16

siyeb 发表于 2015-3-18 10:07
那程序是在FLASH里运行还是SRAM还是内部RAM?关掉中断呢?

是用仿真器在ram里运行的

xzp21st 发表于 2015-3-18 11:08:18

编译器设置都一样有没有设置优化什么的

siyeb 发表于 2015-3-18 11:12:57

jacktom 发表于 2015-3-18 11:03
是用仿真器在ram里运行的

哎呀,那就奇怪了。
IO反转是进中断置高,出中断置低?那两相比较,方波的频率变化多少?占空比呢?28346的占空比应该比28335的要小才对?

jacktom 发表于 2015-3-18 14:32:42

siyeb 发表于 2015-3-18 11:12
哎呀,那就奇怪了。
IO反转是进中断置高,出中断置低?那两相比较,方波的频率变化多少?占空比呢?28346 ...

频率就是中断的频率,时间确实比28335要长,太诡异了。。。

siyeb 发表于 2015-3-18 16:10:32

jacktom 发表于 2015-3-18 14:32
频率就是中断的频率,时间确实比28335要长,太诡异了。。。

写一个定时中断的程序比如4us,在中断中翻转IO,看看两个芯片的输出是否一致。

jacktom 发表于 2015-3-18 16:14:30

siyeb 发表于 2015-3-18 16:10
写一个定时中断的程序比如4us,在中断中翻转IO,看看两个芯片的输出是否一致。 ...

好的,我试试。谢谢~
页: [1]
查看完整版本: 同样的程序在28346里运行时间比在28335里的时间长,什么原因?