This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

切换时间

设计的双机热备冗余结构设备,那切换时间该如何确定呢?

如果主机 ESM信号产生,在200ms定时器中断中检测到,并切换到备机。

那如何确定呢,指令周期都是us 级的,

比如执行sci()函数、can中断接收函数()等的时间大概是多少?

  • Hi ml0943,

       由于不知道你设计的这个双机热备冗余系统是适用于什么样的安全标准。按照功能性安全系统的设计标准,是要求安全系统要在检测到故障发生后,在能接受的相应时间内,触发你的后备安全机制。这个可接受的时间范围一般都是安全标准定义,或是你们的终端客户要求的。

    如果你要求的是,如何确定芯片内部运行的时间,这个一般有几种办法,第一种也是最常用的一种就是去设置定时器或是看门狗,这样比较容易实现定时响应机制。如果你对时间要求的更为严格,需要知道中断响应所需的时间或是指令周期的话,你可以通过我们的PMU模块去测试在中断函数里面从发出中断信号到响应中断并完成终端操作这整个过程运行了多少时钟周期,这是可以测得到的。

      你可以在sci()或是can接收函数的调用开始前使能PMU模块,然后在函数接收停止该模块,然后相减得到函数运行的周期。当然如果你要求严格的话,还需要加上启动和停止PMU的补偿时间。这样会更为准确一些。

    希望这些对你有所帮助。

    谢谢

    ken

     

  • 你好,论坛帖子 对PMU进行了简单描述,但是我在halcodegenor中并没有找到pmu模块,请问有没有这个模块的相关例程,学习哈,谢谢

    http://www.deyisupport.com/question_answer/microcontrollers/hercules/f/70/p/51671/116344.aspx#116344

  • Hi ml0943,

       Ok, 没有问题。附件里面就是我上传的关于使用PMU模块测试函数运行周期的一个工程。

    在这个工程的源代码里面,主要有两个操作,第一个是使能PMU,然后需要你添加你的测试程序到我上面指定的位置。

    第二个操作就是单独使能和关闭PMU来测量启动这个功能的补偿值。

    你可以参考我的例子,做做测试,如果有什么问题。我们再交流。

    谢谢

    ken

  • 你好,这个pmu的测试程序时在main函数中的,但是  我是在canmessagenotification()函数中接收数据,在rtinotification()函数中进行数据运算处理的。

  • 还有个问题是:我看手册中也有 watchdog,PMU单元在测试代码运行时间方面 比WATCHDOG有什么优势吗?

  • Hi ml0943,

       我们这个PMU的程序你可以放到任何的函数中,你只要把它的你要测试的程序的具体语句的两端。换句话就是,在被测函数真正执行之前使能PMU,然后再函数运行完以后,在结束PMU,然后读出它测试到的cycle数值。

    谢谢

    ken

  •  我只需要在rtinotification()函数中 ,测试定时器中断函数中的代码运算时间就行?

    PMU比watchdog有什么优势呢?看手册 也有watchdog

  • Hi ml0943,

       至于你说道的watchdog,你要使用这个功能模块是测试代码运行时间的话,相当于也是用一个定时器去计时,然后得到它的在这段时间内跑了多少cycyle。

       其实这两种方法都是可以用的,本身方面来说差别也不大。但是有一个问题就是,如果你需要连续测试程序运行时间的话,如果用定时器的话,它需要使能,然后停止,然后再复位。操作起来会比PMU琐碎一点。

       如果最简单的话,你还是可以采用翻转I/O口电平的方法,然后通过示波器去读取具体的数值。

    谢谢

    ken

  • 这个运行得到的时间单位是?我计算定时器中断函数的执行时间,

    观察变量time_PMU_code是2.27272734 E-1  这是?

    2.27272734秒=227.272734毫秒?

  • Hi Ml0943,

      运行PMU程序,得到的cycles_PMU_code是测试得到的运行cycle 数,

    time_PMU_code是具体的运行时间,它的单位是us。

    谢谢

    ken