From 5e35491a386006c8f27b7761b3845a73bf85f3fa Mon Sep 17 00:00:00 2001 From: px4dev Date: Thu, 10 Jan 2013 02:12:49 -0800 Subject: [PATCH] We can't have DMA on both I2C1 and USART2. Since we need it more for I2C, and since USART2 is going back to being ignored once I2C works, let's make the call. Turn off the debug output on I2C for now. --- apps/px4io/px4io.c | 10 ++++++++++ nuttx/configs/px4io/io/defconfig | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/px4io/px4io.c b/apps/px4io/px4io.c index 4e3555b13e..e51c1c73c1 100644 --- a/apps/px4io/px4io.c +++ b/apps/px4io/px4io.c @@ -51,6 +51,8 @@ #include #include +#include + #include "px4io.h" __EXPORT int user_start(int argc, char *argv[]); @@ -59,6 +61,8 @@ extern void up_cxxinitialize(void); struct sys_state_s system_state; +static struct hrt_call serial_dma_call; + int user_start(int argc, char *argv[]) { /* run C++ ctors before we go any further */ @@ -72,6 +76,12 @@ int user_start(int argc, char *argv[]) /* configure the high-resolution time/callout interface */ hrt_init(); + /* + * Poll at 1ms intervals for received bytes that have not triggered + * a DMA event. + */ + hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL); + /* print some startup info */ lib_lowprintf("\nPX4IO: starting\n"); diff --git a/nuttx/configs/px4io/io/defconfig b/nuttx/configs/px4io/io/defconfig index e0986b72c9..d2a4f38487 100755 --- a/nuttx/configs/px4io/io/defconfig +++ b/nuttx/configs/px4io/io/defconfig @@ -190,7 +190,8 @@ CONFIG_USART3_2STOP=0 CONFIG_USART1_RXDMA=y SERIAL_HAVE_CONSOLE_DMA=y -CONFIG_USART2_RXDMA=y +# Conflicts with I2C1 DMA +CONFIG_USART2_RXDMA=n CONFIG_USART3_RXDMA=y #