|
|
@ -179,3 +179,56 @@ Details on sleep modes |
|
|
|
* ``machine.sleep()``: 950uA (in WLAN STA mode). Wake sources are ``Pin``, ``RTC`` |
|
|
|
and ``WLAN`` |
|
|
|
* ``machine.deepsleep()``: ~350uA. Wake sources are ``Pin`` and ``RTC``. |
|
|
|
|
|
|
|
Additional details for machine.Pin |
|
|
|
---------------------------------- |
|
|
|
|
|
|
|
On the WiPy board the pins are identified by their string id:: |
|
|
|
|
|
|
|
from machine import Pin |
|
|
|
g = machine.Pin('GP9', mode=Pin.OUT, pull=None, drive=Pin.MED_POWER, alt=-1) |
|
|
|
|
|
|
|
You can also configure the Pin to generate interrupts. For instance:: |
|
|
|
|
|
|
|
from machine import Pin |
|
|
|
|
|
|
|
def pincb(pin): |
|
|
|
print(pin.id()) |
|
|
|
|
|
|
|
pin_int = Pin('GP10', mode=Pin.IN, pull=Pin.PULL_DOWN) |
|
|
|
pin_int.irq(trigger=Pin.IRQ_RISING, handler=pincb) |
|
|
|
# the callback can be triggered manually |
|
|
|
pin_int.irq()() |
|
|
|
# to disable the callback |
|
|
|
pin_int.irq().disable() |
|
|
|
|
|
|
|
Now every time a falling edge is seen on the gpio pin, the callback will be |
|
|
|
executed. Caution: mechanical push buttons have "bounce" and pushing or |
|
|
|
releasing a switch will often generate multiple edges. |
|
|
|
See: http://www.eng.utah.edu/~cs5780/debouncing.pdf for a detailed |
|
|
|
explanation, along with various techniques for debouncing. |
|
|
|
|
|
|
|
All pin objects go through the pin mapper to come up with one of the |
|
|
|
gpio pins. |
|
|
|
|
|
|
|
For the ``drive`` parameter the strengths are: |
|
|
|
|
|
|
|
- ``Pin.LOW_POWER`` - 2mA drive capability. |
|
|
|
- ``Pin.MED_POWER`` - 4mA drive capability. |
|
|
|
- ``Pin.HIGH_POWER`` - 6mA drive capability. |
|
|
|
|
|
|
|
For the ``alt`` parameter please refer to the pinout and alternate functions |
|
|
|
table at <https://raw.githubusercontent.com/wipy/wipy/master/docs/PinOUT.png>`_ |
|
|
|
for the specific alternate functions that each pin supports. |
|
|
|
|
|
|
|
For interrupts, the ``priority`` can take values in the range 1-7. And the |
|
|
|
``wake`` parameter has the following properties: |
|
|
|
|
|
|
|
- If ``wake_from=machine.Sleep.ACTIVE`` any pin can wake the board. |
|
|
|
- If ``wake_from=machine.Sleep.SUSPENDED`` pins ``GP2``, ``GP4``, ``GP10``, |
|
|
|
``GP11``, GP17`` or ``GP24`` can wake the board. Note that only 1 |
|
|
|
of this pins can be enabled as a wake source at the same time, so, only |
|
|
|
the last enabled pin as a ``machine.Sleep.SUSPENDED`` wake source will have effect. |
|
|
|
- If ``wake_from=machine.Sleep.SUSPENDED`` pins ``GP2``, ``GP4``, ``GP10``, |
|
|
|
``GP11``, ``GP17`` and ``GP24`` can wake the board. In this case all of the |
|
|
|
6 pins can be enabled as a ``machine.Sleep.HIBERNATE`` wake source at the same time. |
|
|
|