Sensor Watch 0.0.2
A board replacement for the classic Casio F-91W wristwatch, powered by a Microchip SAM L22 microcontroller.
|
This section covers functions related to the three buttons: Light, Mode and Alarm, as well as external interrupts from devices on the nine-pin connector. More...
Typedefs | |
typedef enum watch_interrupt_trigger | watch_interrupt_trigger |
An enum defining the types of interrupt trigger you wish to scan for. | |
Enumerations | |
enum | watch_interrupt_trigger { INTERRUPT_TRIGGER_NONE = 0 , INTERRUPT_TRIGGER_RISING , INTERRUPT_TRIGGER_FALLING , INTERRUPT_TRIGGER_BOTH } |
An enum defining the types of interrupt trigger you wish to scan for. | |
Functions | |
void | watch_enable_external_interrupts (void) |
Enables the external interrupt controller. | |
void | watch_disable_external_interrupts (void) |
Disables the external interrupt controller. | |
void | watch_register_interrupt_callback (const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger) |
Configures an external interrupt callback on one of the external interrupt pins. | |
This section covers functions related to the three buttons: Light, Mode and Alarm, as well as external interrupts from devices on the nine-pin connector.
The buttons are the core input UI of the watch, and the way the user will interact with your application. They are active high, pulled down by the microcontroller, and triggered when one of the "pushers" brings a tab from the metal frame into contact with the edge of the board. Note that the buttons can only wake the watch from STANDBY mode, at least as of the current SAM L22 silicon revision. The external interrupt controller runs in STANDBY mode, but it does not run in BACKUP mode; to wake from BACKUP, buttons will not cut it.
void watch_register_interrupt_callback | ( | const uint8_t | pin, |
ext_irq_cb_t | callback, | ||
watch_interrupt_trigger | trigger | ||
) |
Configures an external interrupt callback on one of the external interrupt pins.
You can set one interrupt callback per pin, and you can monitor for a rising condition, a falling condition, or both. If you just want to detect a button press, register your interrupt with INTERRUPT_TRIGGER_RISING; if you want to detect an active-low interrupt signal from a device on the nine-pin connector, use INTERRUPT_TRIGGER_FALLING. If you want to detect both rising and falling conditions (i.e. button down and button up), use INTERRUPT_TRIGGER_BOTH and use watch_get_pin_level to check the pin level in your callback to determine which condition caused the interrupt.
pin | One of BTN_LIGHT, BTN_MODE, BTN_ALARM, A0, A1, A3 or A4. If the pin parameter matches one of the three button pins, this function will also enable an internal pull-down resistor. If the pin parameter is A0-A4, you are responsible for setting any required pull configuration using watch_enable_pull_up or watch_enable_pull_down. |
callback | The function you wish to have called when the button is pressed. |
trigger | The condition on which you wish to trigger: rising, falling or both. |