Hello! I’m a big time newbie so sorry if I get the lingo wrong! I’ve got the newest inky frame and I’ve made some changes to main.py and created “custom_photo.py to display images. Everything is working great including sleep timer and wake from front buttons but I can’t get the external trigger to work. I’d really like to use the EXT Trigger feature on the expansion header by attaching my own button accessible from the back.
I’ve troubleshooted the physical button I’d like to use by wiring it to the A0 pin to confirm it’s working on 3.3V (high during button press). I can see the state of that pin in Thonny but not EXT Trigger. Here are my observations when I have the button wired to EXT Trigger:
When Inky Frame has initially been supplied power (via battery) but not gone to sleep yet:
front buttons will trigger main.py and my custom image refresh
EXT trigger does nothing
When Inky Frame is in deep sleep (on battery):
front buttons will trigger a refresh
EXT trigger does nothing
RESET followed by front button press triggers refresh
The external trigger is connected to a shift register and directly to the power-up hardware. You must have a low-high transition that is long enough high for the system to boot and take over.
When running, you can query the value of the external trigger by reading the shift register. I am not sure if this is exposed in MicroPython. A quick look at the source code tells me only the buttons are exposed.
I wrote a script to read the raw shift register and found my EXT Trigger button is able to reach the shift register. However, there is a mapping bug in the firmware.
Input
Actual Bit
Firmware Expects
Button A
0
7
Button B
1
6
Button C
2
5
Button D
3
4
Button E
4
3
EXT TRIGGER
6
1
The bit order is reversed. This explains why woken_by_ext_trigger() always returns False when holding by EXT Trigger button — it checks bit 1, but EXT TRIGGER is on bit 6.
However, regardless of the mapping issue I’d think the device would still wake when pressing the EXT Trigger button?
Yes it should, if it holds the value long enough high. From the power-control side of things, the ext-trigger is not treated differently as compared with the normal buttons.
Is that the wrong place? I was able to further confirm the mis-mapping by getting a TRUE response from woken_by_ext_trigger() by pressing front button “B”
I think you found the correct place. Very confusing, but it seems they had it right for the old version of the Inky-Frame.
So the next step would be for you to open an issue in the repo. And maybe mail support, since Pimoroni does not really seem to monitor the issues on Github.
will do on issue report on repo… but sounds like my main issue with the lack of wake from the button might be hardware related?
I’ve tried holding my EXT button for many seconds but I get no sign of life from the frame. I know the hold is registering 3.3v continuously and confirmed I can see the shift register reflects the button hold for as long as I depress it.
Honestly I don’t have to intentionally hold the front buttons at all and the thing springs to life. So not sure what’s going on with the EXT Trigger. Maybe hardware issue on the board along this path:
Really strange. The ext-trigger should behave the same as the buttons. As soon as the trigger goes high, VSYS_EN is high and the processor boots. At this stage the firmware should set HOLD_VSYS_EN and this would keep power on.