diff options
| author | Joey Castillo <joeycastillo@utexas.edu> | 2021-11-30 17:02:42 -0500 | 
|---|---|---|
| committer | Joey Castillo <joeycastillo@utexas.edu> | 2021-11-30 17:02:42 -0500 | 
| commit | 48ceef7af3771ca3b175b217bb26398a3214794a (patch) | |
| tree | e605855484bb4714a0410b0634ddb3be74d6fe4f | |
| parent | 473bd1637a9384ce155024e3bd46932ba096918f (diff) | |
| download | Sensor-Watch-48ceef7af3771ca3b175b217bb26398a3214794a.tar.gz Sensor-Watch-48ceef7af3771ca3b175b217bb26398a3214794a.tar.bz2 Sensor-Watch-48ceef7af3771ca3b175b217bb26398a3214794a.zip  | |
fix (most) external interrupts on the 9-pin connector
| -rw-r--r-- | watch-library/config/hpl_eic_config.h | 7 | ||||
| -rw-r--r-- | watch-library/hal/src/hal_ext_irq.c | 2 | ||||
| -rw-r--r-- | watch-library/hpl/eic/hpl_eic.c | 2 | ||||
| -rw-r--r-- | watch-library/watch/watch_extint.h | 11 | 
4 files changed, 12 insertions, 10 deletions
diff --git a/watch-library/config/hpl_eic_config.h b/watch-library/config/hpl_eic_config.h index 53fee6cf..be54c2e1 100644 --- a/watch-library/config/hpl_eic_config.h +++ b/watch-library/config/hpl_eic_config.h @@ -723,11 +723,12 @@  // </e> -// my god this is a hack. need to refactor this out of ASF and into our driver. - joey 10/19 +// this is still a hack: if the user wants to use PA02 (alarm button) as an RTC interrupt pin and PB02 (9-pin A2) on the EIC, we don't support that. +// TODO item: refactor out our reliance on the ASF external interrupt driver. - joey 11/30  #ifdef CRYSTALLESS -#define CONFIG_EIC_EXTINT_MAP {2, PIN_PA02}, {5, PIN_PB05}, {7, PIN_PA07}, +#define CONFIG_EIC_EXTINT_MAP {0, PIN_PB00}, {1, PIN_PB01}, {2, PIN_PA02}, {3, PIN_PB03}, {5, PIN_PB05}, {7, PIN_PA07},  #else -#define CONFIG_EIC_EXTINT_MAP {2, PIN_PA02}, {6, PIN_PA22}, {7, PIN_PA23}, +#define CONFIG_EIC_EXTINT_MAP {0, PIN_PB00}, {1, PIN_PB01}, {2, PIN_PA02}, {3, PIN_PB03}, {6, PIN_PA22}, {7, PIN_PA23},  #endif  // <<< end of configuration section >>> diff --git a/watch-library/hal/src/hal_ext_irq.c b/watch-library/hal/src/hal_ext_irq.c index d0b92927..2c383b4b 100644 --- a/watch-library/hal/src/hal_ext_irq.c +++ b/watch-library/hal/src/hal_ext_irq.c @@ -33,7 +33,7 @@  #include "hal_ext_irq.h" -#define EXT_IRQ_AMOUNT 3 +#define EXT_IRQ_AMOUNT 6  /**   * \brief Driver version diff --git a/watch-library/hpl/eic/hpl_eic.c b/watch-library/hpl/eic/hpl_eic.c index 3b473ef5..2bd31615 100644 --- a/watch-library/hpl/eic/hpl_eic.c +++ b/watch-library/hpl/eic/hpl_eic.c @@ -70,7 +70,7 @@ static int ffs(int v)  	}  #endif -#define EXT_IRQ_AMOUNT 3 +#define EXT_IRQ_AMOUNT 6  /**   * \brief EXTINTx and pin number map diff --git a/watch-library/watch/watch_extint.h b/watch-library/watch/watch_extint.h index 758fe8bc..cba6c5e1 100644 --- a/watch-library/watch/watch_extint.h +++ b/watch-library/watch/watch_extint.h @@ -62,16 +62,17 @@ void watch_disable_external_interrupts();    *          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. -  * @param pin One of pins BTN_LIGHT, BTN_MODE, BTN_ALARM, or A0-A4. If the pin parameter matches one of +  * @param 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.    * @param callback The function you wish to have called when the button is pressed.    * @param trigger The condition on which you wish to trigger: rising, falling or both. -  * @note The alarm button and pin A2 share an external interrupt channel EXTINT[2]; you can only use one -  *       or the other. However! These pins both have an alternate method of triggering via the RTC tamper -  *       interrupt, which has the added benefit of not requiring the external interrupt controller at all. -  * @see watch_register_extwake_callback +  * @note Pins A2 and A4 can also generate interrupts via the watch_register_extwake_callback function, which +  *       will allow them to trigger even when the watch is in deep sleep mode. +  * @warning As of now, A2 is not usable via the watch_register_interrupt_callback function. To enable an +  *          external interrupt on pin A2, use the watch_register_extwake_callback function. This issue will be +  *          addressed in a future revision of the watch library.    */  void watch_register_interrupt_callback(const uint8_t pin, ext_irq_cb_t callback, watch_interrupt_trigger trigger);  | 
