summaryrefslogtreecommitdiff
path: root/nuttx/configs/sam3u-ek
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-01-22 03:08:29 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-01-22 03:08:29 +0000
commit8765c895a02731e26a6eb7f883173db1bf959d34 (patch)
tree706b5d9a28b9c10e19614c17a291ab5c79c916c3 /nuttx/configs/sam3u-ek
parentbb5d61e8e375cc88c61e973710186c94af501b7b (diff)
downloadpx4-nuttx-8765c895a02731e26a6eb7f883173db1bf959d34.tar.gz
px4-nuttx-8765c895a02731e26a6eb7f883173db1bf959d34.tar.bz2
px4-nuttx-8765c895a02731e26a6eb7f883173db1bf959d34.zip
Add serial and LED driver
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2519 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/sam3u-ek')
-rwxr-xr-xnuttx/configs/sam3u-ek/include/board.h26
-rwxr-xr-xnuttx/configs/sam3u-ek/ostest/defconfig2
-rwxr-xr-xnuttx/configs/sam3u-ek/src/sam3uek_internal.h9
-rwxr-xr-xnuttx/configs/sam3u-ek/src/up_leds.c91
4 files changed, 108 insertions, 20 deletions
diff --git a/nuttx/configs/sam3u-ek/include/board.h b/nuttx/configs/sam3u-ek/include/board.h
index 4ba49e224..3376b3993 100755
--- a/nuttx/configs/sam3u-ek/include/board.h
+++ b/nuttx/configs/sam3u-ek/include/board.h
@@ -86,23 +86,15 @@
/* LED definitions ******************************************************************/
-#define LED_STARTED 0
-#define LED_HEAPALLOCATE 1
-#define LED_IRQSENABLED 2
-#define LED_STACKCREATED 3
-#define LED_INIRQ 4
-#define LED_SIGNAL 5
-#define LED_ASSERTION 6
-#define LED_PANIC 7
-
-/* GPIO pin definitions *************************************************************/
-
-#define GPIO_LED0 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_CLEAR|GPIO_PIN0)
-#define GPIO_LED1 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_SET|GPIO_PIN1)
-#define GPIO_LED2 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_SET|GPIO_PIN2)
-
-#define GPIO_BUTTON1 (GPIO_INPUT|GPIO_CFG_PULLUP|GPIO_CFG_DEGLITCH|GPIO_PORT_PIOA|GPIO_PIN18)
-#define GPIO_BUTTON2 (GPIO_INPUT|GPIO_CFG_PULLUP|GPIO_CFG_DEGLITCH|GPIO_PORT_PIOA|GPIO_PIN19)
+#define LED_STARTED 0 /* LED0=OFF LED1=OFF LED2=OFF */
+#define LED_HEAPALLOCATE 1 /* LED0=OFF LED1=OFF LED2=ON */
+#define LED_IRQSENABLED 2 /* LED0=OFF LED1=ON LED2=OFF */
+#define LED_STACKCREATED 3 /* LED0=OFF LED1=ON LED2=ON */
+
+#define LED_INIRQ 4 /* LED0=OFF LED1=TOG LED2=XXX */
+#define LED_SIGNAL 5 /* LED0=OFF LED1=XXX LED2=TOG */
+#define LED_ASSERTION 6 /* LED0=TOG LED1=XXX LED2=XXX */
+#define LED_PANIC 7 /* LED0=TOG LED1=XXX LED2=XXX*/
/************************************************************************************
* Public Data
diff --git a/nuttx/configs/sam3u-ek/ostest/defconfig b/nuttx/configs/sam3u-ek/ostest/defconfig
index 7c5b33c31..33f1ee3ec 100755
--- a/nuttx/configs/sam3u-ek/ostest/defconfig
+++ b/nuttx/configs/sam3u-ek/ostest/defconfig
@@ -100,7 +100,7 @@ CONFIG_SAM3U_BUILDROOT=y
#
# Individual subsystems can be enabled:
#
-CONFIG_SAM3U_USART=y
+CONFIG_SAM3U_UART=y
CONFIG_SAM3U_USART0=n
CONFIG_SAM3U_USART1=n
CONFIG_SAM3U_USART2=n
diff --git a/nuttx/configs/sam3u-ek/src/sam3uek_internal.h b/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
index 9c13dc5f5..fde22f7d8 100755
--- a/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
+++ b/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
@@ -51,10 +51,19 @@
/* SAM3U-EK GPIOs *******************************************************************/
+/* GPIO pin definitions *************************************************************/
+
/* LEDs */
+#define GPIO_LED0 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_CLEAR|GPIO_PIN0)
+#define GPIO_LED1 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_SET|GPIO_PIN1)
+#define GPIO_LED2 (GPIO_OUTPUT|GPIO_CFG_DEFAULT|GPIO_PORT_PIOB|GPIO_OUTPUT_SET|GPIO_PIN2)
+
/* BUTTONS */
+#define GPIO_BUTTON1 (GPIO_INPUT|GPIO_CFG_PULLUP|GPIO_CFG_DEGLITCH|GPIO_PORT_PIOA|GPIO_PIN18)
+#define GPIO_BUTTON2 (GPIO_INPUT|GPIO_CFG_PULLUP|GPIO_CFG_DEGLITCH|GPIO_PORT_PIOA|GPIO_PIN19)
+
/* SPI Chip Selects */
/************************************************************************************
diff --git a/nuttx/configs/sam3u-ek/src/up_leds.c b/nuttx/configs/sam3u-ek/src/up_leds.c
index 8ec9a4707..09acb23de 100755
--- a/nuttx/configs/sam3u-ek/src/up_leds.c
+++ b/nuttx/configs/sam3u-ek/src/up_leds.c
@@ -2,7 +2,7 @@
* configs/sam3u-ek/src/up_leds.c
* arch/arm/src/board/up_leds.c
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -52,6 +52,8 @@
#include "sam3u_internal.h"
#include "sam3uek_internal.h"
+#ifdef CONFIG_ARCH_LEDS
+
/****************************************************************************
* Definitions
****************************************************************************/
@@ -70,15 +72,96 @@
# define ledvdbg(x...)
#endif
+#define LED_OFF 0
+#define LED_ON 1
+#define LED_NOCHANGE 2
+#define LED_MASK 3
+
+#define LED0_SHIFT 0
+#define LED0_OFF (LED_OFF << LED0_SHIFT)
+#define LED0_ON (LED_ON << LED0_SHIFT)
+#define LED0_NOCHANGE (LED_NOCHANGE << LED0_SHIFT)
+#define LED1_SHIFT 2
+#define LED1_OFF (LED_OFF << LED1_SHIFT)
+#define LED1_ON (LED_ON << LED1_SHIFT)
+#define LED1_NOCHANGE (LED_NOCHANGE << LED1_SHIFT)
+#define LED2_SHIFT 4
+#define LED2_OFF (LED_OFF << LED2_SHIFT)
+#define LED2_ON (LED_ON << LED2_SHIFT)
+#define LED2_NOCHANGE (LED_NOCHANGE << LED2_SHIFT)
+
/****************************************************************************
* Private Data
****************************************************************************/
+static const uint8_t g_ledon[8] =
+{
+
+ (LED0_OFF |LED1_OFF |LED2_OFF), /* LED_STARTED */
+ (LED0_ON |LED1_OFF |LED2_ON), /* LED_HEAPALLOCATE */
+ (LED0_OFF |LED1_ON |LED2_OFF), /* LED_IRQSENABLED */
+ (LED0_ON |LED1_ON |LED2_ON), /* LED_STACKCREATED */
+
+ (LED0_OFF |LED1_OFF |LED2_NOCHANGE), /* LED_INIRQ */
+ (LED0_OFF |LED1_NOCHANGE|LED2_OFF), /* LED_SIGNAL */
+ (LED0_ON |LED1_NOCHANGE|LED2_NOCHANGE), /* LED_ASSERTION */
+ (LED0_ON |LED1_NOCHANGE|LED2_NOCHANGE) /* LED_PANIC */
+};
+
+static const uint8_t g_ledoff[8] =
+{
+
+ (LED0_OFF |LED1_OFF |LED2_OFF), /* LED_STARTED (does not happen) */
+ (LED0_ON |LED1_OFF |LED2_ON), /* LED_HEAPALLOCATE (does not happen) */
+ (LED0_OFF |LED1_ON |LED2_OFF), /* LED_IRQSENABLED (does not happen) */
+ (LED0_ON |LED1_ON |LED2_ON), /* LED_STACKCREATED (does not happen) */
+
+ (LED0_OFF |LED1_ON |LED2_NOCHANGE), /* LED_INIRQ */
+ (LED0_OFF |LED1_NOCHANGE|LED2_ON), /* LED_SIGNAL */
+ (LED0_OFF |LED1_NOCHANGE|LED2_NOCHANGE), /* LED_ASSERTION */
+ (LED0_OFF |LED1_NOCHANGE|LED2_NOCHANGE) /* LED_PANIC */
+};
+
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
+ * Name: up_setled
+ ****************************************************************************/
+
+static void up_setled(uint16_t pinset, uint8_t state)
+{
+ /* Assume active high. Initial state == 0 means active high */
+
+ bool polarity = ((pinset & GPIO_OUTPUT_SET) == 0);
+ switch (state)
+ {
+ case LED_OFF:
+ polarity = !polarity;
+
+ case LED_ON:
+ break;
+
+ case LED_NOCHANGE:
+ default:
+ return;
+ }
+ sam3u_gpiowrite(pinset, polarity);
+}
+
+/****************************************************************************
+ * Name: up_setleds
+ ****************************************************************************/
+
+static void up_setleds(uint8_t state)
+{
+ up_setled(GPIO_LED0, (state >> LED0_SHIFT) & LED_MASK);
+ up_setled(GPIO_LED1, (state >> LED1_SHIFT) & LED_MASK);
+ up_setled(GPIO_LED2, (state >> LED2_SHIFT) & LED_MASK);
+}
+
+/****************************************************************************
* Public Functions
****************************************************************************/
@@ -86,9 +169,11 @@
* Name: up_ledinit
****************************************************************************/
-#ifdef CONFIG_ARCH_LEDS
void up_ledinit(void)
{
+ (void)sam3u_configgpio(GPIO_LED0);
+ (void)sam3u_configgpio(GPIO_LED1);
+ (void)sam3u_configgpio(GPIO_LED2);
}
/****************************************************************************
@@ -97,6 +182,7 @@ void up_ledinit(void)
void up_ledon(int led)
{
+ up_setleds(g_ledon[led & 7]);
}
/****************************************************************************
@@ -105,6 +191,7 @@ void up_ledon(int led)
void up_ledoff(int led)
{
+ up_setleds(g_ledoff[led & 7]);
}
#endif /* CONFIG_ARCH_LEDS */