2.3. MIKROKONTROLER
Mikrontroler merupakan sistem computer yang seluruh atau sebagian besar elemenya dikemas dalam satu chip IC, sehingga sering juga disebut dengan single
chip microcomputer. Mikrokontroler biasa dikelompokkan dalam satu keluarga, masing-masing mikrokontroler mempunyai spesifikasi tersendiri namun masik
kompatibel dengan pemrogramannya. Pada saat ini penggunaan mikrokontroler dapat kita temui pada berbagai
peralatan, misalnya peralatan yang terdapat dirumah, seperti telepon digital, micromave oven, televisi, mesin cuci, sistem keamanan rumah, PDA,dll.
Mikrokontroler dapat kita gunakan untuk berbagai aplikasi mislnya untuk pengendalian, otomasi industry, akuisisi data, telekomunikasi dan lain-lain.
Keuntungan menggunakan mikrokontroler yaitu harganya murah, dapat deprogram berulang kali, dan dapat kita program sesuai dengan keinginan kita. Saat ini keluarga
mikrokontroler yang ada dipasaran yaitu Intel 8084 dan 8051 MCS
51
, Motorola 68HC
11
, Microchip PIC, Hitachi H8, dan Atmel AVR.
2.3.1. Sejarah Mikrokontroler
Mikrokontroler dikembangkan dari mikroprosesor. Berikut ini sejarah perkembangan teknologi mikroprosesor dan mikrokontroler.
• Tahun 1617, John Napier menemukan sistem untuk melakukan perkalian dan pembagian berdasarkan logaritma.
• Tahun 1694, Gottfriend Wilhelm Leibniz membuat mesin mekanik yang dapat melakukan operasi +, - , , , dan akar kuadrat.
• Tahun 1835, Charles Babbage mengusulkan computer digital pertama didunia menggunakan punched card untuk data dan instruksi, serta
program control dengan unit aritmatika dan unit penyimpanan. • Tahun 1850, George Boole mengembangkan symbolic logic termasuk
operasi binary AND, OR, dll .
Universitas Sumatera Utara
• Tahun 1946, Von Neumann menyarankan bahwa instruksi menjadi kode numerik yang disimpan pada memori. Komputer dan semua desain
mikrokontroler didasarkan pada komputer Von Neumann. • Tahun 1948, Transistor ditemukan. Dengan dikembangkannya konsep
software, pada tahun 1948 mulai adanya perkembangan hardware penting seperti transistor.
• Tahun 1959, IC Intergrated Circuit pertama dibuat. • Tahun 1971, Intel 4004 dibuat, yang merupakan Mikroprosesor pertama.
Terdiri dari 2250 transistor. Kemudian Intel membuat Intel 8008, mikroposesor 8 bit. Semakin besar ukuran bit berarti mikroprosesor dapat
memproses lebih banyak data. • Tahun 1972, TMS 1000, buatan Texas Instrumen, Mikrokontroler pertama
yang dibuat. • Tahun 1974, beberapa pabrikan IC menawarkan mikroposesor dan
pengendalian menggunakan mikroprosesor yang ditawarkan pada saat itu yaitu 8080,8085, Motorola 6800, signetics 6502, Zilog z80,dan Texas
Instruments 9900 16 bit . • Tahun 1978, mikroprosesor 16 bit menjadi lebih umum digunakan yaitu
Intel 8086, Motorola 68000 dan Zilog Z8000. Sejak saat itu pabrikmikroprosesor terus mengembangkan mikroprosesor dengan
berbagai keistimewaan dan arsitektur. Mikroprosesor yang dikembangkan termasuk mikroprosesor 32 bit seperti Intel Pentium, Motorola Dragon
Ball, dan beberapa mikrokontroler yang menggunakan ARM core.
2.3.2. Mikrokontroler ATMEGA 8
ATmega8 adalah low power mikrokontroler 8 bit dengan arsitektur RISC. Mikrokontroler ini dapat mengeksekusi perintah dalam satu periode clock untuk
seyiap instruksi. Berikut ini adalah contoh gambar ATmega8 yang terdapat pada gambar 2.9 di bawah ini.
Universitas Sumatera Utara
Gambar 2.9. ATMEGA 8 Mikrokontroler ini diproduksi oleh atmel dari seri AVR. Untuk seri AVR ini
banyak jenisnya, yaitu ATmega8, ATmega8535, Mega8515, Mega16, dan lain- lain. Mikrokontroler ATmega8 ini sangat murah dan mempunyai fasilitas yang
sangat memadai untuk mengembangkan berbagai aplikasi. Keuntungan lainya dalam menggunakan ATMEGA8 ini, jika ada perubahan
cara kerja sistem maka kita tidak perlu merubah rangkaianya, tetapi hanya dengan merubah Program - program yang lama dengan memasukan program - program atau
instruksi yang baru.
2.3.3. Fitur ATMEGA 8
Beberapa fitur dari ATmega8 adalah sebagai berikut : 1. Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggi, dengan daya
rendah. 2. Arsitektur RISC dengan throughput mencapai 8 MIPS pada frekuensi 8 Mhz.
3. Memiliki kapasitas Flash Program 8 Kbyte, EEPROM 512 Byte dan SRAM 1 KByte.
4. Saluran IO sebanyak 22 buah yaitu Port B, Port C, dan Port D. 5. CPU yang terdiri atas 22 buah register.
6. Unit interupsi internal dan eksternal. 7. Port USART untuk komunikasi serial.
8. Fitur Peripheral • Tiga buah TimerCounter dengan kemampuan perbandingan.
Universitas Sumatera Utara
- 2 dua buah TimerCounter 8 bit dengan Prescaler terpisah dan Mode Compare.
- 1 satu buah TimerCounter 16 bit dengan Prescaler terpisah, Mode Compare, dan Mode Capture.
•
Real Time Counter dengan Osillator tersendiri
. •
4 channel PWM.
•
8 Channel, 10 bit ADC.
•
Byte-oriented Two-wire Serial Interface.
•
Programmable Serial USART.
•
Antarmuka SPI.
•
Watchdog Timer dengan oscillator internal.
•
On-chip Analog Comparator.
2.3.4. Konfigurasi Pin AVR ATMEGA 8
Konfigurasi kaki pin Atmega 8 dapat dilihat pada gambar 2.10 dibawah ini :
Gambar 2.10 Konfigurasi kaki pin atmega 8 ATmega8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi
yang berbeda-beda baik sebagai port maupun fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-masing kaki ATmega8.
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya. 2. GND merupakan pin Ground.
3. Port B
PB7...PB0
Didalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2. Jumlah Port B
Universitas Sumatera Utara
adalah 8 buah pin, mulai dari pin B.0 sampai dengan B.7. Tiap pin dapat digunakan sebagai input maupun output. Port B merupakan
sebuah 8-bit bi-directional IO dengan internal pull-up resistor. Sebagai input, pin-pin yang terdapat pada port B yang secara eksternal diturunkan,
maka akan mengeluarkan arus jika pull-up resistor diaktifkan. Khusus PB6 dapat digunakan sebagai input Kristal inverting oscillator amplifier
dan input ke rangkaian clock internal, bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock. Sedangkan
untuk PB7 dapat digunakan sebagai output Kristal output oscillator amplifier bergantung pada pengaturan Fuse bit yang digunakan untuk
memilih sumber clock. Jika sumber clock yang dipilih dari oscillator internal, PB7 dan PB6 dapat digunakan sebagai IO atau jika menggunakan
Asyncronous TimerCounter2 maka PB6 dan PB7 TOSC2 dan TOSC1 digunakan untuk saluran input timer. Fungsi- fungsi Port B dapat dilihat
lebih mudah seperti pada table di bawah ini : Tabel 2.1 Fungsi khusus Port B
Pin Fungsi Khusus
PB7 Merupakan pin masukan clock eksternal
TOSC1 Timer Oscillator Pin 1 PB6
Merupakan pin masukan clock eksternal TOSC2 Timer Oscillator Pin 2
PB5 SCK SPI Bus Serial Clock
PB4 MISO SPI Bus Master Input Slave Output
PB3 MOSI SPI Bus Master Output Slave Input
OC2 Timer Counter2 Output Compare Match Output
PB2 .
�� ��� SPI Slave Select Input
OC1 B TimerCounter1 Output Compare B Match Output
PB1 OC1 A TimerCounter1 Output Compare A
Match Output PB0
ICP TimerCounter1 Input Capture Pin 4. Port C
PC6…PC0
Port C merupakan sebuah 7-bit bi-directional IO port yang di dalam
Universitas Sumatera Utara
masing- masing pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai keluaranoutput port
C memiliki karakteristik yang sama dalam hal menyerap arus sink ataupun mengeluarkan arus source. Jika RSTDISBL Fuse diprogram,
maka PC6 akan berfungsi sebagai pin IO. Pin ini memiliki karakteristik yang berbeda dengan pin-pin yang terdapat pada port C lainnya. Namun
jika RSTDISBL Fuse tidak diprogram, maka pin ini akan berfungsi sebagai input reset. Dan jika level tegangan yang masuk ke pin ini
rendah dan pulsa yang ada lebih pendek dari pulsa minimum, maka akan menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja.
5. Port D PD7..PD0 Port D merupakan 8-bit bi-directional IO dengan internal pull-up
resistor. Fungsi dari port ini sama dengan port-port yang lain. Hanya saja pada port ini tidak terdapat kegunaan-kegunaan yang lain. Pada port ini
hanya berfungsi sebagai masukan dan keluaran saja atau biasa disebut dengan IO. Fungsi- fungsi Port D dapat dilihat lebih mudah seperti pada
table di bawah ini : Tabel 2.2 Fungsi khusus Port B
Pin Fungsi Khusus
PD7 AIN1 Analog Comparator Negative Input
PD6 AIN0 Analog Comparator Positive Input
PD5 T1 TimerCounter1 External Counter Input
PD4 XCK USART External Clock InputOutput
T0 TimerCounter0 External Counter Input PD3
INT 1 External Interrupt 1 Input PD2
INT 0 External Interrupt 0 Input PD1
TXD USART Output Pin PD0
RXD USART Input Pin 6. AVcc
Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus dihubungkan secara terpisah dengan VCC karena pin ini digunakan
untuk analog saja. Bahkan jika ADC pada AVR tidak digunakan
Universitas Sumatera Utara
tetap saja disarankan untuk menghubungkannya secara terpisah dengan VCC. Jika ADC digunakan, maka AVcc harus dihubungkan ke VCC melalui
low pass filter. 7. AREF
Merupakan pin masukan tegangan referensi ADC.
2.3.5. Blok Diagram ATMEGA 8
Gambar 2.11 Blok Diagram Atmega 8
Universitas Sumatera Utara
2.3.6. Arsitektur Mikrokontroler AVR RISC
Gambar 2.12 Arsitektur Mikrokontroler AVR RISC
Memori Program
CPU Memori Data
Address Bus
Data Bus Address Bus
Data Bus
Gambar 2.13 Arsitektur Harvard
Universitas Sumatera Utara
Dari gambar diatas AVR, menggunakan arsitektur Harvard dengan memisahkan antara memori dan bus untuk program dan data untuk memaksimalkan
kemampuan dan kecepatan. Instruksi dalam memori program dieksekusi dengan pipelining single level . Dimana 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 operand
berasal dari register, kemudian operasi dieksekusi dan hasilnya disimpan kembali pada reegister dalam satu clock cycle. Operasi aritmatika dan logic pada ALU akan
mengubah bit-bit yang terdapat pada Status Register SREG. Proses pengambilan instruksi dan pengeksekusian instruksi berjalan secara parallel, dapat dilihat pada
gambar dibawah ini :
T1 T4
T3 T2
Clk CPU
1
st
Instruction Fetch 1
st
Instruction Execute 2
nd
Instruction Fetch 2
nd
Instruction Execute 3
rd
Instruction Fetch 3
rd
Instruction Execute 4
th
Instruction Fetch
Gambar 2.14 Proses pengambilan instruksi dan pengeksekusian instruksi secara parallel
Instruksi 1 : Fetching 1
Executing 1 Instruksi 2 :
Fetching 2 Executing 2
Gambar 2.15 Prinsip kerja Pipelining
Universitas Sumatera Utara
2.3.7. General Purpose Register AVR
R0 R2
R1
R26 R27
R28 R29
R30 R31
R17 R16
R15 R14
R13 ...
... 7
Addr 00
01 02
0D 0E
0F 10
11 1A
1B 1C
1D 1E
1F X-register Low Byte
X-register High Byte General
Purpose Working
Register
Y-register Low Byte Y-register High Byte
Z-register Low Byte Z-register High Byte
Gambar 2.16 General Purpose Register AVR
Gambar diatas menunjukkan struktur 32 general purpose register yang terdapat di dalam CPU, masing- masing register ditentukan juga dalam alamat
memori data, dipetakan kedalam 32 lokasi pertama data user. Walaupun tidak secara fisik diimplementasikan sebagai lokasi SRAM, namun pengaturan ini memberikan
flexsibilitas dalam mengakses register, seperti register pointer X,Y, dan Z dapat diset menuju index dari register file manapun.
2.3.8. Stack Pointer
Stack digunakan untuk menyimpan data sementara, untuk menyimpan variable local dan untuk menyimpan return address setelah interrupt dan
pemanggilan subrutin. Stack pointer selalu menunjuk ke puncak stack. Stack diimplementasi mulai dari lokasi memori tertinggi ke lokasi memori terendah,
sehingga perintah PUSH akan mengurangi Stack Pointer.
SP 15 15
Bit SPL
SPH SP 0
SP 8 SP 1
SP 9 SP 2
SP 10 SP 3
SP 11 SP 4
SP 12 SP 5
SP 13 SP 6
SP 14 SP 7
14 8
9 10
11 12
13
7 6
1 2
3 4
5
Gambar 2.17 Stack Pointer
Universitas Sumatera Utara
2.3.9. Peta Memori AVR ATmega 8
Gambar 2.18 Peta Memori At mega 8
Memori atmega terbagi menjadi tiga yaitu : 1. Memori Flash
Memori flash adalah memori ROM tempat kode-kode program berada. Kata flash menunjukan jenis ROM yng dapat ditulis dan dihapus secara
elektrik. Memori flash terbagi menjadi dua bagian yaitu bagian aplikasi dan bagian boot. Bagian aplikasi adalah bagian kode-kode program
apikasi berada. Bagian boot adalah bagian yang digunakan khusus untuk booting awal yang dapat diprogram untuk menulis bagian aplikasi
tanpa melalui programmerdownloader, misalnya melalui USART. 2. Memori Data
Memori data adalah memori RAM yang digunakan untuk keperluan program. Memori data terbagi menjadi empat bagian yaitu :
32 GPR General Purphose Register adalah register khusus yang bertugas untuk membantu eksekusi program oleh ALU Arithmatich Logic
Unit, dalam instruksi assembler setiap instruksi harus melibatkan GPR. Dalam bahasa C biasanya digunakan untuk variabel global
atau nilai balik fungsi dan nilai- nilai yang dapat memperingan kerja ALU. Dalam istilah processor komputer sahari-hari GPR dikenal sebagai
Universitas Sumatera Utara
“chace memory”. IO register dan Aditional IO register adalah register yang difungsikan khusus untuk mengendalikan berbagai pheripheral
dalam mikrokontroler seperti pin port, timercounter, usart dan lain- lain. Register ini dalam keluarga mikrokontrol MCS51 dikenal sebagi
SFRSpecial Function Register. 3. EEPROM
EEPROM adalah memori data yang dapat mengendap ketika chip mati off, digunakan untuk keperluan penyimpanan data yang tahan
terhadap gangguan catu daya.
2.3.10. Status Register SREG
Pada AVR status register mengandung beberapa informasi mengenai hasil dari kebanyakan hasil eksekusi instruksi aritmatik. Informasi ini digunakan
untuk altering arus program sebagai kegunaan untuk meningkatkan performa pengoperasian. Register ini di-update setelah operasi ALU Arithmetic Logic
Unit hal tersebut seperti yang tertulis dalam datasheet khususnya pada bagian Instruction Set Reference. Dalam hal ini untuk beberapa kasus dapat membuang
penggunaan kebutuhan instrukasi perbandingan yang telah didedikasikan serta dapat menghasilkan peningkatan dalam hal kecepatan dan kode yang lebih
sederhana dan singkat. Register ini tidak secara otomatis tersimpan ketika memasuki sebuah rutin interupsi dan juga ketika menjalankan sebuah perintah
setelah kembali dari interupsi. Namun hal tersebut harus dilakukan melalui
software. Berikut adalah gambar status register.
Gambar 2.19 Status Register Atmega 8
Universitas Sumatera Utara
• Bit 7I Merupakan bit Global Interrupt Enable. Bit ini harus di-set agar semua
perintah interupsi dapat dijalankan. Untuk perintah interupsi individual akan di jelaskan pada bagian yang lain. Jika bit ini di-reset, maka semua
perintah interupsi baik yang individual maupun yang secara umum akan di abaikan. Bit ini akan dibersihkan atau cleared oleh hardware setelah
sebuah interupsi di jalankan dan akan di-set kembali oleh perintah RETI. Bit ini juga dapat di- set dan di-reset melalui aplikasi dan intruksi SEI dan
CLL. • Bit 6T
Merupakan bit Copy Storage. Instruksi bit Copy Instructions BLD Bit Load and BST Bit Store menggunakan bit ini sebagai asal atau tujuan untuk
bit yang telah dioperasikan. Sebuah bit dari sebuah register dalam Register File dapat disalin ke dalam bit ini dengan menggunakan instruksi BST,
dan sebuah bit di dalam bit ini dapat disalin ke dalam bit di dalam register pada Register File dengan menggunakan perintah BLD.
• Bit 5H Merupakan bit Half Carry Flag. Bit ini menandakan sebuah Half
Carry dalam beberapa operasi aritmatika. Bit ini berfungsi dalam aritmatika BCD.
• Bit 4S Merupakan Sign bit. Bit ini selalu merupakan sebuah ekslusif di
antara Negative Flag N dan two’s Complement Overflow Flag V. • Bit 3V
Merupakan bit Two’s Complement Overflow Flag. Bit ini menyediakan fungsi aritmatika dua komplemen.
• Bit 2N Merupakan bit Negative Flag. Bit ini mengindikasikan sebuah hasil
negative di dalam sebuah fungsi logika atai aritmatika.
Universitas Sumatera Utara
• Bit 1Z Merupakan bit Zero Flag. Bit ini mengindikasikan sebuah jasil nol “0”
dalan sebuah fungsi aritmatika atau logika. • Bit 0C
Merupakan bit Carry Flag. Bit ini mengindikasikan sebuah Carry atau sisa dalam sebuah aritmatika atau logika.
2.3.11. TimerCounter 0
Timercounter 0 adalah sebuah timercounter yang dapat mencacah sumber pulsaclock baik dari dalam chip timer ataupun dari luar chip counter dengan
kapasitas 8-bit atau 256 cacahan. Timercounter dapat digunakan untuk : 1. Timercounter biasa
2. Clear Timer on Compare Match selain Atmega 8 3. Generator frekuensi selain Atmega 8
4. Counter pulsa eksternal
2.3.12. Komunikasi Serial Pada Atmega 8
Komunikasi serial merupakan komnikasi yang relative lambat dibandingkan dengan komunikasi paralel. Oleh karena itu, komunikasi serial sering melibatkan
interupsi untuk mengetahui apakah pengiriman mampu menerima data yang telah selesai atau yang belum selesai dikirim.
Metode yang paling aman untuk proses pengiriman dan penerimaan sata serial adalah dengan menyediakan buffer untuk kedua proses tersebut. Data yang akan
dikirim tidak secara langsung diberikan kepada SBUF,melainkan diberikan kepada buffer. Demikian juga dengan pengambilan data yang tidak langsung dari SBUF,
melainkan diambil dari buffer, perpindahan keduanya diserahkan kepada prosedur dalam intrupsi serial.
Pada mikrokontroler AVR Atmega 8 memiliki Port USART yang terdapat pada Pin 2 dan Pin 3 untuk melakukan komunikasi data antara mikrokontroler
dengan mikrokontroler ataupun mikrokontroler dengan komputer. USART dapat
Universitas Sumatera Utara
difungsikan sebagai transmisi data sinkron, dan asinkron. Sinkron berarti clock yang digunakan antara transmiter dan receiver satu sumber clock. Sedangkan asinkron
berarti transmiter dab receiver mempunyai sumber clock sendiri-sendiri. USART terdiri dalm tiga blok yaitu clock generator, transmiter, dan receiver.
Gambar 2.20 Blok USART
• Clock Generator
Clock generator berhubungan dengan kecepatan transfer data baud rate, register yang bertugas menentukan baud rate adalah register pasangan.
• USART transmiter
Usart transmiter berhubungan dengan data pada Pin TX. Perangkat yang sering digunakan seperti register UDR sebagi tempat penampungan data
yang akan ditransmisikan. Flag TXC sebagai akibat dari data yang ditransmisikan telah sukses complete, dan flag UDRE sebagai indikator
jika UDR kosong dan siap untuk diisi data yang akan ditransmisikan lagi.
• USART receiver
Usart receiver berhubungan dengan penerimaan data dari Pin RX. Perangkat yang sering digunakan seperti register UDR sebagai tempat
penampung data yang telah diterima, dan flag RXC sebagi indikator bahwa data telah sukses complete diterima.
Universitas Sumatera Utara
2.4. ANALOG TO DIGITAL CONVERTER ADC