Understanding the Wire port to Arduino

My main question is, why does the wire library use analog pins?

On the arduino board, are analog pins needed in order to interface to an I2C device? Has anyone worked on a I2C library that works with the digital pins?

Thanks! Lucas

In order to shoehorn the maximum functionality onto the smallest number of pins, Atmel (like other IC manufacturers) put multiple functions onto some pins under the assumption you won’t use them all. For example, if you are absolutely desparate for one more I/O, you can reconfigure the RESET pin to be an IO (which I think is one of the things that will prevent you from ever reprogramming the ATmega, so testing your code will waste a bunch of chips).

In this case they put the I2C hardware on the same pins as the analog pins - they’re betting you won’t need all the analog pins at the same time you need I2C.

You are, of course, welcome to bit-bang the I2C on some other pins, but you’ll have to do it without hardware support from the ATmega and without software support from the Arduino/Wiring libraries.


got it, so it's actually hard wired!