Wawa:
The internal pull up resistors to 5volt on an Uno/Nano are AFAIK activated with the wire.begin call.
You could try to disable that in the wire library.A Mega has hardware pull up (10k resistorsto 5volt).
Not sure if also the internal pull up resistors are activated.Other devices connected to the bus might have pull up resistors to 5volt.
Leo..
Wawa:
The internal pull up resistors to 5volt on an Uno/Nano are AFAIK activated with the wire.begin call.
You could try to disable that in the wire library.A Mega has hardware pull up (10k resistorsto 5volt).
Not sure if also the internal pull up resistors are activated.Other devices connected to the bus might have pull up resistors to 5volt.
Leo..
yes the internal pull-up resistors are triggered with the twi_init() call
Wire.cpp
void TwoWire::begin(void)
{
rxBufferIndex = 0;
rxBufferLength = 0;
txBufferIndex = 0;
txBufferLength = 0;
twi_init();
}
and
twi.cpp
void twi_init(void)
{
// initialize state
twi_state = TWI_READY;
twi_sendStop = true; // default value
twi_inRepStart = false;
// activate internal pullups for twi. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
digitalWrite(SDA, 1);
digitalWrite(SCL, 1);
// initialize twi prescaler and bit rate
cbi(TWSR, TWPS0);
cbi(TWSR, TWPS1);
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
/* twi bit rate formula from atmega128 manual pg 204
SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
note: TWBR should be 10 or higher for master mode
It is 72 for a 16mhz Wiring board with 100kHz TWI */
// enable twi module, acks, and twi interrupt
TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
}
But the pull-up resistor value is 20kOhm-50kOhm, per the datasheet See page 366
So the 4.7k ohm will have the most influence on the line and keep the voltage near the required 3.3v
as for the Arduino mega, the onboard fixed 10K ohm pull-ups are a concern as they are attached to the 5V line and
I haven't used a mega with the mpu6050 yet.
be aware of all the devices with pull-up resistors and what they are attached to. modifications may be needed to remove extra pull-up resistors to keep the i2c bus working at the correct voltage you really should only have or need 1 pullup resister for data and 1 for clock.
Z