i2c expander stability

My current project involve constant low speed scanning of two analog inputs, perform IO and adjust analog out based on the scan. It was running fine during the day for several hours. However, after running over night it was frozen when I checked in the morning. I then enabled watchdog timer set at 8S. Hopefully it will unfreeze when the event happen again.

It has the same major issue as in my other project which involves processing high speed digital input from sensors: FREEZE. It freeze frequently with my other project (around once every 5-10 minutes, higher input frequency = more frequent freeze) and I thought the i2c simply cant cope with the high speed inputs. But I am surprised that it also freeze on low speed operation although at much lower frequency (perhaps once in 12 hours). Is there any trick to achieve better stability after reading Indio Digital / Analog input? Perhaps delay after each read? If yes, at what interval is recommended?

After tinkering with industruino for some time and comparing with Controllino, I think the biggest issue here is the use of i2c expander and lack of INT (only PCINT is available which is shared with all Indio ports). I don't have that issue with Controllino, thus I decided to use it for the high speed input project. However, the good thing I like about IND I/O is the integrated LCD display. It will be really perfect if you ditch i2c like Controllino but also have integrated LCD like IND I/O. I don't mind paying more.

Albert Tobing
Albert Tobing
| 5 1 3
Asked on 6/8/17, 1:31 PM

I don't know, I never had problem even with extensive use of I2C.

It could be a library issue, but hard to say where it actually stopped in your case.

The only freeze I had during my work was due to a bad network connection.

Without any testing, it could be a software problem, ie. an endless loop of some kind.

So I don't think we should trash all the advantages of I2C, like galvanic insulation and such, based on a undocumented freeze

Stefano Giuseppe Bonvini
Stefano Giuseppe Bonvini
| 4 1 3
Answered on 6/8/17, 3:40 PM

In your other project if I remember well you used interrupt, so the freeze could be caused by filling the stack or endlessly raising a new interrupt before the old one is handled.

Stefano Giuseppe Bonvini
on 6/8/17, 3:42 PM

Nope, last time I was figuring out how to use interrupt on one specific pin before I realized it is impossible. I ditched interrupt on everything using IND I/O

Albert Tobing
on 6/8/17, 4:24 PM

Also this time it's even harder to debug if it occur once in 12 hours lol..

Albert Tobing
on 6/8/17, 4:32 PM

Your answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

Ask a Question

Keep Informed

About This Forum

This community is for professionals and enthusiasts of our products and services.

Read Guidelines

Question tools

37 follower(s)


Asked: 6/8/17, 1:31 PM
Seen: 2799 times
Last updated: 6/8/17, 3:40 PM