summaryrefslogtreecommitdiffstatshomepage
path: root/docs/library/pyb.ExtInt.rst
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-10-31 01:37:19 +0000
committerDamien George <damien.p.george@gmail.com>2014-10-31 01:37:19 +0000
commit88d3054ac072f9c73b0f3f045c59ba74f6730c1d (patch)
tree6db7851068908c0640b1ed306d6823871fd3d742 /docs/library/pyb.ExtInt.rst
parent7c4445afe104631d5fe8e7401d50f40f205e35b9 (diff)
downloadmicropython-88d3054ac072f9c73b0f3f045c59ba74f6730c1d.tar.gz
micropython-88d3054ac072f9c73b0f3f045c59ba74f6730c1d.zip
docs: Import documentation from source-code inline comments.
The inline docs (prefixed with /// in .c files) have been converted to RST format and put in the docs subdirectory.
Diffstat (limited to 'docs/library/pyb.ExtInt.rst')
-rw-r--r--docs/library/pyb.ExtInt.rst111
1 files changed, 111 insertions, 0 deletions
diff --git a/docs/library/pyb.ExtInt.rst b/docs/library/pyb.ExtInt.rst
new file mode 100644
index 0000000000..c9f547d76f
--- /dev/null
+++ b/docs/library/pyb.ExtInt.rst
@@ -0,0 +1,111 @@
+class ExtInt --- configure I/O pins to interrupt on external events
+===================================================================
+
+There are a total of 22 interrupt lines. 16 of these can come from GPIO pins
+and the remaining 6 are from internal sources.
+
+For lines 0 thru 15, a given line can map to the corresponding line from an
+arbitrary port. So line 0 can map to Px0 where x is A, B, C, ... and
+line 1 can map to Px1 where x is A, B, C, ... ::
+
+ def callback(line):
+ print("line =", line)
+
+Note: ExtInt will automatically configure the gpio line as an input. ::
+
+ extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
+
+Now every time a falling edge is seen on the X1 pin, the callback will be
+called. Caution: mechanical pushbuttons 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.
+
+Trying to register 2 callbacks onto the same pin will throw an exception.
+
+If pin is passed as an integer, then it is assumed to map to one of the
+internal interrupt sources, and must be in the range 16 thru 22.
+
+All other pin objects go through the pin mapper to come up with one of the
+gpio pins. ::
+
+ extint = pyb.ExtInt(pin, mode, pull, callback)
+
+Valid modes are pyb.ExtInt.IRQ_RISING, pyb.ExtInt.IRQ_FALLING,
+pyb.ExtInt.IRQ_RISING_FALLING, pyb.ExtInt.EVT_RISING,
+pyb.ExtInt.EVT_FALLING, and pyb.ExtInt.EVT_RISING_FALLING.
+
+Only the IRQ_xxx modes have been tested. The EVT_xxx modes have
+something to do with sleep mode and the WFE instruction.
+
+Valid pull values are pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN, pyb.Pin.PULL_NONE.
+
+There is also a C API, so that drivers which require EXTI interrupt lines
+can also use this code. See extint.h for the available functions and
+usrsw.h for an example of using this.
+
+
+Constructors
+------------
+
+.. class:: pyb.ExtInt(pin, mode, pull, callback)
+
+ Create an ExtInt object:
+
+ - ``pin`` is the pin on which to enable the interrupt (can be a pin object or any valid pin name).
+ - ``mode`` can be one of:
+ - ``ExtInt.IRQ_RISING`` - trigger on a rising edge;
+ - ``ExtInt.IRQ_FALLING`` - trigger on a falling edge;
+ - ``ExtInt.IRQ_RISING_FALLING`` - trigger on a rising or falling edge.
+ - ``pull`` can be one of:
+ - ``pyb.Pin.PULL_NONE`` - no pull up or down resistors;
+ - ``pyb.Pin.PULL_UP`` - enable the pull-up resistor;
+ - ``pyb.Pin.PULL_DOWN`` - enable the pull-down resistor.
+ - ``callback`` is the function to call when the interrupt triggers. The
+ callback function must accept exactly 1 argument, which is the line that
+ triggered the interrupt.
+
+
+Class methods
+-------------
+
+.. method:: ExtInt.regs()
+
+ Dump the values of the EXTI registers.
+
+
+Methods
+-------
+
+.. method:: extint.disable()
+
+ Disable the interrupt associated with the ExtInt object.
+ This could be useful for debouncing.
+
+.. method:: extint.enable()
+
+ Enable a disabled interrupt.
+
+.. method:: extint.line()
+
+ Return the line number that the pin is mapped to.
+
+.. method:: extint.swint()
+
+ Trigger the callback from software.
+
+
+Constants
+---------
+
+.. data:: ExtInt.IRQ_FALLING
+
+ interrupt on a falling edge
+
+.. data:: ExtInt.IRQ_RISING
+
+ interrupt on a rising edge
+
+.. data:: ExtInt.IRQ_RISING_FALLING
+
+ interrupt on a rising or falling edge