LEC-2010 Fanless Embedded System User’s Manual
59
help();
return -1;
}
if( strcmp(argv[1], "-wr") == 0 )
{
if( argc != 3 )
{
help();
return -1;
}
write_w83627_reg(0x8, 0xf6, 0); //LDN=8, CRF6, stop timer first
//clear status bit
write_w83627_reg(0x8, 0xf7, read_w83627_reg(0x8, 0xf7) & 0xef);
time = atoi(argv[2]);
printf("Setting Watchdog timer for System Reset...\n");
set_watchdog(time);
return 0;
}
else
{
help();
return -1;
}
return 0;
}
int set_watchdog(int time)
{
int temp;
outportb(INDEX_PORT, 0x87);
delay(1);
outportb(INDEX_PORT, 0x87); //Entering
W83627HF Configuration
temp = read_w83627_reg(0, 0x2b); //LDN=0, CR2B
temp &= 0xf3;
temp |= 0x04;
write_w83627_reg(0, 0x2b, temp); //set watchdog pin
write_w83627_reg(0x8, 0xf6, 0); //LDN=8, CRF6, stop timer first
write_w83627_reg(0x8, 0xf5, read_w83627_reg(0x8, 0xf5) & 0xf7); //;set
second
write_w83627_reg(0x8, 0xf7, read_w83627_reg(0x8, 0xf7) & 0xef); //;clear
status
write_w83627_reg(0x8, 0x30, read_w83627_reg(0x8, 0x30) | 0x01); //;enable
LDN8
temp = time;
write_w83627_reg(0x8, 0xf6, temp); //LDN=8, CRF6, set
watchdog timer time-out value
outportb(INDEX_PORT, 0xaa); //Exit W83627HF
Configuration
return 0;
}
int read_w83627_reg(int LDN, int reg)
{
outportb(INDEX_PORT, 0x07); //LDN register
delay(1);
outportb(DATA_PORT, LDN);
delay(1);
outportb(INDEX_PORT, reg);
delay(1);
return inportb(DATA_PORT);
}
Commentaires sur ces manuels