打印
[DSP编程]

看门狗实验中pscVal与wdtcr的关系

[复制链接]
1306|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangmm11|  楼主 | 2014-11-19 14:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yangmm11 于 2014-11-20 10:19 编辑

在Timer例程中,程序如下:
* This is an example of the usage of WDTIM functions for 5509.
\*----------------------------------------------------------------------*/
#include <csl.h>
#include <csl_wdtim.h>
#include <stdio.h>

int i, pscVal;
WDTIM_Config getConfig;
WDTIM_Config myConfig = {
     0x1000,          /* WDPRD */
     0x0000,          /* WDTCR */
     0x1000           /* WDTCR2 */
};


main()
{

    CSL_init();

#if (_WDTIM_SUPPORT)
    WDTIM_config(&myConfig);
    WDTIM_FSET(WDTCR, WDOUT, 1);           /* Connect to NMI */
    WDTIM_FSET(WDTCR, TDDR, 0xF);          /* Value to load PSC field */  
    WDTIM_FSET(WDTCR2, PREMD, 0);          /* Set direct mode */
     WDTIM_service();      /* enable watchdog */
        for (;;)
    {                     

        WDTIM_getConfig(&getConfig);  
       pscVal = WDTIM_FGET(WDTCR,PSC);
         printf("pscVal: %x, wdtcr: %x\n",
             pscVal, getConfig.wdtcr);   


        /* write periodically to WDTIMER  - when this line is commented out,
           the watchdog times out, WDFLAG set to 1, indicating
           that a Watchdog time-out occurred.*/
        WDTIM_service();         

    }           //end for loop
#endif
}
程序运行完之后,单步执行输出结果为:
pscVal: c, wdtcr: 134f
pscVal: 4, wdtcr: 114f
pscVal: 8, wdtcr: 124f
pscVal: c, wdtcr: 134f

。。。。。。
1、手册中PSC代表的是wdtcr中的9~6位,但是上述结果,pscVal的值也不是wdtcr中的9~6位的值啊,这是为什么?

其中,当wdtcr=134f时,9~6位值为1101=13;
当wdtcr=114f时,9~6位值为0101=3;
当wdtcr=124f时,9~6位值为1001=9;
2、在程序        WDTIM_getConfig(&getConfig);         pscVal = WDTIM_FGET(WDTCR,PSC);
下面如加入 WDTIM_getConfig(&getConfig);  
得到寄存器wdtcr中的值会变化,这是为什么?


相关帖子

沙发
yangmm11|  楼主 | 2014-11-20 09:18 | 只看该作者
急急急,在线等。。。
还有就是程序中为什么要两次用到
WDTIM_service();

使用特权

评论回复
板凳
zhangmangui| | 2014-11-21 23:15 | 只看该作者
yangmm11 发表于 2014-11-20 09:18
急急急,在线等。。。
还有就是程序中为什么要两次用到
WDTIM_service();

每次for循环是不是关了看门狗   然后使能一下

使用特权

评论回复
地板
zhangmangui| | 2014-11-21 23:17 | 只看该作者
yangmm11 发表于 2014-11-20 09:18
急急急,在线等。。。
还有就是程序中为什么要两次用到
WDTIM_service();

里面有一本彭启宗组织翻译的书   你看看

C5000资料整理(代码+原理图+电子版书等)

使用特权

评论回复
5
yangmm11|  楼主 | 2014-12-1 08:50 | 只看该作者
zhangmangui 发表于 2014-11-21 23:17
里面有一本彭启宗组织翻译的书   你看看

C5000资料整理(代码+原理图+电子版书等) ...

1、对于这个程序,我知道每个寄存器中域值所代表的含义,但就是对于为什么pscVal的值对应的不是wdtcr中的9~6位的值呢?
2、在看门狗状态转换图中,5C6H与A7EH的值,在程序中哪部分体现出来了呢?


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

67

帖子

0

粉丝