@Gerald_Stevens Sorry, don’t have time to follow the whole thread. For me, the grid needs to be powered on first, and then plugged into the TT, otherwise the TT will freeze until I unplug the grid. That is okay for me, I basically leave the first port of the grid on a USB power plug, and I didn’t research the issue further.
I don’t think the issue is related to flow control, rather the Teletype recognizes a plugged in FTDI-USB device, which won’t answer to its 0x00 greeting with the required six byte sequence. There is a loop in the TT code (libavr32) which stubbornly waits for this sequence, once an FTDI device with the right IDs is recognized (and it will be recognized, as the TT power activates the FTDI chip). At least that explains my case. And it explains why everything works fine, as soon as I remove the (unpowered) grid, power it on and plug it in again.
The TT boots much faster than the current grid firmware, so chances are high that the TT’s 0x00 greeting will be missed by the grid, even if you power on both devices at the same time. To solve the situation, you could add some code to the grid firmware which will assume on startup that a 0x00 message has been received. And proactively send the six byte identification reply.
Secondly, you could try to tell the host that you are not accepting any data until the grid is ready to run. But for this the host (TT) would need to honor the FTDI adapters CTS input (= Teensy’s Serial1 RTS output, high: not ready, low: ready). I am not sure if the TT or FTDI adapter will care, but you can try.
Thirdly, you could detect in the Teensy firmware after startup, whether a host device is connected (by connecting the FTDIs DTR/RTS to an input pin) and send the six byte sequence only in this case. That might be clean coding, but for personal use, I think this is over the top. It is much quicker just to send six bytes via Serial1.Send to the Teensy code at the end of the init sequence. Try 0x00 0x01 0x02 0x00 0x02 0x02 or something.
If you really want to research flow control further, you can activate it for the Teensy’s Serial1, you just need to connect one extra pin and declare it (https://www.pjrc.com/teensy/td_uart.html etc.). I did this initially, to increase communication quality, but it did not make a difference, and I removed it.
By the way, none of my FTDI adapter has RTS output, are you sure about it? It has CTS input and DTR output. RTS/CTS and DTR/DCD are alternative protocols in my eyes. CTS can be connected to some Teensy pin which will serve as RTS for Serial1. DTR output could be connected to the Teensy’s CTS input pin (see link above) or another input pin. But as I wrote above, the flow control is probably not needed, and if at all, one could check the FTDIs DTR output after startup to see if the grid is connected to a host.
Regarding signal levels, in FT_PROG one can inverse signal levels for the various pins. Not sure that is really something one wants to do, though. Good luck