AVR I2C
I2C 통신은 두 개의 선으로 여러 장치에 접근하여 데이터를 주고 받을 수 있습니다. 두 개의 선은 clock을 동기화하기 위한 SCL과 clock에 맞춰 데이터를 보내기 위한 SDA으로 구성되어 있습니다. 통신을 주도하는 master가 있고, master의 명령에 따라 데이터를 송수신하는 slave가 있습니다.
master가 시작 신호와 함께 slave의 주소를 보내면 주소에 맞는 slave만 작동하기 때문에 여러 장치가 연결될 수 있지만 주소가 동일한 경우 문제가 발생합니다.
위험
SDA, SCL 선은 아래 그림처럼 Pull-up저항을 연결해야 합니다.
주소 데이터는 slave 주소 7 비트와 read/write 1 비트로 구성되어 있습니다.(10 비트 주소를 갖는 경우도 있습니다.) R/W 비트가 1 이면 slave -> master, 0 이면 master -> slave 방향으로 데이터가 전송됩니다.