From 7061345ec21ac4c9e0c48882bbcc06ea3b3d4752 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Tue, 3 Oct 2017 19:15:33 +0200 Subject: [PATCH] Fix hard faults by moving slaveConfig and slaveHandle out of InitI2c(), thereby making them always available for KSDK. Fixed by @santiagogf89. --- left/src/i2c_watchdog.c | 2 +- left/src/init_peripherals.c | 29 +++-------------------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/left/src/i2c_watchdog.c b/left/src/i2c_watchdog.c index 59c159c..8367616 100644 --- a/left/src/i2c_watchdog.c +++ b/left/src/i2c_watchdog.c @@ -28,7 +28,7 @@ void I2C_WATCHDOG_LPTMR_HANDLER(void) // NVIC_SystemReset(); I2cWatchdog_InnerCounter++; I2C_SlaveDeinit(I2C_BUS_BASEADDR); - InitI2cV2(); + InitI2c(); } prevWatchdogCounter = I2C_Watchdog; diff --git a/left/src/init_peripherals.c b/left/src/init_peripherals.c index c7f2e68..f4026b3 100644 --- a/left/src/init_peripherals.c +++ b/left/src/init_peripherals.c @@ -10,6 +10,9 @@ #include "slave_protocol_handler.h" #include "i2c_watchdog.h" +i2c_slave_config_t slaveConfig; +i2c_slave_handle_t slaveHandle; + uint8_t byteIn; uint8_t rxMessagePos; i2c_slave_transfer_event_t prevEvent; @@ -65,32 +68,6 @@ void InitI2c(void) { PORT_SetPinConfig(I2C_BUS_SDA_PORT, I2C_BUS_SDA_PIN, &pinConfig); PORT_SetPinConfig(I2C_BUS_SCL_PORT, I2C_BUS_SCL_PIN, &pinConfig); - i2c_slave_config_t slaveConfig; - i2c_slave_handle_t slaveHandle; - - I2C_SlaveGetDefaultConfig(&slaveConfig); - slaveConfig.slaveAddress = I2C_ADDRESS_LEFT_KEYBOARD_HALF_FIRMWARE; - I2C_SlaveInit(I2C_BUS_BASEADDR, &slaveConfig); - I2C_SlaveTransferCreateHandle(I2C_BUS_BASEADDR, &slaveHandle, i2cSlaveCallback, NULL); - slaveHandle.eventMask |= kI2C_SlaveCompletionEvent; - I2C_SlaveTransferNonBlocking(I2C_BUS_BASEADDR, &slaveHandle, kI2C_SlaveCompletionEvent); -} - -void InitI2cV2(void) { - port_pin_config_t pinConfig = { - .pullSelect = kPORT_PullUp, - }; - - CLOCK_EnableClock(I2C_BUS_SDA_CLOCK); - CLOCK_EnableClock(I2C_BUS_SCL_CLOCK); - - pinConfig.mux = I2C_BUS_MUX; - PORT_SetPinConfig(I2C_BUS_SDA_PORT, I2C_BUS_SDA_PIN, &pinConfig); - PORT_SetPinConfig(I2C_BUS_SCL_PORT, I2C_BUS_SCL_PIN, &pinConfig); - - i2c_slave_config_t slaveConfig; - i2c_slave_handle_t slaveHandle; - I2C_SlaveGetDefaultConfig(&slaveConfig); slaveConfig.slaveAddress = I2C_ADDRESS_LEFT_KEYBOARD_HALF_FIRMWARE; I2C_SlaveInit(I2C_BUS_BASEADDR, &slaveConfig);