Teks tersebut merupakan bab pengantar mikrokontroler yang menjelaskan tentang pengertian mikrokontroler, perbedaan mikrokontroler dan mikroprosesor, perkembangan mikrokontroler, arsitektur mikrokontroler AVR khususnya ATMega16, serta konfigurasi pin dan blok diagram dari ATMega16.
1. Modul Dasar Mikrokontroler | Beny Abdurrahman | 1
BAB I
PENGANTAR MIKROKONTROLER
1. Pengenalan Mikrokontroler
Mikrokontroler adalah single chip computer
Gambar 1. MikrokontrolerAVR
seri ATMega16
(komputer dalam satu chip) yang memiliki kemampuan
untuk diprogram dan digunakan untuk tugas-tugas yang
berorientasi kontrol. Mikrokontroler datang dengan dua
alasan utama, yang pertama adalah kebutuhan pasar
(market need) dan yang kedua adalah perkembangan
teknologi baru. Yang dimaksud dengan kebutuhan pasar
adalah kebutuhan yang luas dari produk-produk
elektronik akan perangkat pintar sebagai pengontrol dan
pemroses data. Sedangkan yang dimaksud dengan
perkembangan teknologi baru adalah perkembangan
teknologi semikonduktor yang memungkinkan
pembuatan chip dengan kemampuan komputasi yang sangat cepat, bentuk yang semakin
mungil, dan harga yang semakin murah.
Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang
rendah, dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia.
Mikrokontroler digunakan mulai dari mainan anak-anak, perangkat elektronik rumah
tangga, perangkat pendukung otomotif, peralatan industri, peralatan telekomunikasi,
peralatan medis dan kedokteran, sampai dengan pengendali robot serta persenjataan
militer.
Terdapat beberapa keunggulan yang diharapkan dari alat-alat yang berbasis mikrokontroler
(microcontroller-based solutions) :
a. Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen
lain (high degree of integration)
b. Ukuran yang semakin dapat diperkecil (reduced in size)
c. Penggunaan komponen dipersedikit (reduced component count) yang juga akan
menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost)
d. Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat
pula dijual ke pasar sesuai kebutuhan (shorter time to market)
e. Konsumsi daya yang rendah (lower power consumption)
2. Modul Dasar Mikrokontroler | Beny Abdurrahman | 2
2. Perbedaan mikrokontroler dan mikroprosesor
Menyangkut pembahasan pada materi ini, ada dua istilah yang mungkin sedikit
membingungkan yaitu antara mikrokontroler dan mikroprosesor, apakah keduanya sama
atau berbeda?
Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosesor.
Perbedaan yang utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur
perangkat keras (hardware architecture) dan aplikasi masing-masing, berikut
penjelasannya :
o Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip
CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device
lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chip
computer. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM,
serial interface dan paralel interface, timer, interrupt controller, konverter
Analog ke Digital, dan lainnya (tergantung fitur yang melengkapi mikrokontroler
tersebut).
Jika dilihat dari perbedaan secara diagramnya bisa dilihat seperti berikut :
VS
Gambar 2. Blok diagrammikroprosesor (kiri) dan blok diagrammikrokontroler (kanan)
o Sedangkan dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central
Processing Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam
bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas–tugas
yang berorientasi kontrol pada rangkaian yang membutuhkan jumlah komponen
minimum dan biaya rendah (low cost).
3. Perkembangan mikrokontroler
Karena kebutuhan yang tinggi terhadap “chip-chip pintar” dengan berbagai
fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk
mikrokontrolernya. Hal tersebut terjadi semenjak tahun 1970-an. Motorola mengeluarkan
seri mikrokontroler 6800 yang terus dikembangkan hingga sekarang menjadi 68HC05,
68HC08, 68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor
Z80-nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian
diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan mikrokontrolernya yang
populer di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051 tersebut
kemudian diadopsi oleh vendor lain seperti Phillips, Siemens, Atmel, dan vendor-vendor
3. Modul Dasar Mikrokontroler | Beny Abdurrahman | 3
lain dalam produk mikrokontroler mereka. Selain itu masih ada mikrokontroler populer
lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan
masih banyak lagi.
Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip
pintar lain seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di
masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua
desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang
tinggi serta meminimumkan jumlah komponen-komponen konvensional.
Atmel sendiri mengeluarkan beberapa seri / tipe mikrokontroller. Secara umum AVR
membagi jenis/tipe mikrokontroler menjadi empat yaitu keluarga AT90Sxx, keluarga
ATMega, keluarga Attiny dan AT86RFxx. Pada dasarnya yang membedakan masing-
masing kelas adalah memori, peripheral dan fungsinya. Adapun beberapa seri
mikrokontroler yang sering digunakan dapat dilihat pada tabel berikut :
Tabel 1. Jenis dan Seri Mikrokontroller AVR
4. Arsitektur mikrokontroler AVR
AVR dibuat oleh perusahaan bernama Atmel pada tahun 1996. Nama AVR sendiri
merupakan singkatan dari Alf and Vegard's RISC processor yang berasal dari nama dua
mahasiswa Norwegian Institute of Technology (NIH), atau Afl-Egil bogen dan Vegard
Wollan. Mikrokontroler AVR mengimplementasikan komputasi berbasis RISC (Reduced
Instruction Set Computing) 8 Bit dan menggunakan konsep arsitektur Harvard yang
memisahkan memori dan bus untuk data dan program, serta sudah menerapkan single level
pipelining.
Keunggulan AVR dibanding mikrokontroller lain adalah memiliki kecepatan eksekusi
program yang lebih cepat, karena sebagian besar instruksi dieksekusi dalam 1 siklus clock.
Lebih cepat dibandingkan dengan mikrokontroller MCS51 yang memiliki sistem
komputasi CISC (Complex Instruction Set Compute) dimana proses eksekusi 1 instruksi
membutuhkan 12 siklus clock.
4. Modul Dasar Mikrokontroler | Beny Abdurrahman | 4
5. Fitur ATMega16
ATmega 16 termasuk mikrokontroler yang sering dipakai saat ini. Kelebihan chip ini
adalah memiliki port I/O yang banyak, Memori cukup besar dan harga yang relatif murah.
Adapun Fitur-fitur yang dimiliki oleh ATmega16 secara lengkap adalah sebagai berikut :
a) Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggi dan daya rendah (High
performance low power)
b) Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16 MHz
c) Kapasitas Flash memori 16 KB, EEPROM 512 Byte, dan SRAM 1 KB
d) Port I/O sebanyak 32 Buah, yaitu PORT A, PORT B, PORT C dan PORT D
e) CPU terdiri dari 32 register
f) Terdapat unit interupsi internal dan eksternal
g) Tersedia PORT USART untuk komunikasi serial
h) Fitur Peripheral :
o Tiga buah timer/counter dengan kemampuan pembandingan
2 buah timer/counter 8 bit dengan prescaler terpisah dan Mode Compare
1 buah timer/counter 16 bit dengan prescaler terpisah dan Mode Compare
o Real time counter dengan Oscilator sendiri
o 4 channel PWM
o 8 channel, 10 bit ADC
Single ended channel
Differential channel
Differential channel dengan programmable gain 1x, 10x atau 200x
o Byte-oriented Two Wire Serial Interface
o Antarmuka SPI
o Watchdog timer dengan oscilator internal
o On chip analog comparator
5. Modul Dasar Mikrokontroler | Beny Abdurrahman | 5
6. Konfigurasi Pin ATmega16
Gambar 3. Bentuk fisik dan konfigurasi kaki Atmega16
Konfigurasi pin ATmega16 dengan kemasan 40 pin DIP (Dual Inline Package)
dapat dilihat seperti gambar di atas. Adapun fungsi tiap-tiap pin dapat dilihat sebagai
berikut :
1. VCC : pin untuk masukan catu daya / power (5 Volt).
2. GND : pin ground.
3. PORT A (PA0 – PA7) :pin input / output dua arah dan pin masukan ADC.
4. PORT B (PB0 – PB7) : pin input / output dua arah. Juga memiliki fungsi
khusus yaitu :
Tabel 2. Fungsi khusus PORT B
Pin Fungsi Khusus
PB7 SCK (SPI Serial Clock)
PB6 MISO (SPI Bus Master Input / Slave Output)
PB5 MOSI (SPI Bus Master Output / Slane Input)
PB4 SS (SPI Slave Select Input)
PB3
AIN1 (Analog Comparator Negative Input)
OC0 (Timer / Counter0 Output Compare Match Output)
PB2
AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 Input)
PB1 T1 (Timer / Counter 1 External Counter Input)
PB0
T0 (Timer / Counter 0 External Counter Input)
XCK (USART External Clock Input / Output)
6. Modul Dasar Mikrokontroler | Beny Abdurrahman | 6
5. PORT C (PC0 – PC7) : pin input / output dua arah. Juga memiliki fungsi
khusus yaitu :
Tabel 3. Fungsi khusus PORT C
Pin Fungsi Khusus
PC7 TOSC2 (Timer Oscilator Pin2)
PC6 TOSC1 (Timer Oscilator Pin1)
PC5 TDI (JTAG Test Data In)
PC4 TDO (JTAG Test Data Out)
PC3 TMS (JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDA (Two-wire Serial Bus Data Input / Output Line)
PC0 SCL (Two-wire Serial Bus Clock Line)
6. PORT D (PD0 – PD7) : pin input / output dua arah. Juga memiliki fungsi
khusus yaitu :
Tabel 4. Fungsi khusus PORT D
Pin Fungsi Khusus
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICP (Timer/Counter1 Input Capture Pin)
PD5 OC1A (Timer/Counter1 Output Compare A Match Output)
PD4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD3 INT1 (External Interupt 1 Input)
PD2 INT0 (External Interupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
7. Reset merupakan pin yang digunakan untuk me-reset mikrokontroler ke
kondisi semula.
8. XTAL 1 dan XTAL 2 sebagai pin masukan clock eksternal. Suatu
mikrokontroler membutuhkan sumber detak (clock) agar dapat mengeksekusi
intruksi yang ada di memori. Semakin tinggi nilai kristalnya, maka semakin
7. Modul Dasar Mikrokontroler | Beny Abdurrahman | 7
cepat pula mikrokontroler tersebut dalam mengeksekusi program.
9. AVCC sebagai pin masukan tegangan untuk ADC.
10. AREF sebagai pin masukan tegangan referensi.
7. Blok diagram
Gambar 4. Diagram blok ATMega 16
8. Modul Dasar Mikrokontroler | Beny Abdurrahman | 8
8. Arsitektur Mikrokontroler RISC
Seperti yang sudah dijelaskan sebelumnya, bahwa mikrokontroler AVR
Atmega16 menggunakan arsitektur Harvard. Arsitektur ini memisahkan antara
memori dan bus untuk program dan data guna memaksimalkan kemampuan dan
kecepatan. Arsitektur AVR bisa dilihat pada gambar berikut :
Gambar 5. Arsitektur AVR RISC
Instruksi dalam memori program dieksekusi dengan single level pipelining.
Ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program.
Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPU terdiri dari
32 x 8 bit general purpose register yang dapat diakses dengan cepat dalam satu clock
cycle. Yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat dilakukan
dalam satu cycle. Pada operasi ALU, dua operang berasal dari register, kemudian
operasi dieksekusi dan hasilnya disimpan keblai pada register dalam satu clock cycle.
Operasi aritmetik dan logik pada ALU akan mengubah bit-bit yang terdapat pada
Status Register / SREG. Proses pengambilan instruksi dan pengeksekusian instruksi
9. Modul Dasar Mikrokontroler | Beny Abdurrahman | 9
berjalan secara paralel, seperti dilihat pada gambar 6 dibawah :
Gambar 6. Proses pengambilan instruksi dan pengeksekusian instruksi secara paralel
9. General Purpose RegisterAVR
Gambar 7. General Purposes Register AVR
Gambar di atas menunjukan struktur 32 general purpose register yang terdapat
dalam CPU. Masing-masing register ditentukan juga dalam alamat memori data,
dipetakan ke dalam 32 lokasi pertama data user. Walaupun tidak secara fisik
diimplementasikan sebagai lokasi SRAM, namun pengaturan ini memberikan
fleksibilitas dalam mengakses register, seperti register pointer X, Y, dan Z dapat di
set menuju index dari register file manapun.
10. Modul Dasar Mikrokontroler | Beny Abdurrahman | 10
10. Stack Pointer
Stack utamanya digunakan dalam menyimpan data sementara, untuk menyimpan
variabel lokal dan untuk menyimpan return address setelah interrupt dan
pemanggilan subrutin. Stack Pointer selalu menunjuk ke puncak stack. Stack
diimplementasikan mulai dari lokasi memori tertinggi ke lokasi memori terendah,
sehingga perintah PUSH akan mengurangi stack pointer.
Gambar 8. Stack Pointer
11. Peta MemoriATMega16
a. Memori Program
Arsitektur AVR mempunyai dua memori utama yaitu memori data dan memori
program. Selain itu ATMega16 memiliki memori EEPROM untuk menyimpan
data. ATMega16 memiliki 16Kbyte On-Chip In-System Reprogrammable Flash
Memory untuk menyimpan program. Karena semua instruksi AVR memiliki
format 16 atau 32 bit, Flash diatur dalam 8K x 16 bit. Untuk keamanan program,
memori program, flash dibagi ke dalam dua bagian, yaitu program Boot dan
aplikasi. Bootloader adalah program kecil yang bekerja pada saat start-up time
yang dapat memasukan seluruh program aplikasi dalam memori prosesor.
Gambar 9. Peta memori ATMega16
11. Modul Dasar Mikrokontroler | Beny Abdurrahman | 11
b. Memori Data (SRAM)
Memori data AVR Atmega16 terbagi dalam 3 bagian, yaitu 32 buah register
umum, 64 buah register I/O dan 1Kbyte SRAM internal. General Purpose
Register menempati alamat data terbawah, yaitu $00 sampai $1F. Sedangkan
memori I/O menempati 64 alamat berikutnya mulai dari $20 hingga $5F. Memori
I/O merupakan register yang khusus digunakan untuk mengatur fungsi terhadap
berbagai peripheral mikrokontroler seperti control register, timer/counter, fungsi-
fungsi I/O dan sebagainya. 1024 alamat memori berikutnya mulai dari alamat $60
hingga $45F digunakan untuk SRAM internal.
Gambar 10. Peta memori data AVR Atmega 16
c. Memori Data EEPROM
ATMega16 memiliki 512 byte memori data EEPROM 8 bit. Data dapat ditulis /
dibaca dari memori ini, ketika catu daya dimatikan data terakhir yang ditulis
dalam EEPROM masih tersimpan dan bisa dibaca kembali. Dalam arti lain,
memori ini bersifat non volatile. Alamat EEPROM ini mulai dari $000 - $1FF.
12. Modul Dasar Mikrokontroler | Beny Abdurrahman | 12
12. Status Register (SREG)
Status register adalah register berisi status yang dihasilkan pada setiap operasi yang
dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU
mikrokontroler.
Gambar 11. Status register Atmega16
Bit 7 : I (Global Interrupt Enable)
Bit untuk mengaktifkan interupsi, jika terjadi interupsi yang dipicu oleh
hardware bit I akan di clear, dan akan di set kembali menggunakan instruksi
RETI.
Bit 6 : T (Bit Copy Storage)
Bit 5 : H (Half Carry Flag)
Bit 4 : S (Sign Bit)
Bit S merupakan hasil operasi EOR antara flag-N (negative) dan flag-V
(komplemen dua overflow)
Bit 3 : V (Two’s Complement Overflow Flag)
Bit berguna untuk mendukung operasi aritmetika.
Bit 2 : N (Negative flag)
Apabila suatu operasi menghasilkan bilangan negative, maka flag-N akan
diset.
Bit 1 : Z (Zerro Flag)
Bit akan di set bila hasil operasi yang diperoleh adalah nol.
Bit 0 : C (Carry Flag)
Bit akan di set bila hasil operasi menghasilkan carry.