
Daftar Isi
Atmel AVR ATMega128 adalah mitrokontroler CMOS 8-bit berdaya rendah yang berdasarkan pada AVR RISC yang mengalami penyempurnaan arsitektur. Dengan mengeksekusi instruksi dalam satu siklus clock tunggal, ATMega128 yang mempunyai throughput mendekati 1 MIPS (Million Instructions Per Second) per MHz yang memungkinkan para perancang sistem untuk mengoptimalkan konsumsi daya dibandingkan dengan kecepatan pemrosesan.
Diagram Block

Gambar diatas merupakan diagram block dari Atmel AVR ATMega128. Core dari Atmel AVR merupakan gabungan 32 register dengan instruksi set. 32 register terhubung langsung terhadap Logic Unit Arithmetic (ALU), yang memungkinkan dua register independen untuk diakses dalam satu instruksi tunggal yang dieksekusi dalam satu siklus clock. Sehingga mencapai throughputs hingga sepuluh kali lebih cepat daripada mikrokontroler CISC konvensional
SPI Block Diagram
Serial Peripheral Interface (SPI) memungkinkan melakukan transfer data sinkron berkecepatan tinggi antara Atmel AVR ATMega128 dengan perangkat periferal lainya.
ATMega128 SPI mempunyai beberapa fitur sebagai berikut :
- Full-duplex, Three-wire Synchronous Data Transfer
- Menggunakan Operasi Master atau Slave
- Data Transfer LSB atau MSB.
- Seven Programmable Bit Rates
- Transmisi data diakhiri oleh Interrupt Flag
- Menggunakan proteksi Collision Flag
- Dapat berubah dari mode Idle
- Berkecepatan ganda (CK/2) saat menggunakan mode Master SP

SPI Register
1. SPI Control Register – SPCR

- Bit 7 – SPIE: SPI Interrupt Enable
Bit ini menyebabkan SPI interrupt yang akan dijalankan jika bit SPIF dalam register SPSR bernilai set dan jika global interrupt enable dalam SREG bernilai set
- Bit 6 – SPE: SPI Enable
Saat bit SPEbernilai 1, maka SPI aktif. Bit ini harus dalam keadaan set untuk mengaktifkan setiap SPI
- Bit 5 – DORD: Data Order
Saat bit DORD bernilai 1, maka LSB dari data word dikirim terlebih dahulu.
Saat bit DORD bernilai 0, maka LSB dari data word dikirim terlebih dahulu.
- Bit 4 – MSTR: Master/Slave Select
Saat bit bernilai 1, maka master SPI mode aktif, dan saat bit bernilai 0, maka Slave SPI mode aktif. Jika SS dikonfigurasikan sebagai input dan bernilai low saat MSTR dalam keadaan set, maka MSTR akan clear dan SPIF dalam SPSR akan bernilai set. User akan bisa untuk memberi nilai set kepada MSTR untuk re-enable SPI Master Mode.
- Bit 3 – CPOL: Clock Polarity
Ketika bit ini ditulis untuk bernilai 1 , SCK akan bernilai High ketika “idle” . Ketika CPOL ditulis dengan nilai zero “0”, SCK akan bernilai Low ketika “idle” . - Bit 2 – CPHA: Clock Phase
Setting dari Clock Phase Bit ( CPHA ) ditentukan jika data adalah sample yang paling depan ( First ) atau trailing ( Last ) Edge dari SCK - Bits 1, 0 – SPR1, SPR0: SPI Clock Rate Select 1 and 0 Kedua bit yang mengontrol SCK Rate dari device yang dikonfigurasi sebagai master . SPR1 dan SPR0 tidak memiliki effect terhadap Slave .
2. SPI Register-SPSR

- Bit 7 – SPIF: SPI Interrupt Flag
Ketika Serial Transfer telah selesai, Flag SPIF akan menjadi set . Interupsi akan di generasi apabila SPIE di dalam SPCR bernilai set dan Interupsi Global di Aktifkan. Jika SS adalah input dan akan didorong untuk bernilai Low ketika SPI didalam mode Master, ini juga akan memberi nilai Set pada SPIF Flag. SPIF akan bernilai clear oleh hardware ketika di eksekusi oleh koresponden Interupsi yang meng-handle vector . Alternatifnya , SPIF bit akan bernilai Clear namun sebelumnya membaca SPI Status Register dengan SPIF bernilai set , lalu mengakses SPI Data Register ( SPDR )
- Bit 6 – WCOL: Write COlision flag
Bit WCOL akan dalam keadaan set ketika SPI Data Register melakukan transfer data.
- Bit 5.1 – Res: Reserved Bits
Bit ini disediakan oleh ATMega128 yang akan selalu dibaca sebagai 0.
- Bit 0 – SPI2X: Double SPI Speed Bit
Ketika bit ini bernilai satu, maka kecepatan SPI ( Frekuensi SCK ) akan bernilai dua kali lebih cepat ketika menggunakan mode Master. Ini berarti bahwa periode minimum SCK akan menjadi 2 kali periode clock CPU. Ketika SPI menggunakan mode Slave, SPI hanya bekerja pada fosc/4atau kurang.
3. SPI Data Register –SPDR

SPI Data Register adalah Read/Write Register yang digunakan untuk mentransfer data antara register file dengan SPI Shift Register . Menulis data ke register meng-inisiasi transmisi Data . Membaca data dari register menyebabkan Shift Register Receive memulai buffer untuk dibaca .
Pin Assignment

Gambar diatas merupakan skema pinout dari ATMega128. Yang total pinnya berjumlah 64 pin.
SPI Master Slave Device

Slave Mode
SPI dkonfigurasikan menjadi slave, pin Slave Select (SS) selalu menjadi inputan. Ketika SS bernilai rendah, maka SPI menjadi aktif, dan user juga dapat mengkonfigurasikan MISO menjadi output. Semua pin lainya menjadi input.
Ketika SS bernilai tinggi, semua pin menjadi input kecuali MISO yang dapat dikonfigurasi pengguna sebagai output, dan SPI tidak akan menerima data yang masuk (SPI pasif).
Logika pada SPI akan diatur ulang setelah pin SS bernilai tinggi. Pin SS berguna untuk paket / byte sinkronisasi yang bertujuan untuk menjaga bit counter slave sinkron dengan clock generator pada master. Ketika pin SS bernilai tinggi, slave SPI akan me-reset logika pengiriman dan logika penerimaan, dan membuang data yang sebagian diterima oleh Shift Register.
Master Mode
Ketika SPI dikonfigurasi sebagai master (MSTR pada SPCR dalam keadaan set), pengguna dapat menentukan arah dari pin SS. Jika SS dikonfigurasi sebagai output, pin tersebut menjadi pin general output yang tidak mempengaruhi sistem SPI. Biasanya, pin tersebut akan menggantikan fungsi dari SS Pin yang ada di SPI Slave .
Jika SS dikonfigurasi menjadi input, SS harus ditahan dalam posisi HIGH untuk memastikan operasi dari Master SPI . Jika Pin SS diubah menjadi Low oleh Circuit Periferal ketika SPI di konfigurasikan menjadi MASTER dengan SS Pin sebagai inputnya, sistem SPI menafsirkannya sebagai Master lain yang memilih SPI sebagai Slave nya dan memulai untuk mengirimkan data . Untuk Menghindari Bus Contention , sistem SPI akan menerima aksi sebagai berikut :
- MSTR bit di dalam SPCR akan dihapus dan sistem SPI akan menjadi Slave. Akibat hasil dari SPI yang menjadi Slave , MOSI dan SCK Pin menjadi input .
- SPIF Flag di dalam set SPSR , dan jika SPI Interrupt di-enable dan I-bit di dalam SREG dalam posisi Set, Rutinitas Interupsi akan dijalankan
Dengan demikian, ketika Interupsi-driven Transmisi SPI digunakan dalam Mode Master, dan disana terdapat kemungkinan SS dijalankan dalam Mode Low, Interupsi harus selalu mengecek MSTR bit dalam posisi Set. Jika MSTR Bit telah dihapus akibat dari selektor Slave, MSTR Bit harus di set kembali oleh User untuk mengaktifkan SPI Master Mode lagi .
Referensi
Atmel Corporation. “ATMega128/L Datasheet.” Atmel Products – Datasheets. 2010. 10 September 2010. <http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf>
Leave a Reply