From 1f23bd4048610ce98f3a77e28feff8a0cd346208 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Fri, 1 Jul 2016 10:58:05 +0900
Subject: Change touch button for MKL27Z

---
 example-fs-bb48/command.c  |  4 ++--
 example-fs-bb48/touch.c    | 34 ++++++++++++++++++++++++----------
 mcu/clk_gpio_init-mkl27z.c |  4 ++--
 3 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/example-fs-bb48/command.c b/example-fs-bb48/command.c
index 1a6582c..485b116 100644
--- a/example-fs-bb48/command.c
+++ b/example-fs-bb48/command.c
@@ -142,8 +142,8 @@ get_hex (struct tty *tty, const char *s, uint32_t *v_p)
 }
 
 
-#define TOUCH_VALUE_HIGH 195
-#define TOUCH_VALUE_LOW  150
+#define TOUCH_VALUE_HIGH 100
+#define TOUCH_VALUE_LOW  50
 static void
 cmd_button (struct tty *tty, const char *line)
 {
diff --git a/example-fs-bb48/touch.c b/example-fs-bb48/touch.c
index 960692e..d22f5e7 100644
--- a/example-fs-bb48/touch.c
+++ b/example-fs-bb48/touch.c
@@ -24,22 +24,28 @@ static struct TPM *const TPM1 = (struct TPM *)0x40039000;
 static chopstx_intr_t tpm1_intr;
 #define INTR_REQ_TPM1 18
 
-uint16_t
-touch_get (void)
+static void
+gpio_assert_low (void)
 {
-  chopstx_prio_t prio_old;
-
-  prio_old = chopstx_setpriority (CHOPSTX_PRIO_INHIBIT_PREEMPTION);
-
   /* Assert LOW.  */ 
   PORTB->PCR1 = (1<<8) /* GPIO                  */
               | (0<<6) /* DriveStrengthEnable=0 */
               | (0<<4) /* PassiveFilterEnable=0 */
               | (1<<2) /* SlewRateEnable = slow */
               | (0<<1) /* pull enable = 0       */ 
-              | (0<<0) /* puddselect= 0         */
+              | (0<<0) /* pull up select= 0         */
               ;
 
+  GPIOB->PCOR = (1 << 1);            /* PTB1: Clear: Output 0  */
+}
+
+uint16_t
+touch_get (void)
+{
+  chopstx_prio_t prio_old;
+  uint16_t v;
+
+  prio_old = chopstx_setpriority (CHOPSTX_PRIO_INHIBIT_PREEMPTION);
   /* 
    * Start the timer's counter. 
    * TOF clear, TOIE=1, CPWMS=0, CMOD=1, PS=011.
@@ -52,18 +58,23 @@ touch_get (void)
               | (0<<4) /* PassiveFilterEnable=0 */
               | (1<<2) /* SlewRateEnable = slow */
               | (0<<1) /* pull enable = 0       */ 
-              | (0<<0) /* puddselect= 0         */
+              | (0<<0) /* pullup select= 0      */
               ;
 
   chopstx_setpriority (prio_old);
 
   chopstx_intr_wait (&tpm1_intr);
+  gpio_assert_low ();
+
+  v = TPM1->C1V;
+
   /* Clear overflow and CH1 capture.  */
   TPM1->STATUS = 0x102;
-  /* Stop the counter.  */
+  /* Stop the timer.  */
   TPM1->SC = 0;
+  TPM1->CNT = 0xffff;	   /* Writing causes reset of the counter.  */
 
-  return TPM1->C1V;
+  return v;
 }
 
 
@@ -81,4 +92,7 @@ touch_init (void)
   /* Stop on overflow: CSOO=1 */ 
   /* Run the timer in the debug mode */
   TPM1->CONF = 0x000200c0;
+
+  TPM1->CNT = 0xffff;	   /* Writing causes reset of the counter.  */
+  gpio_assert_low ();
 }
diff --git a/mcu/clk_gpio_init-mkl27z.c b/mcu/clk_gpio_init-mkl27z.c
index d126d94..630fd0b 100644
--- a/mcu/clk_gpio_init-mkl27z.c
+++ b/mcu/clk_gpio_init-mkl27z.c
@@ -88,14 +88,14 @@ gpio_init (void)
               | (0<<4) /* PassiveFilterEnable=0 */
               | (1<<2) /* SlewRateEnable = slow */
               | (0<<1) /* pull enable = 0       */ 
-              | (0<<0) /* puddselect= 0         */
+              | (0<<0) /* pull up select= 0     */
               ;
   PORTB->PCR1 = (1<<8) /* GPIO                  */
               | (0<<6) /* DriveStrengthEnable=0 */
               | (0<<4) /* PassiveFilterEnable=0 */
               | (1<<2) /* SlewRateEnable = slow */
               | (0<<1) /* pull enable = 0       */ 
-              | (0<<0) /* puddselect= 0         */
+              | (0<<0) /* pull up select= 0     */
               ;
 
   GPIOB->PDDR = (1 << 1) | (1 << 0); /* PTB0, PTB1 : Output    */
-- 
cgit v1.2.3