Pytrack get_wake_reason: detect power on
-
Hi,
I am working with a Pytrack and a Fipy, and I must detect when the board is powered-on.When I get the pytrack.get_wake_reason, I get correct values when awaken by button, accelerometer and timer after a pytrack.go_to_sleep().
However, after a power down (unplug the USB), the wake reason is kept from the last powerdown (WAKE_REASON_ACCELEROMETER for example) for a short persiod, and after a long disconnection (like >1 hour), the pytrack.get_wake_reason method gives me strange values, like 51 (0b110011).How can I detect when the board is powered-on ?
Thanks
-
hi @fstaine, I trying to investigate this, I see there is an inconsistency.
-
hi @fstaine,
Could you test the attached pytrack firmware version; if the board is powered on, it should have both the get_wake_reason() and get_sleep_remaining() reset to zero. Is this behaviour ok?
-
hi @catalin
I tried with the given firmware:
- I get correct values for Accelerometer (1), push button (2) and timer (4) on
get_wake_reason()(as before) - I get 0 from
get_wake_reason()after a power on (Yay !) - I don't know how to test
WAKE_REASON_INT_PIN...
Concerning
get_sleep_remaining(), the board never returns when I call the method from the serial REPL (in fact,calibrate_rtc()blocks atself._write(bytes([CMD_CALIBRATE]), wait=False))When I do from a scipt, I get the correct values (Havn't tested the values when a timer wasn't set with the previous firmware though...)
Thank's a lot for the fix ! I go change my ugly hack in my code :)
- I get correct values for Accelerometer (1), push button (2) and timer (4) on
-
Just for further references, there a workaround solution with code here: https://forum.pycom.io/topic/3312/lopy-pytrack-deepsleep-wake-then-lock-until-power-removed/2
Mainly it's:
wake = py.get_wake_reason() print("Waked by ", end='') # display the wake reason code if wake == 1: print("Accelerometer") led.h(led.RED) elif wake == 2: print("Button") led.h(led.GREEN) elif wake == 4: print("Timer") led.h(led.CYAN) elif wake == 8: print("Interrupt Pin") led.h(led.ORANGE) else: print("No Wake") -
@fstaine
WAKE_REASON_INT_PIN: can be generated from PIC_RC1(pin6 on External IO Header) https://docs.pycom.io/chapter/datasheets/boards/pytrack.html<later edit:> Please take a look here function
pytrack.setup_int_pin_wake_up([rising_edge = True]).
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login