• Tidak ada hasil yang ditemukan

Bab 2. Tinjauan Pustaka

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 (MCS51), Motorola 68HC11, 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 ).

• 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.

14

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 I/O 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

- 2 ( dua ) buah Timer/Counter 8 bit dengan Prescaler terpisah dan Mode Compare.

- 1 ( satu ) buah Timer/Counter 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)

16

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 I/O 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 I/O atau jika menggunakan Asyncronous Timer/Counter2 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 ( Timer/Counter1 Output Compare B Match Output )

PB1 OC1 A ( Timer/Counter1 Output Compare A Match Output )

PB0 ICP ( Timer/Counter1 Input Capture Pin ) 4. Port C (PC6…PC0)

masing- masing pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai keluaran/output 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 I/O. 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 I/O 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 I/O. 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 ( Timer/Counter1 External Counter Input ) PD4 XCK ( USART External Clock Input/Output )

T0 ( Timer/Counter0 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

18

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

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

20

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 T2 T3 T4

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

2.3.7. General Purpose Register AVR R0 R2 R1 R26 R27 R28 R29 R30 R31 R17 R16 R15 R14 R13 ... ... 7 0 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 13 12 11 10 9 8 7 6 5 4 3 2 1 0

22

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 programmer/downloader, 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

“chace memory”. I/O register dan Aditional I/O register adalah register yang difungsikan khusus untuk mengendalikan berbagai pheripheral dalam mikrokontroler seperti pin port, timer/counter, usart dan lain-lain. Register ini dalam keluarga mikrokontrol MCS51 dikenal sebagi SFR(Special 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.

24

• Bit 7(I)

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 6(T)

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 5(H)

Merupakan bit Half Carry Flag. Bit ini menandakan sebuah Half Carry dalam beberapa operasi aritmatika. Bit ini berfungsi dalam aritmatika BCD.

• Bit 4(S)

Merupakan Sign bit. Bit ini selalu merupakan sebuah ekslusif di antara Negative Flag (N) dan two’s Complement Overflow Flag (V).

• Bit 3(V)

Merupakan bit Two’s Complement Overflow Flag. Bit ini menyediakan fungsi aritmatika dua komplemen.

• Bit 2(N)

Merupakan bit Negative Flag. Bit ini mengindikasikan sebuah hasil negative di dalam sebuah fungsi logika atai aritmatika.

• Bit 1(Z)

Merupakan bit Zero Flag. Bit ini mengindikasikan sebuah jasil nol “0” dalan sebuah fungsi aritmatika atau logika.

• Bit 0(C)

Merupakan bit Carry Flag. Bit ini mengindikasikan sebuah Carry atau sisa dalam sebuah aritmatika atau logika.

2.3.11.Timer/Counter 0

Timer/counter 0 adalah sebuah timer/counter yang dapat mencacah sumber pulsa/clock baik dari dalam chip (timer) ataupun dari luar chip (counter) dengan kapasitas 8-bit atau 256 cacahan. Timer/counter dapat digunakan untuk :

1. Timer/counter 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

26

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.

Dokumen terkait