Pin SCLK, MOSI, dan SS merupakan pin dengan arah pengiriman data dari
master ke slave. Sebaliknya, MISO mempunyai arah komunikasi data dari slave ke master. Pengaturan hubungan antara pin SDO dan SDI harus sesuai dengan ketentuan.
Pin SDO pada master harus dihubungkan dengan pin SDI pada slave, begitu juga sebaliknya. Hal ini penting untuk diperhatikan untuk menghindari terjadinya kesalahan
prosedur pada pengiriman data. Istilah pin-pin SPI untuk berbagai devais mungkin saja mempunyai istilah yang berbeda dengan istilah di atas tergantung produsen yang
membuatnya. SPI pada AVR merupakan salah satu peripheral sederhana dalam programingnya.
AVR memiliki arsitektur 8 bit mikrokontroler, sehingga SPI pada AVR juga 8 bit. Bahkan biasanya bus SPI juga mempunyai nilai 8 bit. Pada AVR, port SPI berada pada PORT B
baik untuk yang mempunyai kaki 28 ataupun 40.
2.6.2. Register Komunikasi SPI
Ada tiga register yang terdapat pada SPI di AVR:
1. SPCR
SPI Control Register merupakan register dari Master Device. Berisi Bit inisialisasi dari AVR dan kontrol data dari Master Device .
2. SPSR
SPI Status Register merupakan register status dari AVR, digunakan untuk membaca status komunikasi dari Bus SPI.
3. SPDR
SPI Data Register merupakan register data dari SPI dimana untuk membaca atau mengirim data yang sebenarnya.
2.6.2.1. SPI Control RegIster SPCR
Seperti namanya, SPCR adalah register untuk mengontrol dari SPI. Terdapat Bit dimana kita menemukan bit untuk mengenable SPI, mengatur clock atau kecepatan dari
SPI, mengatur mode operasi seperti masterslave. Berikut ini adalah gambar isi dari SPCR:
Gambar 2.10. SPCR Register PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Bit 7: SPIE – SPI Interrupt Enable
SPIE adalah bit yang digunakan untuk mengaktikfkan interupsi dari SPI. Untuk mengaktifkannya, Global interrupt dari AVR harus diaktifkan terlebih dahulu. Set bit
ini pada kondisi high atau 1 untuk mengaktifkan interrupt SPI.
Bit 6: SPE – SPI Enable
SPE adalah bit yang digunakan untuk mengaktifkan SPI secara keseluruhan. Jika bit ini di-set pada kondisi high atau 1 maka SPI akan aktif dan yang lain akan
dimatikan. Saat SPI diaktifkan, port kaki dari AVR masih bisa berfungsi sebagai Input-Output
itu sendiri.
Bit 5: DORD – Data Order
Data order adalah mode pengiriman apakah MSB dulu atau LSB dulu. Set bit ini pada kondisi high atau 1 jika ingin mengirimkan 4 bit yang kecil LSB dulu.
Namun jika ingin mengirim MSB dulu maka set bit ini pada kondisi low atau 0.
Bit 4: MSTR – MasterSlave Select
Bit ini digunakan untuk menyetting hardware sebagai master atau sebagai slave
. Jika ingin menyetting sebagai master maka set bit ini pada kondisi high atau 1 clock dihasilkan dari device lain. Jika bit di set low atau 0 maka device bertindak
sebagai slave.
Bit 3: CPOL – Clock Polarity
Bit ini digunakan untuk memilih polaritas clock pada saat kondisi idle. Set bit ini pada kondisi high atau 1 untuk mengaktifkan clock tinggi pada saat idle, dan sebaliknya
mengatur bit ini low atau 0 untuk mengaktifkan clock rendah pada saat idle. Artinya saat bit CPOL bernilai low maka clock SCK akan bersifat rising edge, dan
jika pada kondisi high maka SCK akan bersifat Falling Edge. Rising adalah perubahan pulsa pada saat 0 ke 1, falling sebaliknya adalah kondisi pada saat pulsa berubah dari 1 ke
0.
Bit 2: CPHA – Clock Phase
Bit inidigunakanuntuk sampling data. Set Bit satuatau high untuk sampling data saat SCK dalam edge yang pertama, set bit 0 atau low untuk sampling data saat sck dalam edge
yang kedua.
Bit 1,0: SPR1, SPR0 – SPI Clock Rate Select
Digunakan untuk memilih pembagi atau prescaller dari clock SPI, dimana FOSC merupakan singkatan dari clock internal atau frekuensi kristal external.
2.6.2.2.
SPI Data Register SPDR
SPI Data register adalah register yang digunakan untuk menyimpan data baik yang akan dikirim maupun yang sudah di terima.
Gambar 2.12. SPDR Register Bit ke 7 adalah bit Most Significant Bit MSB dan Bit yang ke 0 adalah bit Least
Significant Bit LSB. Sekarang kita bisa sambungkan ke Bit ke 5 SPCR, jika MSB yang dikirim duluan maka Bit 4 hingga 7 dari data registerlah yang akan dikirim pertama,
namun jika LSB yang dikirim pertama maka Bit 0 hingga Bit 3 lah yang akan dikirim duluan.[12]
2.7. I2C Inter Integrated Circuit