dsPIC33 와치독 타이머 테스트
dsPIC33 와치독 타이머 블록도
와치독 옵션비트
_FWDT(WDTPRE_PR32 & WDTPOST_PS2048 & WINDIS_OFF & FWDTEN_ON);
/*
** Watchdog postscaler:
** WDTPOST_PS1 1:1
** WDTPOST_PS2 1:2
** WDTPOST_PS4 1:4
** WDTPOST_PS8 1:8
** WDTPOST_PS16 1:16
** WDTPOST_PS32 1:32
** WDTPOST_PS64 1:64
** WDTPOST_PS128 1:128
** WDTPOST_PS256 1:256
** WDTPOST_PS512 1:512
** WDTPOST_PS1024 1:1,024
** WDTPOST_PS2048 1:2,048
** WDTPOST_PS4096 1:4,096
** WDTPOST_PS8192 1:8,192
** WDTPOST_PS16384 1:16,384
** WDTPOST_PS32768 1:32,768
*/
dsPIC33 와치독 타이머 테스트 코드
int main(void)
{
int cnt = 0;
int flag =0;
SystemInit();
//Init LED
Led1Init();
Led2Init();
DebugInit(BAUD_115200);
DebugPrint("dsPIC33 EVM WDT Program.\r\n");
Led1Off();
Led2Off();
Delay(500);
Led2On();
//와치독 타이머 사용
RCONbits.SWDTEN=1;
Init_Timer1();
while(1)
{
if(m_TimerTick1>1000)
{
m_TimerTick1 = 0;
//와치독 클리어
if(flag)ClrWdt();
Led1Toggle();
}
if(m_TimerTick2>100)
{
m_TimerTick2 = 0;
DebugPrint("time=%d00ms\r\n", cnt++);
}
if(U0_IsGetByte())
{
switch(U0_GetByte())
{
case 'c':
ClrWdt();
DebugPrint("Clear\r\n");
break;
case 'w':
flag ^= 1;
//와치독 테스트
DebugPrint("WDT = %d\r\n", flag);
break;
}
}
}
}
dsPIC33 와치독 타이머 테스트 결과
설정한 시간마다 와치독 타이머에 의해 리셋되는 것을 확인 할 수 있다.