diff options
-rw-r--r-- | example-fs-bb48/command.c | 4 | ||||
-rw-r--r-- | example-fs-bb48/touch.c | 34 | ||||
-rw-r--r-- | 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 */ |