I recently encountered a situation where I need to talk to a 3.3 Volt chip using an I2C interface.Since I2C is bidirectional, it's a pain to build a level converter, so I decided to try and see if aWiring board would run at 3.3 Volts.

First off, everything says you can't do this.

The Atmega-128 won't run at 3.3 Volts

The low-voltage Mega-128s with the -L suffix won't run at 25 MHz

But what the heck right?

I hooked the board to a variable voltage power-supply and booted it at 5 Volts with the blinking-LED demo running. As I lowered the voltage, it stopped running at 4.0 Volts. This is becausethe brown-out detector bit is turned on in the fuses, and it's set for 4.0 Volts, so it works.

I reset the fuses , turning off the brownout detector, and it ran all the way down to about 2.8 Volts.

So I built a 5 Volt to 3.3 Volt regulator and hooked it up to J1 and powered the unit from the USB.

After modifying the PCB a little bit to get all the voltages at the right locations, I could still run theLED demo, but the USB wouldn't run. After some more looking, I found out the FTDI chip wasbeing held in reset-state and I moved its reset pin to the +5 Volt side and everything works now.

I can reprogram the chip and run programs properly.

I will try and talk to the 3.3 Volt camera chip over the I2C bus next and I'll let you know how it comes out.