Mikrokontroler AVR

Mikrokontroler AVR (Alf and Vegards Risc processor) dari Atmel ini menggunakan arsitektur RISC (Reduced Instruction Set Computer) yang

artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit dibandingkan dengan MCS-51 yang menerapkan arsitektur CISC (Complex Instruction Set Computer).

Hampir semua instruksi prosesor RISC adalah instruksi dasar (belum tentu sederhana), sehingga instruksi-instruksi ini umumnya hanya memer-lukan 1 siklus mesin untuk menjalankannya. Kecuali instruksi percabangan yang membutuhkan 2 siklus mesin. RISC biasanya dibuat dengan arsitektur Harvard, karena arsitektur ini yang memungkinkan untuk membuat ekseku-si instruksi selesai dikerjakan dalam satu atau dua siklus mesin, sehingga akan semakin cepat dan handal. Proses downloading programnya relatif lebih mudah karena dapat dilakukan langsung pada sistemnya.

Sekarang ini, AVR dapat dikelompokkan menjadi 6 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATmega, keluarga AT90CAN, keluarga AT90PWM dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya, sedangkan dari segi arsitektur dan instruksi yang digunakan hampir sama.

3.7.1    Memori

Bagian memori dari mikrokontrol Atmel RISC AVR berbasis Harvard Model, yang mana memorinya terbagi sehingga dapat meningkatkan kece-patan akses dan meningkatkan kapasitas. CPU membagi antarmuka untuk bagian kode memori FLASH, bagian memori data , dan memori EEPROM. kode memori FLASH,memori FLASH merupakan blok dari memori FLASH yang dimulai dari lokasi 0x000 dan ukurannya tergantung dari mikrokontroler yang digunakan. Memori FLASH merupakan memori non-volatile dan digunakan untuk menyimpan kode eksekusi dan kon-stanta, karena kode-kode tersebut akan digunakan kembali meskipun mikrokontroler tidak terhubung ke catu daya, oh iya.. yang dimak-sud non-volatile yaitu kode yang disimpan dalam memori tidak hilang meskipun mikrokontrol tidak dialiri listrik, ruang memori antara 16 bit pada setiap lokasi untuk menagani instruksi mesin yang khusunya single-16 bit word. Memori DataMemori data Atmel AVR khasnya terdiri dari tiga bagi-an memori baca/tulis terpisah .bagian terendah terdiri dari 32 register kerja umum, yang diikuti oleh 64 register I/O, yang diikuti oleh inter-nal SRAM. Register kerja umum hanya : digunakan untuk menyimpan variabel lokal dan data temporal yang digunakan oleh program saat dieksusi dan dapat juga digunakan untuk penyimpanan data variabel global, 64 register I/O digunakan sebagai antarmuka untuk perangkat I/O dan peripheral yang berada di papan mikrokontroler. dan internal SRAM digunakan sebagai area penyimpanan variable umum dan juga untuk prosessor stack.

Register-register, Register kerja umum menempati 32 sel terndah da-lam data memori. register ini kebanyakan digunakan seperti data pe-nyimpanan dalam kalkulator yang mana hanya disimpan sementara. terkadang digunakan untuk menyimpan variable lokal, dan terkadang variable global, dan terkadang sebagai pengarah ke memori yang digu-nakan oleh prosessor. singkatnya prosessor menggunakan 32 register kerja sebagaimana program dieksekusi.

Register I/O, Setiap regiter memberikan akses ke register kontrol atau ke register data I/O peripheral yang berada dalam mikrokontroler. Programer lebioh sering menggunakan I/O register untuk mengantar-muka ke peripheral I/O dari mikrokontroler. ukuran Register I/O tergantung dari perangkat. setiap register I/O memiliki nama, sebuah alamat I/O, dan alamat SRAM.

SRAM, Bagian SRAM dari memori digunakan untuk menyimpan vari-abel yang tidak dapat disimpan kedalam register dan untuk menyimp-an prosessor satck.

Memori EEPROM, bagian memori EEPROM adalah area memori ba-ca/tulis yang non volatile. ini biasanya digunakan untuk menyimpan data yang tidak boleh hilang saat catu daya dilepas (mikrokontroler dimatikan) dan dipasang kembali (mikrokontroler dinyalakan). ruang EEPROM dimulai dari 0x000 dan ke nilai maksimum tergantung spe-si kasi mikrontroler yang digunakan.

3.7.2    Pin I/O and Interface

Kon gurasi pada pin pada setiap mikrokontroler berbeda, ditentuka pa-da pada setip Fitur yang di tawarkan ic mikrokontroler, untuk kon gurasi yang akan di paparka sebagai contoh kon gurasi pin adalah atemaga 16, mengetahui pin dan Port pada atemga sangant perlu, karena akan memberi

petunjuk untuk membuatan skematik dan tur yang akan di gunakan pada atmega 16.

VCC merupakan pin yang berfungsi sebagi masukan caru daya. GND merupaka pin Ground.

Port A, Port B, Port C, Dan Port D dapat di lihat pada gambar

RESET pin ini digunakan untuk mereset progran yang telah berjan pada mikrokontroller.

XTAL1 dan XTAL2 merupakan merupakan pin masukan Clok Ekster-nal.

AREF merupaka pin referensi pada tegangan ACD. AVCC merupakan tegangan masukan pin ADC

3.7.3    Skematik Mikrokontroler

Penerapan apliksai untuk mengguanakan mikrokontroler perlu memeha-mi skematik dari sistem mikrokontroller (sismin). Dalam ic mikrokontroller sudah terintegarasi Clock sebesar 1 mHz, namun dalam pembuatan sismin perlu penambahan beberapa komponen seperti Catu Daya, Tombal Reser, dan Clock Eksternal. Berikut adalah skematik sederhana Sismin.

Skematik pada gambar di atas terlihat jelas bahwa sismin membutuhkan komponen tambahan seperti kristal untuk menambah ferforma clock data pada saat mikrokontroler dijalankan, ic 7805 berfungsi untuk menurunkan tegangan pada tegangan sumber sebesar 12 Vdc. Pin header juga menun-jukkan komunikasi jalur data antara mikrokontroler dangan downloader, kemudian terlihat jelas tombol Reset yang terhubung langsung ke kaki pin reset Atmega.

3.7.4    Code Vision AVR

komunikasi antara mesin dengan manusia membutuhkan bahasa ting-kat tinggi kemudian di terjemahkan dalam bahasi mesin, AVR merupakan sebuah aplikasi Compiler yang mengubah bahasa tingkat tinggi menjadi ba-hasa mesin, sehingga apa yang diiginkan manusisa dapat terialisakian pada mikrokontroler.

Penjelasan:

#include (preprocessor): diguanakan untuk memasukkan (include) te-xt dari le lain, mende nisikan macro yang dapat mengurangi beban kerja pemprograman dan meningkatkan legibility source code (mudah dibaca)


#de ne: digunakan untuk mede nisikan macro, atau mende niskan fungsi setiap perintah untuk mengatur kerja pin ataupun data.


//...(komentar): perintah ini sebagai pembantu dalam mengatur fung-si source code agar dapat mudah mencari posisi.


void main(void): penanda atau sebagai penunjuk isi dari program da-lam pemprograman AVR, isi dari program dimulai dari tanda kurung kurawal (f) dan diakhiri pula dengan tanda tutup kurung kurawal (g)


while(1) : penanda atau sebagai penunjuk isi dari program yang me-miliki karakteristik berulang (looping)


3.7.5    Downloader

Untuk mmemasukkan kode-kode kedalam mikrokontroler membutuhk-an pirati tambahan yang disebut sebagai downloader, Fungsi utama dari downloader adalah mengupload kode-kode yang telah dibuat kedalam mik-rokontroler, kelebihan dari donwloader ini adalah pada saat mengupload program lebih cepat dari yang biasanya karena menggunakan komunikasi serial SPI yang terdidri dari 3 data Mosi, Miso Dan SCK.


Complete and Continue