The NeoTrellis INT line occasionally getting stuck low issue.
Reproduce Case:
I created a very simple reproduce case that is documented below:
Setup:
(1) ItsyBitsy M4
(1) NeoTrellis Keypad
(1) Adafruit example code: interrupt.ino from the Adafruit seesaw Library\examples\NeoTrellis\interrupt\interrupt.ino
(this Adafruit example code polls the neotrellis INT line (there are no interrupts being used on the M4...the file name interrupt.ino is a bit confusing)
press a kypd button a few times with the loop() delay set to 2ms.
press a kypd button a few times with the loop() delay set to 50ms.
Results:
1) when the delay() in loop() is 2 ms the INT line does Not get stuck low
2) when the delay() in loop() is 50 ms the INT line Does get stuck low occasionally (anything >= a 7 ms delay() will cause the INT line to occasionally get stuck low)
Conclusions:
1) the length of the delay() in loop() appears to adversely affect the neotrellis INT pin's behavior
2) any code in loop() that takes longer then 7 ms to run will cause this issue to appear
3) this seems like a bug in the neotrellis firmware (ATSAMD09D14A see saw firmware)
4) this is a very straight forward way to reproduce the issue for testing and debugging
Hope this is helpful,
Louie
p.s. i have 13 of these neotrellis boards.
p.s. there is a workaround...detect when the INT line is stuck low and call NeoTrellis.SWReset()
p.s. i think Adafruit is awesome. I am very happy Adafruit customer. Your sw libraries make building so easy.
Bug Report:
The NeoTrellis INT line occasionally getting stuck low issue.
Reproduce Case:
I created a very simple reproduce case that is documented below:
Setup:
Pictures:
This bug report was originally posted on the adafruit forum which included some pictures https://forums.adafruit.com/viewtopic.php?f=22&t=192463
Test:
Results:
1) when the delay() in loop() is 2 ms the INT line does Not get stuck low 2) when the delay() in loop() is 50 ms the INT line Does get stuck low occasionally (anything >= a 7 ms delay() will cause the INT line to occasionally get stuck low)
Conclusions:
1) the length of the delay() in loop() appears to adversely affect the neotrellis INT pin's behavior 2) any code in loop() that takes longer then 7 ms to run will cause this issue to appear 3) this seems like a bug in the neotrellis firmware (ATSAMD09D14A see saw firmware) 4) this is a very straight forward way to reproduce the issue for testing and debugging
Hope this is helpful, Louie
p.s. i have 13 of these neotrellis boards. p.s. there is a workaround...detect when the INT line is stuck low and call NeoTrellis.SWReset() p.s. i think Adafruit is awesome. I am very happy Adafruit customer. Your sw libraries make building so easy.