Fixes mostly related to touchscreen on Shenzhou board (still does not work)

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5196 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-09-27 01:26:47 +00:00
parent 99e8898f04
commit 0d4e24d60d
2 changed files with 70 additions and 5 deletions

View File

@ -696,3 +696,61 @@ Where <subdir> is one of the following:
delay (maybe 30 seconds?) before anything happens. That is the timeout delay (maybe 30 seconds?) before anything happens. That is the timeout
before the networking finally gives up and decides that no network is before the networking finally gives up and decides that no network is
available. available.
nxwm
----
This is a special configuration setup for the NxWM window manager
UnitTest. The NxWM window manager can be found here:
trunk/NxWidgets/nxwm
The NxWM unit test can be found at:
trunk/NxWidgets/UnitTests/nxwm
NOTE: JP6 selects between the touchscreen interrupt and the MII
interrupt. It should be positioned 1-2 to enable the touchscreen
interrupt.
Documentation for installing the NxWM unit test can be found here:
trunk/NxWidgets/UnitTests/README.txt
Here is the quick summary of the build steps:
1. Intall the nxwm configuration
$ cd ~/nuttx/trunk/nuttx/tools
$ ./configure.sh shenzhou/nxwm
2. Make the build context (only)
$ cd ..
$ . ./setenv.sh
$ make context
...
3. Install the nxwm unit test
$ cd ~/nuttx/trunk/NxWidgets
$ tools/install.sh ~/nuttx/trunk/apps nxwm
Creating symbolic link
- To ~/nuttx/trunk/NxWidgets/UnitTests/nxwm
- At ~/nuttx/trunk/apps/external
4. Build the NxWidgets library
$ cd ~/nuttx/trunk/NxWidgets/libnxwidgets
$ make TOPDIR=~/nuttx/trunk/nuttx
...
5. Build the NxWM library
$ cd ~/nuttx/trunk/NxWidgets/nxwm
$ make TOPDIR=~//nuttx/trunk/nuttx
...
6. Built NuttX with the installed unit test as the application
$ cd ~/nuttx/trunk/nuttx
$ make

View File

@ -173,19 +173,23 @@ static void tsc_enable(FAR struct ads7843e_config_s *state, bool enable)
{ {
FAR struct stm32_config_s *priv = (FAR struct stm32_config_s *)state; FAR struct stm32_config_s *priv = (FAR struct stm32_config_s *)state;
DEBUGASSERT(priv->handler); /* The caller should not attempt to enable interrupts if the handler
* has not yet been 'attached'
*/
DEBUGASSERT(priv->handler || !enable);
/* Attach and enable, or detach and disable */ /* Attach and enable, or detach and disable */
ivdbg("enable:%d\n", enable); ivdbg("enable:%d\n", enable);
if (enable) if (enable)
{ {
(void)stm32_gpiosetevent(GPIO_TP_INT, false, true, true, (void)stm32_gpiosetevent(GPIO_TP_INT, true, true, false,
priv->handler); priv->handler);
} }
else else
{ {
(void)stm32_gpiosetevent(GPIO_TP_INT, false, true, true, NULL); (void)stm32_gpiosetevent(GPIO_TP_INT, false, false, false, NULL);
} }
} }
@ -205,9 +209,12 @@ static bool tsc_busy(FAR struct ads7843e_config_s *state)
static bool tsc_pendown(FAR struct ads7843e_config_s *state) static bool tsc_pendown(FAR struct ads7843e_config_s *state)
{ {
/* REVISIT: This might need to be inverted */ /* XPT2046 uses an an internal pullup resistor. The PENIRQ output goes low
* due to the current path through the touch screen to ground, which
* initiates an interrupt to the processor via TP_INT.
*/
bool pendown = stm32_gpioread(GPIO_TP_INT); bool pendown = !stm32_gpioread(GPIO_TP_INT);
ivdbg("pendown:%d\n", pendown); ivdbg("pendown:%d\n", pendown);
return pendown; return pendown;
} }