#include #include struct ftdi_context ftdic; int main(void) { int r,i; r=ftdi_init(&ftdic); if (r) exit(-r); r=ftdi_usb_open(&ftdic, 0x0403, 0x6001); if ((r) && (r != -5)) exit(-r); printf("ftdi open succeeded\n"); // FTDI cable assignments: #define BIT_TXD (1<<0) // 1: TXD #define BIT_RXD (1<<1) // 2: RXD #define BIT_RTS (1<<2) // 4: RTS #define BIT_CTS (1<<3) // 8: CTS #define BIT_DTR (1<<4) // 16: DTR #define BIT_DSR (1<<5) // 32: DSR #define BIT_DCD (1<<6) // 64: DCD #define BIT_RI (1<<7) //128: RI #define BIT_VOLTS_CS BIT_CTS #define BIT_AMPS_CS BIT_DSR #define BIT_PORTX_CS BIT_DCD #define BIT_SPI_CK (1<<0) #define BIT_SPI_MOSI (1<<1) #define BIT_SPI_MISO (1<<2) // input #define BIT_ENABLE (1<<3) r=ftdi_set_bitmode(&ftdic, BIT_VOLTS_CS , BITMODE_BITBANG); if (r) exit(-r); char c[]="\0"; c[0] |= BIT_VOLTS_CS; r=ftdi_write_data(&ftdic,c,1); if (r!=1) exit(-1); while (1) { r=ftdi_set_bitmode(&ftdic, (BIT_VOLTS_CS | BIT_AMPS_CS | BIT_PORTX_CS), BITMODE_BITBANG); if (r) exit(-r); r=ftdi_set_bitmode(&ftdic, 0xff, BITMODE_CBUS ); if (r) exit(-r); } }