3 Replies Latest reply on Jan 14, 2020 6:56 PM by ShipingW_81

    看门狗定时器的喂狗时间和多APP看门狗的问题请教

    JeHa_3912621

      参考例程,在看门狗定时器时间的配置上,我看到如下函数:

      /* Step 3- Write match value */

      #if(WDT_DEMO == WDT_INTERRUPT_DEMO)

      Cy_WDT_SetMatch(WDT_MATCH_COUNT);

      #else

      Cy_WDT_SetMatch(0);

      #endif

       

      我想问的是如果我想自己配置看门狗复位的时间,在哪里配置。  

      2.另外:

                 如果我在我的app1里面加入了看门狗, 我的app0没有喂狗操作。 当我的程序有app1跳转到app0后,是否会因为不喂狗而导致复位。 另外我的app1如果引起了看门狗复位,那么是复位到app0的入口开始执行还是复位到app1的入口开始执行。

        • 1. Re: 看门狗定时器的喂狗时间和多APP看门狗的问题请教
          ShipingW_81

          WDT复位的时间可以通过设置ignore bits 缩短, 但是没有办法延长 -

          /* Step 2- Write the ignore bits - operate with full 16 bits */

          Cy_WDT_SetIgnoreBits(0);

           

          你说的WDT复位的情况是可能会发生的,如果app1引起了复位,会复位到app0的入口开始执行。

          • 2. Re: 看门狗定时器的喂狗时间和多APP看门狗的问题请教
            JeHa_3912621

            /* Step 2- Write the ignore bits - operate with full 16 bits */

            Cy_WDT_SetIgnoreBits(0);

            配置为0,已经是最长的值了? 我实际测试发现看门狗复位时间大概2~3秒。 那是不是看门狗复位的最长间隔也就是这么长了。

             

            另外我还想确认一下,我的app1增加了看门狗复位的程序。如果我控制app1程序跳转到app0执行, 那我的app0也要增加喂狗的程序。  不然我的app0会经常性的发生复位?

            Cy_Bootload_ExecuteApp(0);    这个函数无法禁止看门狗程序停止?  

             

            我之前用的stm32做iap的时候,stm32的app1软件复位以后,会直接跳转到app0入口执行,并且类似于上电复位。看门狗会停止。 只有跳转到app1,初始化了看门狗后才会执行。 我想知道cy的是否也是这么做的? 或者如果不是这么做的,那我在程序执行过程中能否通过函数禁止看门狗程序继续执行?  谢谢!!

            • 3. Re: 看门狗定时器的喂狗时间和多APP看门狗的问题请教
              ShipingW_81

              对于你目前使用的Free runninf WDT来说是最长的复位时间了,若需要把这个时间延长的话,需要使用Muti-counter WDT, 通过两个counter级联,counter1时钟源为counter所产生的中断,这样以counter0 match的时间为单位,可以配置任意长的时间。

              MCWDT counters级联code example可以参考 - https://www.cypress.com/documentation/code-examples/ce220061-psoc-6-mcu-multi-counter-watchdog-interrupts

               

              关于app1跳转到app0后看门狗复位的情况,我又核实了下,应该是会停止运行的,如你所说,只有跳转到app1后初始化后才会重新运行。

              1 of 1 people found this helpful