mbed
Fork of mbed-dev by
Diff: targets/TARGET_NORDIC/TARGET_NRF5/i2c_api.c
- Revision:
- 150:02e0a0aed4ec
- Parent:
- 149:156823d33999
- Child:
- 160:d5399cc887bb
--- a/targets/TARGET_NORDIC/TARGET_NRF5/i2c_api.c Fri Oct 28 11:17:30 2016 +0100 +++ b/targets/TARGET_NORDIC/TARGET_NRF5/i2c_api.c Tue Nov 08 17:45:16 2016 +0000 @@ -107,6 +107,25 @@ return (i2c_address >> 1); } +void SPI0_TWI0_IRQHandler(void); +void SPI1_TWI1_IRQHandler(void); + +static const peripheral_handler_desc_t twi_handlers[TWI_COUNT] = +{ + #if TWI0_ENABLED + { + SPI0_TWI0_IRQn, + (uint32_t) SPI0_TWI0_IRQHandler + }, + #endif + #if TWI1_ENABLED + { + SPI1_TWI1_IRQn, + (uint32_t) SPI1_TWI1_IRQHandler + } + #endif +}; + void i2c_init(i2c_t *obj, PinName sda, PinName scl) { int i; @@ -124,12 +143,20 @@ nrf_drv_twi_config_t const config = { .scl = scl, .sda = sda, - .frequency = NRF_TWI_FREQ_100K, - .interrupt_priority = APP_IRQ_PRIORITY_LOW, + .frequency = NRF_TWI_FREQ_100K, +#ifdef NRF51 + .interrupt_priority = APP_IRQ_PRIORITY_LOW +#elif defined(NRF52) + .interrupt_priority = APP_IRQ_PRIORITY_LOWEST +#endif + }; for (i = 0; i < TWI_COUNT; ++i) { if (!m_twi_info[i].initialized) { + + NVIC_SetVector(twi_handlers[i].IRQn, twi_handlers[i].vector); + nrf_drv_twi_t const *twi = &m_twi_instances[i]; ret_code_t ret_code = nrf_drv_twi_init(twi, &config, twi_event_handler, obj);