mini2440硬件篇之看門狗
1.硬件原理
看門狗類似定時(shí)器,它的原理是一定時(shí)間內(nèi)要喂狗(實(shí)質(zhì)是往某個(gè)寄存器寫值),否則,它就會(huì)咬你(就是重啟)。
2.芯片手冊
3.mini2440電路圖
4.S3C2440寄存器
看門狗時(shí)鐘源是PCLK,通過預(yù)分頻器后,會(huì)再次分配得到4種頻率,可以通過配置選擇哪一個(gè)作為看門狗工作頻率。第一次啟動(dòng)看門狗,往WTCNT寫初始值,每個(gè)時(shí)鐘周期WTCNT減1,在減到0以前必須再給它賦值,否則到0后會(huì)發(fā)出復(fù)位信號(hào),然后從WATDAT自動(dòng)再裝入。
WTCON控制寄存器
[0]計(jì)數(shù)為零是否輸出復(fù)位信號(hào)
[2]中斷使能
[4:3]時(shí)鐘選擇,即分配比例
[5]啟動(dòng)看門狗
[15:8]預(yù)分頻系數(shù)
watchdog.h
#ifndef__WTD_H__
#define__WTD_H__
voidWatchDogInit(void);
#endif
watchdog.c
#include"common.h"
staticvoid__irqWatchDogHandler(void)
{
rGPBDAT|=1;//蜂鳴器響
//清中斷標(biāo)志位
ClearPending(BIT_WDT_AC97);
ClearSubPending(BIT_SUB_WDT);
rWTCNT=50000;
}
voidWatchDogInit(void)
{
rWTCON=(0xF9<<8);//Prescaler=249,Division=16,時(shí)鐘頻率為12.5kHz
rWTCON&=~(1<<0);//禁止看門狗復(fù)位
rWTDAT=50000;//設(shè)置看門狗定時(shí)器超時(shí)時(shí)間為4秒(50÷12.5)
rWTCNT=50000;
rINTSUBMSK=~(BIT_SUB_WDT);//使能看門狗子中斷
rINTMSK=~(BIT_WDT_AC97);//使能看門狗和AC97中斷
pISR_WDT_AC97=WatchDogHandler;
rWTCON|=(1<<2|1<<5);//開啟看門狗定時(shí)器中斷
}