Appendix b, Digital input/output control – Lanner LEC-7105 User Manual

Page 34

Advertising
background image

34

Digital Input/Output Control

Appendix B

Embedded and Industrial Computing

enter_w83627_config();
outportb(INDEX_PORT, 0x07); // LDN Register
outportb(DATA_PORT, LDN); // Select LDNx
outportb(INDEX_PORT, reg); // Select Register
tmp = inportb( DATA_PORT); // Read Register
exit_w83627_config();
return tmp;
}

void write_w83627_reg(int LDN, int reg, int value)
{
enter_w83627_config();
outportb(INDEX_PORT, 0x07); // LDN Register
outportb(DATA_PORT, LDN); // Select LDNx
outportb(INDEX_PORT, reg); // Select Register
outportb(DATA_PORT, value); // Write Register
exit_w83627_config();
return;
}

void dio_gpio_init(void)
{
unsigned char tmp;

/* Enable GPIO 6x function */

tmp=read_w83627_reg(0x08, 0x30);

tmp |= GPIO6X;

write_w83627_reg(0x08, 0x30, tmp);


/* set GPIO60~63 as Output function */

tmp=read_w83627_reg(0x08, 0xE4);

tmp &= ~(GPIO_GPIO60_GPIO63_MASK);

write_w83627_reg(0x08, 0xE4, tmp);


/* set GPIO60~63 as uninvert */

tmp=read_w83627_reg(0x08, 0xE6);

tmp &= ~(GPIO_GPIO60_GPIO63_MASK);

write_w83627_reg(0x08, 0xE6, tmp);


/* set GPIO60~63 generate high signal */

tmp=read_w83627_reg(0x08, 0xE5);

tmp |= GPIO_GPIO60_GPIO63_MASK;

write_w83627_reg(0x08, 0xE5, tmp);


/* Enable GPIO 2x function */

tmp=read_w83627_reg(0x09, 0x30);

tmp |= GPIO2X;

write_w83627_reg(0x09, 0x30, tmp);


/* set GPIO24~27 as Input function */

tmp=read_w83627_reg(0x09, 0xE4);

tmp |= GPIO_GPIO24_GPIO27_MASK;

write_w83627_reg(0x09, 0xE4, tmp);


/* set GPIO24~27 as uninvert */

tmp=read_w83627_reg(0x09, 0xE6);

tmp &= ~(GPIO_GPIO24_GPIO27_MASK);

write_w83627_reg(0x09, 0xE6, tmp);


return;
}
void dio_set_output(unsigned char out_value)
{

unsigned char tmp;

tmp = read_w83627_reg(0x08,0xE5);

tmp &= ~GPIO_GPIO60_GPIO63_MASK;

tmp |= out_value;

write_w83627_reg(0x08, 0xE5, tmp);

delay(333);

return;
}

unsigned char dio_get_input(void)
{

Advertising