Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Override for LPC1768 u8g/digipot I2C master ID #16622

Merged
merged 4 commits into from
Jan 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions Marlin/Configuration_adv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
*
Expand Down Expand Up @@ -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

Expand Down
7 changes: 3 additions & 4 deletions Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

#ifdef TARGET_LPC1768

#include "../../../inc/MarlinConfigPre.h"
#include "i2c_util.h"

#define U8G_I2C_OPT_FAST 16 // from u8g.h
Expand All @@ -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
Expand Down
12 changes: 7 additions & 5 deletions Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -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!"
Expand Down
6 changes: 3 additions & 3 deletions Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down