aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/lang/api/attachinterrupt.rst31
-rw-r--r--source/lang/api/detachinterrupt.rst16
-rw-r--r--source/lang/api/pwmwrite.rst13
-rw-r--r--source/unix-toolchain.rst2
4 files changed, 40 insertions, 22 deletions
diff --git a/source/lang/api/attachinterrupt.rst b/source/lang/api/attachinterrupt.rst
index 0b8907f..7c5a6c7 100644
--- a/source/lang/api/attachinterrupt.rst
+++ b/source/lang/api/attachinterrupt.rst
@@ -15,7 +15,28 @@ occurs.
Library Documentation
---------------------
-.. doxygenfunction:: attachInterrupt
+.. FIXME once breathe knows how to get the correct attachInterupt
+.. (right now it's copying from HardwareTimer), replace with a
+.. doxygenfunction directive
+
+.. cpp:function:: void attachInterrupt(uint8 pin, voidFuncPtr handler, ExtIntTriggerMode mode)
+
+ Registers an interrupt handler on a pin.
+
+ The interrupt will be triggered on a given transition on the pin,
+ as specified by the mode parameter. The handler runs in interrupt
+ context. The new handler will replace whatever handler is
+ currently registered for the pin, if any.
+
+ *Parameters*
+
+ - ``pin`` - Maple pin number
+
+ - ``handler`` - Function to run upon external interrupt trigger.
+ The handler should take no arguments, and have void return type.
+
+ - ``mode`` - Type of transition to trigger on, e.g. falling,
+ rising, etc.
.. doxygenenum:: ExtIntTriggerMode
@@ -34,7 +55,6 @@ There are a few constraints you should be aware of if you're using
more than one interrupt at a time; the :ref:`external-interrupts` page
has the details.
-
Using Interrupts
----------------
@@ -43,7 +63,6 @@ microcontroller programs, and can help solve timing problems. A
good task for using an interrupt might be reading a rotary encoder,
or monitoring user input.
-
If you wanted to insure that a program always caught the pulses
from a rotary encoder, never missing a pulse, it would make it very
tricky to write a program to do anything else, because the program
@@ -55,7 +74,6 @@ sensor that is trying to catch a click, or an infrared slot sensor
situations, using an interrupt can free the microcontroller to get
some other work done while not missing the doorbell.
-
Example
-------
@@ -78,7 +96,6 @@ Example
state = !state;
}
-
Arduino Compatibility
---------------------
@@ -89,14 +106,10 @@ additional four: numbers 2 (pin 21), 3 (pin 20), 4 (pin 19), and 5
number goes with which pin -- just tell ``attachInterrupt()`` the pin
you want.
-
See also
--------
-
- :ref:`detachInterrupt <lang-detachinterrupt>`
- :ref:`external-interrupts`
-
-
.. include:: cc-attribution.txt
diff --git a/source/lang/api/detachinterrupt.rst b/source/lang/api/detachinterrupt.rst
index adb2439..41642a7 100644
--- a/source/lang/api/detachinterrupt.rst
+++ b/source/lang/api/detachinterrupt.rst
@@ -6,11 +6,20 @@ detachInterrupt()
Used to disable an interrupt specified with
:ref:`lang-attachinterrupt`\ .
-
Library Documentation
---------------------
-.. doxygenfunction:: detachInterrupt
+.. FIXME once breathe knows how to get the correct detachInterupt
+.. (right now it's copying from HardwareTimer), replace with a
+.. doxygenfunction directive
+
+.. cpp:function:: void detachInterrupt(uint8 pin)
+
+ Disable any registered external interrupt on the given pin.
+
+ *Parameters*
+
+ - ``pin`` Maple pin number
Arduino Compatibility
---------------------
@@ -31,7 +40,4 @@ See Also
- :ref:`attachInterrupt() <lang-attachInterrupt>`
-
-
-
.. include:: cc-attribution.txt
diff --git a/source/lang/api/pwmwrite.rst b/source/lang/api/pwmwrite.rst
index 2c858ab..9d50077 100644
--- a/source/lang/api/pwmwrite.rst
+++ b/source/lang/api/pwmwrite.rst
@@ -33,21 +33,20 @@ Sets the output to the LED proportional to the value read from the
potentiometer::
int analogPin = 3; // potentiometer connected to analog pin 3
- int val = 0; // variable to store the read value
void setup() {
pinMode(BOARD_LED_PIN, OUTPUT); // sets the LED pin as output
- pinMode(analogPin, PWM); // sets the potentiometer pin as PWM
- // output
+ pinMode(analogPin, INPUT_ANALOG); // sets the potentiometer pin as
+ // analog input
}
void loop() {
- val = analogRead(analogPin); // read the input pin
+ int val = analogRead(analogPin); // read the input pin
- analogWrite(BOARD_LED_PIN, val / 16); // analogRead values go from 0
- // to 4095, analogWrite values
- // from 0 to 65535
+ pwmWrite(BOARD_LED_PIN, val * 16); // analogRead values go from 0
+ // to 4095, pwmWrite values
+ // from 0 to 65535, so scale roughly
}
See Also
diff --git a/source/unix-toolchain.rst b/source/unix-toolchain.rst
index e6039a2..b2cabbb 100644
--- a/source/unix-toolchain.rst
+++ b/source/unix-toolchain.rst
@@ -90,7 +90,7 @@ package; this could also be installed with `easy_install
$ git clone git://github.com/leaflabs/libmaple.git libmaple
$ cd libmaple
$ wget http://static.leaflabs.com/pub/codesourcery/gcc-arm-none-eabi-latest-linux32.tar.gz
- $ tar xvf arm-*-linux32.tar.gz
+ $ tar xvf gcc-arm-none-eabi-latest-linux32.tar.gz
$ export PATH=$PATH:~/libmaple/arm/bin # or wherever these tools ended up
This step is fairly straightforward: do a git clone of the `libmaple