diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/attiny/ao_exti.h | 1 | ||||
| -rw-r--r-- | src/drivers/ao_ms5607.c | 12 | ||||
| -rw-r--r-- | src/lpc/ao_exti.h | 1 | ||||
| -rw-r--r-- | src/lpc/ao_exti_lpc.c | 3 | ||||
| -rw-r--r-- | src/stm/ao_exti.h | 1 | ||||
| -rw-r--r-- | src/stm/ao_exti_stm.c | 30 | 
6 files changed, 24 insertions, 24 deletions
diff --git a/src/attiny/ao_exti.h b/src/attiny/ao_exti.h index 2ea4f47d..85bb2fba 100644 --- a/src/attiny/ao_exti.h +++ b/src/attiny/ao_exti.h @@ -30,5 +30,6 @@ ao_exti_setup_port(uint8_t pin, uint8_t mode, void (*callback)(void));  #define ao_exti_init()  #define AO_EXTI_MODE_RISING	1 +#define AO_EXTI_PIN_NOCONFIGURE	0  #endif /* _AO_EXTI_H_ */ diff --git a/src/drivers/ao_ms5607.c b/src/drivers/ao_ms5607.c index 0eece584..8f1dcbe1 100644 --- a/src/drivers/ao_ms5607.c +++ b/src/drivers/ao_ms5607.c @@ -247,17 +247,9 @@ ao_ms5607_init(void)  	 */  	ao_exti_setup(AO_MS5607_MISO_PORT,  		      AO_MS5607_MISO_PIN, -		      AO_EXTI_MODE_RISING, +		      AO_EXTI_MODE_RISING| +		      AO_EXTI_PIN_NOCONFIGURE,  		      ao_ms5607_isr); - -#ifdef STM_MODER_ALTERNATE -	/* Reset the pin from INPUT to ALTERNATE so that SPI works -	 * This needs an abstraction at some point... -	 */ -	stm_moder_set(AO_MS5607_MISO_PORT, -		      AO_MS5607_MISO_PIN, -		      STM_MODER_ALTERNATE); -#endif  }  #endif diff --git a/src/lpc/ao_exti.h b/src/lpc/ao_exti.h index cbe63eaa..e8599eb4 100644 --- a/src/lpc/ao_exti.h +++ b/src/lpc/ao_exti.h @@ -25,6 +25,7 @@  #define AO_EXTI_PRIORITY_LOW	16  #define AO_EXTI_PRIORITY_MED	0  #define AO_EXTI_PRIORITY_HIGH	32 +#define AO_EXTI_PIN_NOCONFIGURE	64  void  ao_exti_setup(uint8_t gpio, uint8_t pin, uint8_t mode, void (*callback)()); diff --git a/src/lpc/ao_exti_lpc.c b/src/lpc/ao_exti_lpc.c index ce98b4ad..588cf58c 100644 --- a/src/lpc/ao_exti_lpc.c +++ b/src/lpc/ao_exti_lpc.c @@ -91,6 +91,9 @@ ao_exti_setup (uint8_t port, uint8_t pin, uint8_t mode, void (*callback)(void))  	if (pint == LPC_NUM_PINT)  		ao_panic(AO_PANIC_EXTI); +	if (!mode & AO_EXTI_PIN_NOCONFIGURE) +		ao_enable_input(port, pin, mode); +  	ao_arch_block_interrupts();  	mask = (1 << pint);  	ao_pint_inuse |= mask; diff --git a/src/stm/ao_exti.h b/src/stm/ao_exti.h index 35b56b57..ebea224d 100644 --- a/src/stm/ao_exti.h +++ b/src/stm/ao_exti.h @@ -25,6 +25,7 @@  #define AO_EXTI_PRIORITY_LOW	16  #define AO_EXTI_PRIORITY_MED	0  #define AO_EXTI_PRIORITY_HIGH	32 +#define AO_EXTI_PIN_NOCONFIGURE	64  void  ao_exti_setup(struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback)()); diff --git a/src/stm/ao_exti_stm.c b/src/stm/ao_exti_stm.c index 1361d0d4..c1dcdf85 100644 --- a/src/stm/ao_exti_stm.c +++ b/src/stm/ao_exti_stm.c @@ -70,21 +70,23 @@ ao_exti_setup (struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback  	/* configure gpio to interrupt routing */  	stm_exticr_set(gpio, pin); -	/* configure pin as input, setting selected pull-up/down mode */ -	stm_moder_set(gpio, pin, STM_MODER_INPUT); -	switch (mode & (AO_EXTI_MODE_PULL_UP|AO_EXTI_MODE_PULL_DOWN)) { -	case 0: -	default: -		pupdr  = STM_PUPDR_NONE; -		break; -	case AO_EXTI_MODE_PULL_UP: -		pupdr = STM_PUPDR_PULL_UP; -		break; -	case AO_EXTI_MODE_PULL_DOWN: -		pupdr = STM_PUPDR_PULL_DOWN; -		break; +	if (!(mode & AO_EXTI_PIN_NOCONFIGURE)) { +		/* configure pin as input, setting selected pull-up/down mode */ +		stm_moder_set(gpio, pin, STM_MODER_INPUT); +		switch (mode & (AO_EXTI_MODE_PULL_UP|AO_EXTI_MODE_PULL_DOWN)) { +		case 0: +		default: +			pupdr  = STM_PUPDR_NONE; +			break; +		case AO_EXTI_MODE_PULL_UP: +			pupdr = STM_PUPDR_PULL_UP; +			break; +		case AO_EXTI_MODE_PULL_DOWN: +			pupdr = STM_PUPDR_PULL_DOWN; +			break; +		} +		stm_pupdr_set(gpio, pin, pupdr);  	} -	stm_pupdr_set(gpio, pin, pupdr);  	/* Set interrupt mask and rising/falling mode */  	stm_exti.imr &= ~mask;  | 
