As I'm working on my Teletype expanders and debugging my new operators, I've ran into a few problematic behaviors with the ii bus. These issues extend beyond my expanders and affect the Ansible in its expanded mode - in fact, some of the things I'm seeing are specific to the Ansible. Both the TT and the Ansible are on the latest firmware.
I've posted some "unlisted" youtube videos below that show some of the problems in action.I've been trying to solve the i2c read issues and timeout issues for a while now and am stuck at the limits of my experience. Any help would be appreciated - and will benefit Telex modules and the Ansible.
i2c Read Causes the Teletype to Freeze
The Teletype wants to lock up when reading values over i2c. This happens sporadically when values are read on the command line or in a trigger script. It happens 100% of the time when values are read during a metronome event first - and very quickly when the read is on a row further down the list.
I’ve been able to replicate the behavior in previous versions of the firmware with my expanders and in the latest version (1.3) with my expanders and the Ansible. These problems have been plaguing the successful integration of the input expander (TXi) that I’ve been making for the Teletype.
This can be reproduced easily with the Ansible. Go to the metronome script and type
CV 1 CV 5. If the metronome is running, your Teletype should instantly lock up. If you put another event before it, it might take a few pulses.
I can also get the Teletype to lock up by simply executing the command in other places repeatedly (command line or in scripts). It takes a lot more repetitions to get it to choke in those places.
Loop Actions to the Ansible Skip Values in Scripts
I’m seeing some very strange behaviors when trying to loop through events in scripts with the Ansible. I have not experienced this with any of my expanders; at this point it appears to be Ansible-specific.
L 5 8 : TR.PULSE I
Only pulses outputs 1 and 3 on the Ansible.
L 5 8 : CV I V RAND 10
Only shows random CV values on outputs 2,3 and 4 on the Ansible.
i2c Calls to Nonexistent Modules Causes the Teletype to Freeze
This is one that happens whenever you attempt to execute commands for a module that is not connected. It is very easy to do with the numbering scheme for outputs and inputs that span modules. One typo and your Teletype freezes and you loose all of your work.
I am not expert enough in the workings of i2c and the AVR library to find an easy solution for this. There is an endless loop in the i2c library that waits until there is an answer - locking up the TT in the process. I've played with attempts to hack the library to timeout and break the loop. I was only partially successful and have not found a way to solve the problem and restore the TT to function after an errant command.