agreed! i think we should concentrate on getting the 2.0 release ready, and if i manage to improve i2c / fast triggers stability this will be 2.1.
for i2c / fast triggers issue my main goal is to get it to the point where it’s absolutely stable. i hope that this goal is achievable, but if not perhaps we could at least strengthen it to the point where it crashes significantly less often and under significantly higher load (which my testing suggests is possible). speed is a not a concern - i’d rather have a system that is not capable of processing audio rate triggers (as it was never designed for that) but is stable (as a side note, there is an interesting question of whether triggers or timers should have higher priority - i’ll experiment with this as well).
for now my plan is to continue experimenting with IRQs / events / timers / i2c to see if i can get it not to crash. with my set up i was able to get it to freeze very quick with the previous beta version. the changes i posted made it crash less fast (~10-15 min). the latest change i tried was giving i2c lower priority (1 instead of 3) - my theory was that the i2c interrupts getting masked caused i2c to hang, so my previous changes were aimed to make sure this doesn’t happen (only masking the timer and the trigger interrupts, since i2c does not use the event code anyway). but changing it to lower priority actually made it more stable - looks like i2c code is much more resilient than i thought… it did freeze eventually - not sure how long it took as i left it running overnight, but it did run for at least 1.5 hours which is a huge improvement.
with that in mind i’m going to try doing complete masking again and going back to using cpu_irq_save / cpu_irq_restore and see if that makes a difference. my plan is to test with making the same changes in ansible, to eliminate the possibility of broken ansible i2c taking down tt as well.
agreed on the testing plan - but i think there is no point on starting testing until i manage to get it stable in my testing under a heavy load, or at least improve it significantly. i’ll post my progress here and once i get it to the point where i’m happy i’ll start a new thread and will ask for help with beta testing.
these are not incremental changes though, they’re all related - they have to be done in conjunction.
good idea, i’ll do this!
agreed on this as well, i’ll make it part of my changes!
in my tests (beta9, metro at 10, doing some i2c stuff in metro) i was able to get it to freeze pretty quickly even with below audio rate triggers…