Skip to content

Commit

Permalink
Override for LPC1768 u8g/digipot I2C master ID (#16622)
Browse files Browse the repository at this point in the history
  • Loading branch information
0r31 authored and thinkyhead committed Jan 21, 2020
1 parent 1a5cbc9 commit b57ef4b
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 15 deletions.
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

0 comments on commit b57ef4b

Please sign in to comment.