aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2014-10-11 23:54:50 +0200
committerJoel Bodenmann <joel@unormal.org>2014-10-11 23:54:50 +0200
commitdc1ff7afa843b08a82874fcab7e06037aa663bac (patch)
treee410a4d482f9811a8365d8e4da9f6d5000fd2b13
parent5b897baae7d6c102e73176e2229b19c70839a26e (diff)
downloaduGFX-dc1ff7afa843b08a82874fcab7e06037aa663bac.tar.gz
uGFX-dc1ff7afa843b08a82874fcab7e06037aa663bac.tar.bz2
uGFX-dc1ff7afa843b08a82874fcab7e06037aa663bac.zip
fixing ADS7843 driver - tested
-rw-r--r--boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h4
-rw-r--r--drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c19
2 files changed, 16 insertions, 7 deletions
diff --git a/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h b/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h
index aa3a41e7..e4f30818 100644
--- a/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h
+++ b/boards/base/FireBull-STM32F103-FB/gmouse_lld_ADS7843_board.h
@@ -11,7 +11,7 @@
#define GMOUSE_ADS7843_PEN_CALIBRATE_ERROR 2
#define GMOUSE_ADS7843_PEN_CLICK_ERROR 2
#define GMOUSE_ADS7843_PEN_MOVE_ERROR 2
-#define GMOUSE_ADS7843_FINGER_CALIBRATE_ERROR 4
+#define GMOUSE_ADS7843_FINGER_CALIBRATE_ERROR 20
#define GMOUSE_ADS7843_FINGER_CLICK_ERROR 4
#define GMOUSE_ADS7843_FINGER_MOVE_ERROR 4
@@ -31,7 +31,7 @@ static bool_t init_board(GMouse* m, unsigned driverinstance)
return FALSE;
// Set the GPIO modes
- palSetPadMode(GPIOC, 4, PAL_MODE_INPUT);
+ palSetPadMode(GPIOC, 4, PAL_MODE_INPUT_PULLUP);
// Start the SPI peripheral
spiStart(&SPID1, &spicfg);
diff --git a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c
index a58ca938..72cd6f67 100644
--- a/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c
+++ b/drivers/ginput/touch/ADS7843/gmouse_lld_ADS7843.c
@@ -20,8 +20,9 @@
#define BOARD_DATA_SIZE 0
#endif
-#define CMD_X 0xD1
-#define CMD_Y 0x91
+#define CMD_X 0xD1
+#define CMD_Y 0x91
+#define CMD_ENABLE_IRQ 0x80
void read_xyz(GMouse* m, GMouseReading* pdr)
{
@@ -31,10 +32,18 @@ void read_xyz(GMouse* m, GMouseReading* pdr)
pdr->buttons = 0;
if (getpin_pressed()) {
+ pdr->z = 1; // Set to Z_MAX as we are pressed
+
aquire_bus();
- pdr->x = read_value(CMD_X);
- pdr->y = read_value(CMD_Y);
- pdr->z = 1;
+
+ read_value(CMD_X); // Dummy read - disable PenIRQ
+ pdr->x = read_value(CMD_X); // Read X-Value
+
+ read_value(CMD_Y); // Dummy read - disable PenIRQ
+ pdr->y = read_value(CMD_Y); // Read Y-Value
+
+ read_value(CMD_ENABLE_IRQ); // Enable IRQ
+
release_bus();
} else {
// Don't touch x and y values here