/** * @ingroup DEV * * @param dmx_device_info */ static void mcp23s08_init(dmx_device_info_t * dmx_device_info) { #ifdef DEBUG printf("device init <mcp23s08>\n"); #endif mcp23s08_start(&(dmx_device_info->device_info)); mcp23s08_reg_write(&dmx_device_info->device_info, MCP23S08_IODIR, 0x00); mcp23s08_reg_write(&dmx_device_info->device_info, MCP23S08_GPIO, 0x00); }
bool RDMSubDeviceMCP23S08::Initialize(void) { const bool IsConnected = mcp23s08_start(&m_tDeviceInfo); if (IsConnected) { mcp23s08_reg_write(&m_tDeviceInfo, MCP23S08_IODIR, 0x00); mcp23s08_reg_write(&m_tDeviceInfo, MCP23S08_GPIO, 0x00); } #ifndef NDEBUG printf("%s:%s IsConnected=%d\n", __FILE__, __FUNCTION__, (int) IsConnected); #endif return IsConnected; }
int main(int argc, char **argv) { device_info_t device_info; while ((argc > 1) && (argv[1][0] == '-')) { switch (argv[1][1]) { case 'a': sscanf (&argv[1][2], "%x", &slave_address); break; case 'c': sscanf (&argv[1][2], "%d", &chip_select); break; default: fprintf(stderr, "Warning: Unsupported argument \"%s\"!\n", argv[1]); exit(1); } ++argv; --argc; } device_info.slave_address = slave_address; device_info.chip_select = chip_select; if (mcp23s08_start(&device_info) != MCP23S08_OK) { fprintf(stderr,"Cannot start mcp23s08_start\n"); exit(EXIT_FAILURE); } printf("slave address : 0x%x\n", device_info.slave_address); printf("chip select : %.1d\n", device_info.chip_select); int x; for (x = 0 ; x < sizeof(pins) ; x++ ) { mcp23s08_gpio_fsel(&device_info, pins[x], MCP23S08_FSEL_OUTP); } for(;;) show_loop(&device_info, 1, 1); mcp23s08_end(); return 0; }