MIKROKONTROLER Alat Ukur Intensitas Cahaya dengan Menggunakan Sensor LDR Berbasis Mikrokontroler AT Mega 8

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