Looks like some great progress has happened above!! Apologies for taking a bit longer here - the holidays and some family sadness (one of our cats just had to be put to sleep - she’d been with us for 20+ years) has had me away from the computer.
I was however able to put together an ALPHA build of the Teletype firmware to support the ER-301. Validated it with a TXo (by setting it to the ER-301’s address). Things are looking good on this end. I’ll be finishing up a few other things in my branch and then submitting a pull request to @scanner_darkly.
teletype.SCALPHA.hex.zip (141.0 KB)
ER-301 Teletype Initial Integration Documentation
The attached HEX provides an initial integration of the ER-301 with the Teletype. This binary is not intended for mass distribution as it is itself a fork of an in-development beta of the grid operators branch of the Teletype’s firmware. This branch is scheduled to go into wider testing and then live after the 2.2 firmware release finishes its BETA and goes live.
The build activates the following operators that send i2c commands to the ER-301 (x references the output and y references any value that is passed to the device):
SC.TR x y
SC.TR.TIME x y
SC.TR.PULSE x (Alias: SC.TR.P x)
SC.TR.POL x y
SC.CV x y
SC.CV.SET x y
SC.CV.SLEW x y
SC.CV.OFF x y
This build only supports sending values - it does not provide functionality for reading the ER-301’s state on the Teletype (for now).
The ER-301 devices are referenced at the following root i2c value: 0xB0. The firmware supports additional devices through the basic addressing. The first four CV and TR outputs are send to the first ER-301 at 0xB0, the next four (5-8) are sent to the second ER-301 at address 0xB1, and so on. Right now, up to eight unique devices are supported. (That would be crazy!)
As mentioned above, this has been validated by changing a TXo root address to 0xB0. The implemented command set uses the same command addresses as the TXo’s command set for ease of testing. Here they are:
SC.TR.PULSE / SC.TR.P 0x05
The i2c command also works the same as the TXo. It targets the system’s address for the command and then passes the command ID followed by a value, if needed. Values are sent as an int16_t which has been cast as an uint16_t and split into two uint8_t values for the transmission.
Let me know if there are any questions. I hope to mod my ER-301 in the next few days to validate everything. Thanks for the instructions above!