summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-12-04 13:20:47 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-12-04 13:20:47 -0600
commite18a6d2b04abc17e3cd19c7701c22c6c29e4470e (patch)
tree8ec1f0ed330f2174f5ed73d9d899767996e56ab5 /nuttx
parent6fd7621780918711869ca4e763c406d2365f55cf (diff)
downloadpx4-nuttx-e18a6d2b04abc17e3cd19c7701c22c6c29e4470e.tar.gz
px4-nuttx-e18a6d2b04abc17e3cd19c7701c22c6c29e4470e.tar.bz2
px4-nuttx-e18a6d2b04abc17e3cd19c7701c22c6c29e4470e.zip
Nucleo-f4x1re: Add pull-ups to joystick button GPIOs
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/configs/nucleo-f4x1re/README.txt7
-rw-r--r--nuttx/configs/nucleo-f4x1re/src/nucleo-f4x1re.h89
-rw-r--r--nuttx/configs/nucleo-f4x1re/src/stm32_ajoystick.c3
3 files changed, 61 insertions, 38 deletions
diff --git a/nuttx/configs/nucleo-f4x1re/README.txt b/nuttx/configs/nucleo-f4x1re/README.txt
index ac40c152e..0b89bf32b 100644
--- a/nuttx/configs/nucleo-f4x1re/README.txt
+++ b/nuttx/configs/nucleo-f4x1re/README.txt
@@ -529,8 +529,8 @@ Shields
D7 Button A Output PA8
D8 Button F Output PA9
D9 Button G Output PC7
- A0 Joystick Y Output PA0 ADC_IN0
- A1 Joystick X Output PA1 ADC_IN1
+ A0 Joystick Y Output PA0 ADC1_0
+ A1 Joystick X Output PA1 ADC1_1
--------- ----------------- ---------------------------------
All buttons are pulled on the shield. A sensed low value indicates
@@ -584,7 +584,8 @@ Shields
default USART1 configuration. I am currently running with USART1
but with CONFIG_NUCLEO_F401RE_AJOY_MINBUTTONS to eliminate the
conflict.
- - Current showstopper: I am not getting joystick button interrupts.
+ - Current showstopper: I appear to be getting infinite interrupts as
+ soon as joystick button interrupts are enabled.
Configurations
==============
diff --git a/nuttx/configs/nucleo-f4x1re/src/nucleo-f4x1re.h b/nuttx/configs/nucleo-f4x1re/src/nucleo-f4x1re.h
index f96fa4cc7..3a92a8763 100644
--- a/nuttx/configs/nucleo-f4x1re/src/nucleo-f4x1re.h
+++ b/nuttx/configs/nucleo-f4x1re/src/nucleo-f4x1re.h
@@ -51,7 +51,8 @@
/* Configuration ********************************************************************/
#define HAVE_MMCSD 1
-#if !defined(CONFIG_STM32_SDIO) || !defined(CONFIG_MMCSD) || !defined(CONFIG_MMCSD_SDIO)
+#if !defined(CONFIG_STM32_SDIO) || !defined(CONFIG_MMCSD) || \
+ !defined(CONFIG_MMCSD_SDIO)
# undef HAVE_MMCSD
#endif
@@ -102,49 +103,67 @@
*/
#ifdef CONFIG_WL_CC3000
-# define GPIO_WIFI_INT (GPIO_PORTB | GPIO_PIN3 | GPIO_INPUT | GPIO_PULLUP | GPIO_EXTI)
-# define GPIO_WIFI_EN (GPIO_PORTB | GPIO_PIN4 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_WIFI_CS (GPIO_PORTB | GPIO_PIN6 | GPIO_OUTPUT_SET | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_D14 (GPIO_PORTB | GPIO_PIN9 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_D15 (GPIO_PORTB | GPIO_PIN8 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_D0 (GPIO_PORTA | GPIO_PIN3 | GPIO_INPUT | GPIO_PULLUP )
-# define GPIO_D1 (GPIO_PORTA | GPIO_PIN2 | GPIO_OUTPUT_CLEAR | GPIO_PULLUP )
-# define GPIO_D2 (GPIO_PORTA | GPIO_PIN10 | GPIO_OUTPUT_CLEAR | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-
-# define GPIO_A0 (GPIO_PORTA | GPIO_PIN0 | GPIO_OUTPUT_SET | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_A1 (GPIO_PORTA | GPIO_PIN1 | GPIO_OUTPUT_SET | GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
-# define GPIO_A2 (GPIO_PORTA | GPIO_PIN4 | GPIO_INPUT | GPIO_PULLUP )
-# define GPIO_A3 (GPIO_PORTB | GPIO_PIN0 | GPIO_INPUT | GPIO_PULLUP )
+# define GPIO_WIFI_INT (GPIO_PORTB | GPIO_PIN3 | GPIO_INPUT | \
+ GPIO_PULLUP | GPIO_EXTI)
+# define GPIO_WIFI_EN (GPIO_PORTB | GPIO_PIN4 | GPIO_OUTPUT_CLEAR | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_WIFI_CS (GPIO_PORTB | GPIO_PIN6 | GPIO_OUTPUT_SET | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_D14 (GPIO_PORTB | GPIO_PIN9 | GPIO_OUTPUT_CLEAR | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_D15 (GPIO_PORTB | GPIO_PIN8 | GPIO_OUTPUT_CLEAR | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_D0 (GPIO_PORTA | GPIO_PIN3 | GPIO_INPUT | \
+ GPIO_PULLUP)
+# define GPIO_D1 (GPIO_PORTA | GPIO_PIN2 | GPIO_OUTPUT_CLEAR | \
+ GPIO_PULLUP)
+# define GPIO_D2 (GPIO_PORTA | GPIO_PIN10 | GPIO_OUTPUT_CLEAR | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_A0 (GPIO_PORTA | GPIO_PIN0 | GPIO_OUTPUT_SET | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_A1 (GPIO_PORTA | GPIO_PIN1 | GPIO_OUTPUT_SET | \
+ GPIO_OUTPUT | GPIO_PULLUP | GPIO_SPEED_50MHz)
+# define GPIO_A2 (GPIO_PORTA | GPIO_PIN4 | GPIO_INPUT | \
+ GPIO_PULLUP)
+# define GPIO_A3 (GPIO_PORTB | GPIO_PIN0 | GPIO_INPUT | \
+ GPIO_PULLUP)
#endif
/* SPI1 off */
-#define GPIO_SPI1_MOSI_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTA|GPIO_PIN7)
-#define GPIO_SPI1_MISO_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTA|GPIO_PIN6)
-#define GPIO_SPI1_SCK_OFF (GPIO_INPUT|GPIO_PULLDOWN|GPIO_PORTA|GPIO_PIN5)
+#define GPIO_SPI1_MOSI_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
+ GPIO_PORTA | GPIO_PIN7)
+#define GPIO_SPI1_MISO_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
+ GPIO_PORTA | GPIO_PIN6)
+#define GPIO_SPI1_SCK_OFF (GPIO_INPUT | GPIO_PULLDOWN | \
+ GPIO_PORTA | GPIO_PIN5)
/* SPI1 chip selects off */
#ifdef CONFIG_WL_CC3000
# define GPIO_SPI_CS_WIFI_OFF \
- (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTB|GPIO_PIN6)
+ (GPIO_INPUT | GPIO_PULLDOWN | GPIO_SPEED_2MHz | \
+ GPIO_PORTB | GPIO_PIN6)
#endif
#ifdef HAVE_MMCSD
# define GPIO_SPI_CS_SD_CARD_OFF \
- (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_2MHz|GPIO_PORTB|GPIO_PIN5)
+ (GPIO_INPUT | GPIO_PULLDOWN | GPIO_SPEED_2MHz | \
+ GPIO_PORTB | GPIO_PIN5)
#endif
/* SPI chip selects */
#ifdef CONFIG_WL_CC3000
# define GPIO_SPI_CS_WIFI \
- (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN6)
+ (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
+ GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6)
#endif
#ifdef HAVE_MMCSD
# define GPIO_SPI_CS_SD_CARD \
- (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN5)
+ (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
+ GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN5)
#endif
/* Devices on the onboard bus.
@@ -162,13 +181,15 @@
#ifdef CONFIG_WL_CC3000
# define GPIO_GPIO0_INPUT \
- (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN8)
+ (GPIO_INPUT | GPIO_PULLUP | GPIO_PORTB | GPIO_PIN8)
# define GPIO_GPIO1_INPUT \
- (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN9)
+ (GPIO_INPUT | GPIO_PULLUP | GPIO_PORTB | GPIO_PIN9)
# define GPIO_GPIO0_OUTPUT \
- (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN8)
+ (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
+ GPIO_OUTPUT_CLEAR | GPIO_PORTB | GPIO_PIN8)
# define GPIO_GPIO1_OUTPUT \
- (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN9)
+ (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_2MHz | \
+ GPIO_OUTPUT_CLEAR | GPIO_PORTB | GPIO_PIN9)
#endif
/* Itead Joystick Shield
@@ -187,8 +208,8 @@
* D7 Button A Output PA8
* D8 Button F Output PA9
* D9 Button G Output PC7
- * A0 Joystick Y Output PA0 ADC_IN0
- * A1 Joystick X Output PA1 ADC_IN1
+ * A0 Joystick Y Output PA0 ADC1_0
+ * A1 Joystick X Output PA1 ADC1_1
* --------- ----------------- ---------------------------------
*
* All buttons are pulled on the shield. A sensed low value indicates
@@ -205,19 +226,19 @@
#define ADC_YOUPUT 0 /* Y output is on ADC channel 0 */
#define GPIO_BUTTON_A \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTA | GPIO_PIN8)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTA | GPIO_PIN8)
#define GPIO_BUTTON_B \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTB | GPIO_PIN10)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTB | GPIO_PIN10)
#define GPIO_BUTTON_C \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTB | GPIO_PIN4)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTB | GPIO_PIN4)
#define GPIO_BUTTON_D \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTB | GPIO_PIN5)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTB | GPIO_PIN5)
#define GPIO_BUTTON_E \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTB | GPIO_PIN3)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTB | GPIO_PIN3)
#define GPIO_BUTTON_F \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTA | GPIO_PIN9)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTA | GPIO_PIN9)
#define GPIO_BUTTON_G \
- (GPIO_INPUT | GPIO_FLOAT |GPIO_EXTI | GPIO_PORTC | GPIO_PIN7)
+ (GPIO_INPUT | GPIO_PULLUP |GPIO_EXTI | GPIO_PORTC | GPIO_PIN7)
/* Itead Joystick Signal interpretation:
*
diff --git a/nuttx/configs/nucleo-f4x1re/src/stm32_ajoystick.c b/nuttx/configs/nucleo-f4x1re/src/stm32_ajoystick.c
index 47e44b243..17b01193e 100644
--- a/nuttx/configs/nucleo-f4x1re/src/stm32_ajoystick.c
+++ b/nuttx/configs/nucleo-f4x1re/src/stm32_ajoystick.c
@@ -282,7 +282,7 @@ static int ajoy_sample(FAR const struct ajoy_lowerhalf_s *lower,
/* Sample the discrete button inputs */
sample->as_buttons = ajoy_buttons(lower);
- ivdbg("Returning: %02x\n", AJOY_SUPPORTED);
+ ivdbg("Returning: %02x\n", sample->as_buttons);
return OK;
}
@@ -426,6 +426,7 @@ static void ajoy_disable(void)
static int ajoy_interrupt(int irq, FAR void *context)
{
DEBUGASSERT(g_ajoyhandler);
+
if (g_ajoyhandler)
{
g_ajoyhandler(&g_ajoylower, g_ajoyarg);