Senin, 27 Februari 2012

Tutorial Komunikasi I2C (Inter-Integrated Circuit) Antar Mikrokontroler dengan Bascom AVR

I2C merupakan salah satu bentuk komunikasi serial pada mikrokontroler yang menggunakan dua pin atau disebut juga two-wire interface, yaitu pin SDA (data) dan SCL (clock). Berbeda dengan SPI yang mempunyai MASTER dan SLAVE yang harus dibedakan, pada I2C semuanya bertindak sebagai MASTER atau MULTI-MASTER SERIAL. 
Pada tutorial ini saya akan memberikan contoh sederhana untuk komunikasi serial I2C antar dua mikrokontroler dengan bahasa pemrograman BASCOM AVR.

Rangkaian skematiknya sebagai berikut:

Listing program untuk MASTER:
'=============================================
' Program I2C Mikrokontroler dengan BascomAVR
' Programmer   : Wahyu Rahmaniar
' Company      : Technologination
'=============================================

$regfile = "m32def.dat"
$crystal = 11059200
$baud = 9600


Config Sda = Portd.2
Config Scl = Portd.4
I2cinit
Print "master"

Dim X As Integer

Const Slave = &H40
X = 10

Do
I2cinit
I2cstart
I2csend Slave , X
I2cstop
Waitus 10
Print X
Waitms 200
X = X + 1
Loop



Listing program untuk SLAVE:
'=============================================
' Program I2C Mikrokontroler dengan BascomAVR
' Programmer   : Wahyu Rahmaniar
' Company      : Technologination
'=============================================

$regfile = "m32def.dat"
$crystal = 11059200
$baud = 9600


Config Sda = Portd.2
Config Scl = Portd.4
I2cinit
Print "Slave"

Dim X As Integer

Const Slave = &H40

Do
I2cinit
I2cstart
I2creceive Slave , X
I2cstop
Print X
Waitms 200
Loop


Slave dan Master bisa ditukar kedudukannya.
Program diatas akan menampilkan angka dari 11 sampai seterusnya, dan ditampilkan pada terminal dengan simulasi proteus.

Permasalahan utama pada komunikasi I2C ini adalah timing atau pewaktuan dari pengirim kepada penerima harus sama, kurang sedikit saja data sudah tidak bagus.

Listing program dan simulasi bisa didownload disini.

Tempat Jual Komponen dan Elektronik.
-ayuchan-