From b57ef4b2617b3413c578a56d87a61c8789f29a2d Mon Sep 17 00:00:00 2001 From: 0r31 <37673727+0r31@users.noreply.github.com> Date: Tue, 21 Jan 2020 03:09:16 +0100 Subject: [PATCH] Override for LPC1768 u8g/digipot I2C master ID (#16622) --- Marlin/Configuration_adv.h | 14 +++++++++++--- Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c | 7 +++---- Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h | 12 +++++++----- .../src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp | 6 +++--- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 315c0714b4f6..648e3761b253 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -2449,6 +2449,14 @@ #endif // HAS_L64XX +// @section i2cbus + +// +// I2C Master ID for LPC176x LCD and Digital Current control +// Does not apply to other peripherals based on the Wire library. +// +//#define I2C_MASTER_ID 1 // Set a value from 0 to 2 + /** * TWI/I2C BUS * @@ -2477,10 +2485,10 @@ * echo:i2c-reply: from:99 bytes:5 data:hello */ -// @section i2cbus - //#define EXPERIMENTAL_I2CBUS -#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave +#if ENABLED(EXPERIMENTAL_I2CBUS) + #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave +#endif // @section extras diff --git a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c index a451f4c43f75..f3dc6d230818 100644 --- a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c +++ b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c @@ -26,7 +26,6 @@ #ifdef TARGET_LPC1768 -#include "../../../inc/MarlinConfigPre.h" #include "i2c_util.h" #define U8G_I2C_OPT_FAST 16 // from u8g.h @@ -43,13 +42,13 @@ void configure_i2c(const uint8_t clock_option) { PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; PinCfg.Portnum = 0; - #if USEDI2CDEV_M == 0 + #if I2C_MASTER_ID == 0 PinCfg.Funcnum = 1; PinCfg.Pinnum = 27; // SDA0 / D57 AUX-1 ... SCL0 / D58 AUX-1 - #elif USEDI2CDEV_M == 1 + #elif I2C_MASTER_ID == 1 PinCfg.Funcnum = 3; PinCfg.Pinnum = 0; // SDA1 / D20 SCA ... SCL1 / D21 SCL - #elif USEDI2CDEV_M == 2 + #elif I2C_MASTER_ID == 2 PinCfg.Funcnum = 2; PinCfg.Pinnum = 10; // SDA2 / D38 X_ENABLE_PIN ... SCL2 / D55 X_DIR_PIN #endif diff --git a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h index c2d6c2b81d01..671a1e3746f3 100644 --- a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h +++ b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h @@ -25,15 +25,17 @@ * HAL_LPC1768/include/i2c_util.h */ -#ifndef USEDI2CDEV_M - #define USEDI2CDEV_M 1 // By default use I2C1 controller +#include "../../../inc/MarlinConfigPre.h" + +#ifndef I2C_MASTER_ID + #define I2C_MASTER_ID 1 #endif -#if USEDI2CDEV_M == 0 +#if I2C_MASTER_ID == 0 #define I2CDEV_M LPC_I2C0 -#elif USEDI2CDEV_M == 1 +#elif I2C_MASTER_ID == 1 #define I2CDEV_M LPC_I2C1 -#elif USEDI2CDEV_M == 2 +#elif I2C_MASTER_ID == 2 #define I2CDEV_M LPC_I2C2 #else #error "Master I2C device not defined!" diff --git a/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp b/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp index 8afb60752e1a..360cce7f662f 100644 --- a/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp +++ b/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp @@ -25,15 +25,15 @@ #ifdef TARGET_LPC1768 +#include "../include/i2c_util.h" +#include "../../../core/millis_t.h" + extern int millis(); #ifdef __cplusplus extern "C" { #endif -#include "../include/i2c_util.h" -#include "../../../core/millis_t.h" - ////////////////////////////////////////////////////////////////////////////////////// // These two routines are exact copies of the lpc17xx_i2c.c routines. Couldn't link to