1.1.
MICROCONTROLLER VS MICROPROCESSOR
Microcontroller
sebagai sebuah “one chip solution” pada dasarnya adalah rangkaian terintregrasi
(Integrated Circuit-IC) yang telah mengandung secara lengkap berbagai komponen
pembentuk sebuah komputer. Berbeda dengan penggunaan microprocessor yang masih memerlukan
komponen luar tambahan seperti RAM, ROM, Timer, dan sebagainya--untuk sistem
microcontroller, tambahan komponen diatas secara praktis hampir tidak
dibutuhkan lagi. Hal ini disebabkan semua komponen penting tersebut telah
ditanam bersama dengan sistem prosesor ke dalam IC tunggal microcontroller
bersangkutan. Dengan alasan itu sistem microcontroller dikenal juga dengan
istilah populer the real Computer On a Chip-komputer utuh dalam keping tunggal,
sedangkan sistem microprocessor dikenal dengan istilah yang lebih terbatas
yaitu Computer On a Chip-komputer dalam keping tunggal. Berdasarkan fungsinya,
microcontroller secara umum digunakan untuk menjalankan program yang bersifat
permanen pada sebuah aplikasi yang spesifik (misal aplikasi yang berkaitan dengan
pengontrolan dan monitoring). Sedangkan program aplikasi yang dijalankan pada
sistem microprosesor biasanya bersifat sementara dan berorientasi pada
pengolahan data. Perbedaan fungsi kedua sistem diatas secara praktis
mengakibatkan kebutuhan minimal yang harus dipenuhi juga akan berbeda (misal
ditinjau dari kecepatan detak operasi, jumlah RAM, panjang register, dan lain
sebagainya). Hampir tidak dapat disangkal, dewasa ini akan sukar dijumpai
seseorang yang masih menggunakan komputer dengan microprocessor berbasis 8 atau
16 bit (misal microprocessor 8088 dan 8086 produk perusahaan Intel). Mengapa
demikian?, salah satu alasannya— Perangkat lunak komputer yang beredar saat ini
umumnya mensyaratkan kecepatan CPU yang sangat tinggi (dalam orde Mega bahkan GigaHz)
serta memori dengan kapasitas sangat besar (dalam orde MegaByte) yang mana hal
tersebut tidak mungkin dapat dipenuhi oleh sistem microprocessor lama tersebut.
Sedangkan untuk sistem microcontroller, program yang dijalankan biasanya tidak
memerlukan sumber daya sebanyak dan sebesar itu. Untuk aplikasi kontrol
sederhana dan tingkat menengah, microcontroller yang digunakan cukup berbasis 4
sampai 8 bit. Microcontroller dengan ukuran lebih besar (misal 16 dan 32 bit)
umumnya hanya digunakan untuk aplikasi-aplikasi khusus pada bidang pengolahan
citra atau bidang kontrol yang memerlukan kepresisian tinggi.
1.2.
PERKEMBANGAN MICROCONTROLLER
Pada awal
perkembangannya (yaitu sekitar tahun 1970-an), sumber daya perangkat keras
serta perangkat lunak microcontroller yang beredar masih sangat terbatas. Saat
itu, sistem microcontroller hanya dapat diprogram secara khusus dengan
perangkat yang dinamakan EPROM programmer. Sedangkan perangkat lunak yang
digunakan umumnya berbasis bahasa assembler yang relatif sulit dipelajari. Seiring
dengan perkembangan teknologi solid state dan perangkat lunak komputer secara
umum, saat ini pemrograman sistem microcontroler dirasakan relatif mudah
dilakukan,terutama dengan digunakannya metode pemrograman ISP (In system
Programming). Dengan menggunakan metode ini kita dapat memprogram sistem
microcontroller sekaligus mengujinya pada sistem minimum atau papan pengembang
(development board) secara langsung tanpa perlu lagi perangkat “pembakar“
program atau emulator secara terpisah. Selain itu, ditinjau dari aspek
perangkat lunak pemrogramannya, dewasa ini banyak alternatif bahasa aras tinggi
dari pihak ke-tiga, baik gratis maupun komersil yang dapat digunakan.
Penggunaan bahasa aras tinggi ini (seperti Pascal, C, basic dan sebagainya) selain
akan menghemat waktu pengembangan, kode program yang disusun juga akan bersifat
lebih modular dan terstruktur. Bagi para pemula yang berminat memperdalam
microcontroller baik sekedar untuk tujuan penyaluran hobi atau kelak untuk
tujuan yang lebih profesional, dewasa ini banyak microcontroller dari berbagai
vendor yang dapat dijadikan sarana untuk berlatih (misal microcontroller PIC
produk Microchip, COP-8 produk National, AT89S51/52 dan AVR produk Atmel, HC11
produk Motorola dan lain sebagainya). Untuk memutuskan microcontroller mana
yang akan dijadikan sarana berlatih dan akan diperdalam secara serius, ada
baiknya hal-hal berikut ini dijadikan bahan pertimbangan :
- Apakah
microcontroller tersebut mudah dijumpai dipasaran
- Apakah
banyak dukungan pihak ketiga dalam penggunaan microcontroller tersebut,
(misalnya perusahaan-perusahaan pembuat papan pengembang, pemasok compiler
serta debbuger untuk pemrogramannya, dan sebagainya)
- Apakah
banyak referensi dan contoh-contoh program untuk panduan anda berlatih
(misalnya dari sumber-sumber internet dan buku)
- Apakah
banyak forum-forum diskusi (terutama di Internet) tempat anda dan programer
lain berbagi pengalaman.
Dengan
berbagai macam kelebihan yang dimiliki serta hal-hal yang menjadi bahan
pertimbangan diatas, dewasa ini microcontroller AVR 8 bit produk perusahaan
Atmel adalah salah satu microcontroller yang banyak merebut minat kalangan
profesional dan juga cocok dijadikan sarana berlatih bagi para pemula. Hal ini
selain karena ragam fitur yang ditawarkan, juga disebabkan kemudahan untuk
memperoleh microcontroller tersebut (berikut papan pengembangnya) di pasaran
dengan harga yang relatif murah. Selain itu berkaitan dengan rancangan
arsitekturnya, microcontroller AVR ini juga cocok diprogram dengan menggunakan
bahasa pemrograman aras tinggi (terutama bahasa C).
1.3 SEKILAS
TENTANG MICROCONTROLLER KELUARGA AVR
Secara
histories microcontroller seri AVR pertama kali diperkenalkan ke pasaran
sekitar tahun 1997 oleh perusahaan Atmel, yaitu sebuah perusahaan yang sangat
terkenal dengan produk microcontroller seri AT89S51/52-nya yang sampai sekarang
masih banyak digunakan di lapangan. Tidak seperti microcontroller seri
AT89S51/52 yang masih mempertahankan arsitektur dan set instruksi dasar
microcontroller 8031 dari perusahaan INTEL. Microcontroller AVR ini diklaim
memiliki arsitektur dan set instruksi yang benar-benar baru dan berbeda dengan
arsitektur microcontroller sebelumnya yang diproduksi oleh perusahaan tersebut.
Tetapi walaupun demikian, bagi para programmer yang sebelumnya telah terbiasa
dengan microcontroller seri AT89S51/52, dan berencana untuk beralih ke
microcontroller AVR, maka secara teknis tidak akan banyak kesulitan yang
berarti, hal ini dikarenakan selain konsep dan istilah-istilah dasarnya hampir
sama, pemrograman level assembler-nya pun relative tidak jauh berbeda.
Berdasarkan
arsitekturnya, AVR merupakan microcontroller RISC (Reduce Instruction Set
Computer) dengan lebar bus data 8 bit. Berbeda dengan sistem AT89S51/52 yang
memiliki frekuensi kerja seperduabelas kali frekuensi oscilator, frekuensi
kerja microcontroller AVR ini pada dasarnya sama dengan frekuensi oscilator,
sehingga hal tersebut menyebabkan kecepatan kerja AVR untuk frekuensi oscilator
yang sama, akan dua belas kali lebih cepat dibandingkan dengan microcontroller
keluarga AT89S51/52.
Dengan
instruksi yang sangat variatif (mirip dengan sistem CISC-Complex Instruction
Set Computer) serta jumlah register serbaguna (general Purpose Register)
sebanyak 32 buah yang semuanya terhubung secara langsung ke ALU (Arithmetic
Logic Unit), kecepatan operasi microcontroller AVR ini dapat mencapai 16 MIPS
(enam belas juta instruksi per detik) —sebuah kecepatan yang sangat tinggi
untuk ukuran microcontroller 8 bit yang ada di pasaran sampai saat ini.
Untuk memenuhi
kebutuhan dan aplikasi industri yang sangat beragam, microcontroller keluarga
AVR ini muncul di pasaran dengan tiga seri utama: tinyAVR, ClasicAVR
(AVR),
megaAVR. Berikut ini beberapa seri yang dapat anda jumpai di pasaran:
Keseluruhan
seri AVR ini pada dasarnya memiliki organisasi memori dan set instruksi yang
sama (sehingga dengan demikian jika kita telah mahir menggunakan salah satu
seri AVR, untuk beralih ke seri yang lain akan relative mudah). Perbedaan
antara tinyAVR, AVR dan megaAVR pada kenyataannya hanya merefleksikan
tambahan-tambahan fitur yang ditawarkannya saja (misal adanya tambahan ADC
internal pada seri AVR tertentu, jumlah Port I/O serta memori yang berbeda, dan
sebagainya). Diantara ketiganya, megaAVR umumnya memiliki fitur yang paling
lengkap, disusul oleh AVR, dan terakhir tinyAVR.
Untuk memberi
gambaran yang lebih jelas, tabel 1.1 berikut memperlihatkan perbedaan ketiga
seri AVR ditinjau dari jumlah memori yang dimilikinya.
Table 1.1.
Perbedaan seri AVR berdasarkan jumlah memori
Seperti
terlihat pada tabel tersebut, Semua jenis AVR ini telah dilengkapi dengan
memori flash sebagai memori program. Tergantung serinya, kapasitas memori flash
yang dimiliki bervariasi dari 1K sampai 128 KB. Secara teknis, memori jenis ini
dapat diprogram melalui saluran antarmuka yang dikenal dengan nama Serial
Peripheral Interface (SPI) yang terdapat pada setiap seri AVR tersebut. Dengan
menggunakan perangkat lunak programmer (downloader) yang tepat, pengisian
memori Flash dengan menggunakan saluran SPI ini dapat dilakukan bahkan ketika
chip AVR telah terpasang pada sistem akhir (end system), sehingga dengan
demikian pemrogramannya sangat fleksibel dan tidak merepotkan pengguna (Secara
praktis metoda ini dikenal dengan istilah ISP-In System Programming – sedangkan
perangkat lunaknya dinamakan In System Programmer).
Untuk
penyimpanan data, microcontroller AVR menyediakan dua jenis memori yang
berbeda: EEPROM (Electrically Erasable Programmable Read Only Memory) dan SRAM
(Static Random Access memory). EEPROM umumnya digunakan untuk menyimpan
data-data program yang bersifat permanen, sedangkan SRAM digunakan untuk
menyimpan data variabel yang dimungkinkan berubah setiap saatnya. Kapasitas
simpan data kedua memori ini bervariasi tergantung pada jenis AVR-nya (lihat
tabel 1). Untuk seri AVR yang tidak memiliki SRAM, penyimpanan data variabel
dapat dilakukan pada register serbaguna yang terdapat pada CPU microcontroller
tersebut.
Selain
seri-seri diatas yang sifatnya lebih umum, Perusahaan Atmel juga memproduksi beberapa
jenis microcontroller AVR untuk tujuan yang lebih khusus dan terbatas, seperti
seri AT86RF401 yang khusus digunakan untuk aplikasi wireless remote control
dengan menggunakan gelombang radio (RF), seri AT90SC yang khusus digunakan
untuk peralatan sistem-sistem keamanan kartu SIM GSM, pembayaran via internet,
dan lain sebagainya.
1.4
MICROCONTROLLER AVR DAN BAHASA C
Tak dapat
disangkal, dewasa ini penggunaan bahasa pemrograman aras tinggi (seperti C,
Basic, Pascal, Forth dan sebagainya) semakin populer dan banyak digunakan untuk
memprogram sistem microcontroller. Berdasarkan sifatnya yang sangat fleksibel
dalam hal keleluasaan pemrogram untuk mengakses perangkat keras, Bahasa C
merupakan bahasa pemrograman yang paling cocok dibandingkan bahasa-bahasa pemrograman
aras tinggi lainnya.
Dikembangkan
pertama kali oleh Dennis Ritchie dan Ken Thomson pada tahun 1972, Bahasa C
merupakan salah satu bahasa pemrograman yang paling populer untuk pengembangan
program-program aplikasi yang berjalan pada sistem microprocessor (komputer).
Karena kepopulerannya, vendor-vendor perangkat lunak kemudian mengembangkan
compiler C sehingga menjadi beberapa varian berikut: Turbo C, Borland C,
Microsoft C, Power C, Zortech C dan lain sebagainya. Untuk menjaga
portabilitas, compiler-compiler C tersebut menerapkan ANSI C (ANSI: American
National Standards Institute) sebagai standar bakunya. Perbedaan antara
compiler-compiler tersebut umumnya hanya terletak pada pengembangan
fungsi-fungsi library serta fasilitas IDE (Integrated Development
Environment)–nya saja.
Relatif
dibandingkan dengan bahasa aras tinggi lain, bahasa C merupakan bahasa
pemrograman yang sangat fleksibel dan tidak terlalu terikat dengan berbagai
aturan yang sifatnya kaku. Satu-satunya hal yang membatasi penggunaan bahasa C
dalam sebuah aplikasi adalah semata-mata kemampuan imaginasi programmer-nya
saja. Sebagai ilustrasi, dalam program C kita dapat saja secara bebas
menjumlahkan karakter huruf (misal ‘A’) dengan sebuah bilangan bulat (misal
‘2’), dimana hal yang sama tidak mungkin dapat dilakukan dengan menggunakan
bahasa aras tinggi lainnya. Karena sifatnya ini, seringkali bahasa C
dikatagorikan sebagai bahasa aras menengah (mid level language).
Dalam
kaitannya dengan pemrograman microcontroller, Tak pelak lagi bahasa C saat ini
mulai menggeser penggunaan bahasa aras rendah assembler. Penggunaan bahasa C
akan sangat efisien terutama untuk program microcontroller yang berukuran
relatif besar. Dibandingkan dengan bahasa assembler, penggunaan bahasa C dalam
pemrograman memiliki beberapa kelebihan berikut: Mempercepat waktu
pengembangan, bersifat modular dan terstruktur, sedangkan kelemahannya adalah
kode program hasil kompilasi akan relative lebih besar (dan sebagai
konsekuensinya hal ini terkadang akan mengurangi kecepatan eksekusi).
Khusus pada
microcontroller AVR, untuk mereduksi konsekuensi negative diatas, Perusahaan
Atmel merancang sedemikian sehingga arsitektur AVR ini efisien dalam mendekode
serta mengeksekusi instruksi-instruksi yang umum dibangkitkan oleh compiler C
(Dalam kenyataannya, pengembangan arsitektur AVR ini tidak dilakukan sendiri
oleh perusahaan Atmel tetapi ada kerja sama dengan salah satu vendor pemasok
compiler C untuk microcontroller tersebut, yaitu IAR C)
Table 1.2.
Beberapa Compiler C untuk microcontroller AVR
Seperti halnya
compiler C untuk sistem microprocessor, di pasaran ada beberapa varian compiler
C untuk memprogram sistem microcontroller AVR yang dapat dijumpai (lihat tabel
1.2).
Dengan
beberapa kelebihan yang dimilikinya, saat ini CodeVisionAVR produk Perusahaan
Pavel Haiduc merupakan compiler C yang relative banyak digunakan dibandingkan
compiler-compiler C lainnya.
1.5 SEKILAS
TENTANG PERANGKAT LUNAK CODEVISIONAVR
CodeVisionAVR
pada dasarnya merupakan perangkat lunak pemrograman microcontroller keluarga
AVR berbasis bahasa C. Ada tiga komponen penting yang telah diintegrasikan
dalam perangkat lunak ini: Compiler C, IDE dan Program generator.
Berdasarkan
spesifikasi yang dikeluarkan oleh perusahaan pengembangnya, Compiler C yang digunakan
hampir mengimplementasikan semua komponen standar yang ada pada bahasa C
standar ANSI (seperti struktur program, jenis tipe data, jenis operator, dan
library fungsi standar-berikut penamaannya). Tetapi walaupun demikian,
dibandingkan bahasa C untuk aplikasi komputer, compiler C untuk microcontroller
ini memiliki sedikit perbedaan yang disesuaikan dengan arsitektur AVR tempat
program C tersebut ditanamkan (embedded).Khusus untuk library fungsi, disamping
library standar (seperti fungsi-fungsi matematik, manipulasi String,
pengaksesan memori dan sebagainya), CodeVisionAVR juga menyediakan
fungsi-fungsi tambahan yang sangat bermanfaat dalam pemrograman antarmuka AVR
dengan perangkat luar yang umum digunakan dalam aplikasi kontrol. Beberapa
fungsi library yang penting diantaranya adalah fungsi-fungsi untuk pengaksesan
LCD, komunikasi I2C, IC RTC (Real time Clock), sensor suhu LM75, SPI (Serial
Peripheral Interface) dan lain sebagainya.
Untuk
memudahkan pengembangan program aplikasi, CodeVisionAVR juga dilengkapi IDE
yang sangat user friendly (lihat gambar 1.1). Selain menu-menu pilihan yang
umum dijumpai pada setiap perangkat lunak berbasis Windows, CodeVisionAVR ini
telah mengintegrasikan perangkat lunak downloader (in system programmer) yang
dapat digunakan untuk mentransfer kode mesin hasil kompilasi kedalam sistem
memori microcontroller AVR yang sedang diprogram.
Gambar 1.1.
IDE perangkat lunak CodeVisionAVR
Selain itu,
CodeVisionAVR juga menyediakan sebuah tool yang dinamakan dengan Code Generator
atau CodeWizardAVR (lihat gambar 1.2). Secara praktis, tool ini sangat
bermanfaat membentuk sebuah kerangka program (template), dan juga memberi
kemudahan bagi programmer dalam peng-inisialisasian register-register yang
terdapat pada microcontroller AVR yang sedang diprogram. Dinamakan Code
Generator, karena perangkat lunak CodeVision ini akan membangkitkan kode-kode
program secara otomatis setelah fase inisialisasi pada jendela CodeWizardAVR
selesai dilakukan. Gambar 1.3 berikut memperlihatkan beberapa penggal baris
kode program yang dibangkitkan secara otomatis oleh CodeWizardAVR. Secara
teknis, penggunaan tool ini pada dasarnya hampir sama dengan application wizard
pada bahasa-bahasa pemrograman Visual untuk komputer (seperti Visual C, Borland
Delphi, dan sebagainya)
Gambar1.2.Code Generator yang dapat digunakan untuk menginisialisasi register-
register pada Micro controller AVR
Disamping
versi yang komersil, Perusahaan Pavel Haiduc juga mengeluarkan CodeVisionAVR
versi Demo yang dapat didownload dari internet secara gratis (lihat alamat URL:
http://www.hpinfotech.ro) Dalam versi ini, memori flash yang dapat diprogram
dibatasi maksimal 2K, selain itu tidak semua fungsi library yang tersedia dapat
dipanggil secara bebas.
Gambar 1.3.
Kode-kode program yang dibangkitkan otomatis oleh code generator
1.6 PAKET
PEMROGRAMAN MICROCONTROLLER AVR LENGKAP
Seperti halnya
belajar pemrograman komputer, agar mendapatkan pemahaman yang kuat dalam
pemrograman microcontroller AVR, anda sebaiknya mencoba langsung membuat
aplikasi program pada microcontroller tersebut. Untuk tujuan latihan, perangkat
lunak CodevisionAVR versi demo pada dasarnya adalah sarana yang cocok dan telah
cukup memenuhi kebutuhan minimal anda. Gambar 1.4. berikut memperlihatkan
diagram blok yang mengilustrasikan alur pemrograman microcontroller AVR dengan
CodevisionAVR yang dapat anda lakukan :
Gambar 1.4.
Alur pemrograman microcontroller AVR dengan menggunakan CodevisionAVR
Seperti
terlihat pada gambar 1.4, CodevisionAVR produk Pavel Haiduc pada dasarnya telah
mengintegrasikan komponen-komponen penting dalam pemrograman microcontroller
AVR: Editor,Compiler C, assembler dan ISP (In System Programmer). Khusus dengan
ISP, ada beberapa jenis perangkat keras programmer dongle (berikut papan
pengembangnya) yang telah didukung oleh perangkat lunak CodevisionAVR ini,
salah satu diantaranya adalah Kanda System STK 200/300 produk Perusahaan Kanda
yang terhubung pada saluran antarmuka port Paralel Komputer (gambar 1.5). Jika
anda berencana membuat dongle yang kompatible dengan produk Kanda, rangkaiannya
dapat dilihat pada Lampiran A (lihat situs:
http:\\www.grandtonics.com). Atau
jika mau membeli sistem yang siap pakai (berupa dongle beserta papan
pengembangnya), salah satu produk dalam negeri dengan harga yang relative murah
adalah DT AVR nano/micro System (gambar 1.6) produk Innovative Electronics,
Surabaya. Alamat URL:http//www.innovative_electronic.com., Sistem ini
kompatibel dengan kanda System STK 200/300. Untuk tujuan-tujuan percobaan,
produk innovative_electronic ini sudah sangat memadai, selain mudah dihubungkan
dengan modul-modul perangkat input/output, seperti modul LCD, keypad, array
LED, penggerak motor stepper, dan sebagainya, sistem ini juga telah dilengkapi
konverter TTL ke RS232 yang bermanfaat untuk komunikasi microcontroller AVR
dengan komputer.
Berkaitan
dengan perangkat lunak downloader, pada dasarnya anda dapat menggunakan
perangkat lunak lain (di luar CodeVisionAVR) untuk keperluan transfer kode
mesin kedalam sistem memori microcontroller AVR. Salah satunya adalah ISP_AVR
yang dibuat oleh Holger Buss dan Ingo Busker dari Jerman. Perangkat lunak
beserta rangkaian antarmukanya dapat di-download secara gratis pada alamat URL:
http://www.mikrocontroller.com.
Gambar 1.5.
Papan pengembang Kanda System STK 200/300 produk Perusahaan Kanda
Gambar 1.5.
Papan pengembang DT AVR micro System compatible dengan STK 200/300
Share