Pengetahuan Dasar Pemrograman SPI (serial Pheriperal
Interface) pada AVR dengan AVR Studio
Pada artikel ini saya akan membahas pemrograman SPI dengan AVR Studio , setelah pada artikel lain
saya sudah bahas SPI dgn CodeVision bisa anda baca disini
Transfer data dengan SPI digunakan antara Master ( Microcontroller) dgn slave (microcontroller atau
SPI device spt MMC card, SPI ADC , dll) dalam jarak dekat dan kecepatan cukup tinggi.
Komunikasi serial data antara master dan slave pada SPI diatur melalui 4 buah pin yang terdiri dari
SCLK, MOSI, MISO, dan SS sbb:
SCLK dari master ke slave yang berfungsi sebagai clock
MOSI jalur data dari master dan masuk ke dalam slave
MISO jalur data keluar dari slave dan masuk ke dalam master
SS (slave select) merupakan pin yang berfungsi untuk mengaktifkan slave
SPI Diagram
Transfer data SPI
Pin / kaki SS (slave select) merupakan pin yang berfungsi untuk mengaktifkan slave sehingga
pengiriman data hanya dapat dilakukan jika slave dalam keadaan aktif (active low). Dari gambar
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 1/6
6/4/2016 Pengetahuan Dasar Pemrograman SPI (serial Pheriperal Interface) pada AVR dengan AVR Studio
diagram SPi diatas anda sudah bisa membayangkan bagaimana cara SPI mentransfer data antara
Master dan slave. Intinya ada di register geser 8 bit. Tiap clock dari SCK akan mempertukarkan 1 bit
data , jadi untuk mempertukarkan register di master dan slave perlu 8 kali clock. contoh konkritnya
begini: data di register geser master adalah 1111 1111 data di register gaser slave adalah 0000 0000
keadaan awal
kemudian pada clock pertama dan kedua isi register berpindah sbb:
Setelah 8 kali clok data berpindah:
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 2/6
6/4/2016 Pengetahuan Dasar Pemrograman SPI (serial Pheriperal Interface) pada AVR dengan AVR Studio
Jalur SPI pada AVR Atmega8535
Jalur SPI pada Atmega8535
Register yang terkait dgn SPI:
Sebelum kita memprogram SPI dengan AVR Studio kita perlu mengetahui 3 buah regsiter yg terkait dgn
SPI yaitu:
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 3/6
6/4/2016 Pengetahuan Dasar Pemrograman SPI (serial Pheriperal Interface) pada AVR dengan AVR Studio
1. Register Control SPI ( SPCR )
bit SPIF diset = 1 , menyebabkan interupsi SPI .
bit SPE di set =1 : untuk mengaktifkan fungsi SPI
bit MSTR diset =1 menjadikan microcontroller sbg Master SPI, artinya menjadi sumber pengendali.
bit DORD diset 1 maka bit yg dikirim pertama LSB, jikaDORD= 0 bit yg pertama dikirim MSB
kombinasi Bit SPI2X, SPR1, dan SPR0 untuk menentukan sumber clock
000: SCK = system clock/4
001: SCK = system clock/16
010: SCK = system clock/64
011: SCK = system clock/1284
100: SCK = system clock/2
101: SCK = system clock/8
110: SCK = system clock/32
111: SCK = system clock/64
2. Register Status SPI (SPSR)
bit SPIF otomatis di set 1 ketika delapan bit data telah ditransfer dari master ke slave.
SPSR ini juga berisi bit SPI2X digunakan untuk mengatur frekuensi SCK
3. Register Data (SPDR)
Register ini berisi data yg akan ditulis atau dibaca.
Contoh Code inisialisasi dan bacatulis SPI dengan AVR Studio
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 4/6
6/4/2016 Pengetahuan Dasar Pemrograman SPI (serial Pheriperal Interface) pada AVR dengan AVR Studio
void inisialisasi_spi(unsigned char control)
{
DDRB = 0xA0; //Set SCK (PB7), MOSI (PB5) sbg output,
//konfigurasi Register Control (SPCR)
SPCR = 0x53; //SPIE:0,SPE:1,DORD:0,MSTR:1,CPOL:0,CPHA:0,SPR:1,SPR0:1
}
void menulis_databyte(unsigned char databyte)
{
SPDR = databyte;
while (!(SPSR & 0x80)); //tunggu sampai data selesai di transfer
}
unsigned char membaca_databyte(void)
{
while (!(SPSR & 0x80)); //tunggu sampai data selesai di terima
return SPDR;
}
Master dapat dihubungkan dengan banyak slave
Master dihubungkan dengan banyak slave dengan cara berantai/ cascade
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 5/6
6/4/2016 Pengetahuan Dasar Pemrograman SPI (serial Pheriperal Interface) pada AVR dengan AVR Studio
Contoh aplikasi SPI lainnya bisa anda baca disini:
https://pccontrol.wordpress.com/2011/09/15/pemrogramandisplay7segmentdenganspi
max7221/
referensi :
https://pccontrol.wordpress.com/2011/09/16/pengetahuandasarpemrogramanspiserialpheriperalinterfacepadaavrdenganavrstudio/ 6/6