Received this from a friend. Window's habit of breaking timing critical I/O is well enough known but this may be of interest to people wishing to bit bash USB I/O RM _________ Russell, The FTDI USB-serial bridge devices have a "bit-bang" mode whereby bytes sent to the output FIFO are clocked out in parallel at the selected bit rate. For instance if the all outputs are currently high and you send the sequence 7Fh, 7Eh, 7Fh, FFh you will generate nested low-going pulses on the MSB and LSB output pins: | | | | | | --------- --------- MSB \ / -------------------------- ------------------ ----------------- LSB \ / --------- This mode was originally intended for implementing synchronous serial interfaces such as SPI, I2C, JTAG, and those present on SRAM-based FPGA's for loading the logic definitions, but obviously has other potential applications. The above waveforms might for instance be used as the chip-enable and write-strobe for a character-type LCD interface. There is however a nasty "gotcha" which FTDI have neglected to mention. The implication of all the FTDI documentation is that if you send the data sequence as a single API write that all bytes will arrive at the bridge device and be clocked out on successive "ticks" of the bitrate clock (as depicted above). Not so ! The FTDI API (driver) appears to be at the mercy of the underlying Windows USB transport system which arbitrarily decides how many bytes are transferred in any given USB frame, and in general will break the data sequence up into N smaller chunks which it sends at 1ms intervals (the basic USB frame interval). The end result is that any state on the FTDI bridge outputs can be stretched for up to 1ms (and I guess possibly for multiples of 1ms). In some applications this may not matter but if it does you are in trouble. FTDI have confirmed this behaviour and can offer no workaround. Regards, Ken Mardle -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist