A-5
GPIO WDT Programming
MS-98M9
Watchdog Timer
2.
Watchdog Timer – WDT
The base address (WDT_BASE) of WDT configuration registers is
0xA10.
2.1
Set WDT Time Unit
val = Inportb (WD 0x05);
// Read current WDT setting
val = val | 0x08;
// minute mode. val = val & 0xF7 if second mode
Outportb (WD 0x05, val);
// Write back WDT setting
2.2
Set WDT Time
Outportb (WD 0x06,
Time
);
// Write WDT time, value 1 to 255.
2.3
Enable WDT
val = Inportb (WD 0x0A);
// Read current WDT_PME setting
val = val | 0x01;
// Enable WDT OUT: WDOUT_EN (bit 0) set to 1.
Outportb (WD 0x0A, val);
// Write back WDT setting.
val = Inportb (WD 0x05);
// Read current WDT setting
val = val | 0x20;
// Enable WDT by set WD_EN (bit 5) to 1.
Outportb (WD 0x05, val);
// Write back WDT setting.
2.4
Disable WDT
val = Inportb (WD 0x05);
// Read current WDT setting
val = val & 0xDF;
// Disable WDT by set WD_EN (bit 5) to 0.
Outportb (WD 0x05, val);
// Write back WDT setting.
2.5
Check WDT Reset Flag
If the system has been reset by WDT function, this flag will set to 1.
val = Inportb (WD 0x05);
// Read current WDT setting.
val = val & 0x40;
// Check WDTMOUT_STS (bit 6).
if (val) printf (“timeout event occurred”);
else
printf (“timeout event not occurred”);
2.6
Clear WDT Reset Flag
val = Inportb (WD 0x05);
// Read current WDT setting
val = val | 0x40;
// Set 1 to WDTMOUT_STS (bit 6);
Outportb (WD 0x05, val);
// Write back WDT setting