这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » R8C/1A使用内部时钟程序

共16条 2/2 1 2 跳转至
菜鸟
2008-07-28 16:23:18     打赏
11楼
非常感谢Fishs_new_life 和ammiezhang的热心回答,我的延时问题已解决,的确是全局变量搞的怪。
我有另一个疑问是:我使用了8M的内部高速振荡器。也就是8个NOP应该是(1/8M)*8=1us,理论上应该是这样吧?但我测试过,1000,000理论上是1s,而实际是4.6s左右,2000,000是8.83s(我用秒表估测的)。
我知道这个内部晶振精度不高,但好像也差太多了吧?不知道我哪里理解错了,请赐教。谢谢!

助工
2008-07-28 17:22:14     打赏
12楼

瑞萨的R8C/1A的运行时间,要考虑指令流水线与Que-buffer的存在。具体可参考瑞萨R8C的软件手册。内部高速振荡器的精度一般温度下在能保证在+-5%。延时时间如果要求精准的话,不推荐用这种方式。


菜鸟
2008-07-28 20:39:52     打赏
13楼

谢谢大哥,可是我还在想+-5%不可能有这么大的误差的啊,我计算有错吗?


助工
2008-07-29 09:28:23     打赏
14楼
具体的指令数计算比较复杂,因为涉及到指令Que-buffer,在软件手册里有一点说明,但不是很具体。要精确得到CPU的指令数,一个稍显笨的方法是在全功能仿真器或小型仿真器下看trance的结果。您先下载软件手册(第6章)看看:
http://documentation.renesas.com/eng/products/region/rtcn/mpumcu/rcj09b0006_0100z.pdf


菜鸟
2008-07-29 09:31:18     打赏
15楼

  前面已经提到过了,使用语句来计算周期的问题不在于时钟源精度,而是方法问题。
具体说就是和你写的程序的格式,所用到的语句有关系。
比如我举个例子,使用8MHz的主时钟:
1    使用NOP语句,连续写8000次,在这种情况下,延时时间是可以肯定的:125ns x 8000 = 1ms。

2    使用NOP语句,连续80次,在用for循环调用该语句100回,延时时间就不是:125ns x 80 x 100了。而应该约是125ns x  ( 2 + (3 + 2 + 80 + 3 + 5 + 4 ) x 100) = 1.2ms。
for循环的汇编代码和对应的CPU时钟如下:
         C语言                               汇编                                               CPU时钟
for( i = 0;                    MOV.W   #0,   400H(i的地址)                     2
       i < 100;               CMP.W   #100, 400H                                       3
{                                  JEQ.W    xx (如果,调到for的下一句)        2
      asm("NOP");      NOP      (80句NOP)                                     80
       i ++;                     ADD.W   #1,  400H                                           3
}                                  JMP         y(跳转到CMP语句)                      5 + 4 *                              

* 这个多出来的4个周期是由于瑞萨单片机内部有4字节的指令队列Buffer。在执行语句的时候,CPU会将后面的指令取道这个buffer中,以提高下一语句的执行效率。但是,这只是针对顺序语句而言,如果当前语句是跳转,那么buffer中预存的语句是无效的,这个时候CPU反而需要花时间去清空并重新load。

而LZ的程序中只有8个NOP,循环的次数却很多,所以误差很大。

3    综上所述,使用语句来计算时间是不可取的。除非你愿意写很长的NOP,然后配合少量的循环。

4    郑重推荐:如果需要精确计时,一定要使用定时器。


菜鸟
2008-07-29 12:41:59     打赏
16楼
这么详细的解释,让我受益颇深,再次向几位大哥致以真挚的谢意!谢谢~

共16条 2/2 1 2 跳转至

回复

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