原创
关于AT91SAM7复位控制器的一点使用经验
“基于上电复位单元的复位控制器 (RSTC) 处理系统的所有复位,而无需其它器件。”“复位控制器可以独立地、或同时驱动外部复位和外设及处理器复位。”
当用户把NRST引脚作为外部复位功能使用时,需要注意一下,下面是在IAR 5.0里面给出的例程中的一部分,作为控制DM9161A的复位。
// Execute reset
RSTC_SetExtResetLength(pRSTC, DM9161_RESET_LENGTH);
RSTC_ExtReset(AT91C_BASE_RSTC);
// Wait for end hardware reset
while (!RSTC_GetNrstLevel(pRSTC));
先设置外部复位的时长,范围从60μs到2s,手册给出了计算公式。然后启动外部复位。接着等待NRST引脚变高。如果在启动完外部复位之后,立刻检测NRST是否为高,在一些条件下,将会出现问题。例如NRST所带的负载较大(有个电容,或者是加了个外部的复位芯片并有多个芯片的RESET引脚与NRST相连)。带载过大时,NRST将会保持一段时间的高电平,如果在这时读入NRST的状态并判断其是否完成复位,将不能实现有效的复位时长。在这种情况下,程序往下执行时,就不能很好地控制其所需复位的外部器件,或者说是失败。
从程序的健壮性而言,在RSTC_ExtReset(AT91C_BASE_RSTC)函数与while (!RSTC_GetNrstLevel(pRSTC))之间,加上个延时将会更好。
文章评论(0条评论)
登录后参与讨论