[MSP430] WATCHDOG 사용하기
MSP430에서 Watchdog 사용하기위해 WDTCTL레지스터를 설정하면된다. 디폴트로 와치독은 동작하도록 되어 있고 내 코드에서는 SystemInit() 함수에서 와치독 사용하지 않도록 설정하고 있다.
void SystemInit(void)
{
int result,i;
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
WDTCTL레지스터를 제어하기 위해서는 Passwoard를 상위 레지스터가 기입해야 하는데 0x69를 입력하면 된다.
아래는 WDTCTL레지스터 이다.
와치독 사용하기 위해서는 WDTHOLD, WDTTMSEL 비트를 0으로 설정하면된다.
와치독 타이머 초기화는 WDTCNTL비트를 셋하면 초기화되어 와치독 리셋을 방지한다.
MSP430 Watchdog 드라이버 코드
#define WDT_ENABLE() WDTCTL = WDTPW;
#define WDT_DISABLE() WDTCTL = WDTPW+WDTHOLD;
#define WDT_RESET() WDTCTL = WDTPW+WDTCNTCL;
#define WDT_DISABLE() WDTCTL = WDTPW+WDTHOLD;
#define WDT_RESET() WDTCTL = WDTPW+WDTCNTCL;
MSP430 Watchdog 테스트 예제 코드
void main(void)
{
unsigned int cnt = 0;
SystemInit();
Led1Init();
Led1On();
for(cnt=0;cnt<3;cnt++)
{
Led1Toggle();
Delay(50);
}
Led1On();
//와치독 사용
WDT_ENABLE();
while(1)
{
//와치독 리셋
WDT_RESET();
}
}
{
unsigned int cnt = 0;
SystemInit();
Led1Init();
Led1On();
for(cnt=0;cnt<3;cnt++)
{
Led1Toggle();
Delay(50);
}
Led1On();
//와치독 사용
WDT_ENABLE();
while(1)
{
//와치독 리셋
WDT_RESET();
}
}
반응형