Anda di halaman 1dari 46

Laboratorium Sistem Kendali dan Instrumentasi

Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik


Universitas Hasanuddin
http://elvislab.com/

BAB I
INPUT / OUTPUT DIGITAL PORTS

1.1.

Pengenalan ATMEL AVR RISC dan Arsitektur Mikrokontroler AVR RISC


Mikrokontroler adalah sebuah komputer kecil ("special purpose computers") di

dalam satu IC yang berisi CPU, memori, timer, saluran komunikasi serial dan paralel, Port
input/output, ADC. Mikrokontroler digunakan untuk suatu tugas dan menjalankan
suatu program.
Pada saat ini penggunaan mikrokontroler dapat kita temui pada berbagai
peralatan, misalnya peralatan yang terdapat di rumah, seperti telepon digital, microwave
oven, televisi, mesin cuci, sistem keamanan rumah, PDA, dll. Mikrokontroler dapat kita
gunakan untuk berbagai aplikasi misalnya untuk pengendalian, otomasi industri, akuisisi data,
telekomunikasi dan lain-lain. Keuntungan menggunakan mikrokontroler yaitu harganya murah,
dapat diprogram berulang kali, dan dapat kita program sesuai dengan keinginan kita. Saat ini
keluarga mikrokontroler yang ada dipasaran yaitu Intel 8048 dan 8051(MCS51),
Motorola 68HC11, Microchip PIC, Hitachi H8, dan Atmel AVR.

1.2.

Sejarah Mikrokontroler
Semenjak kelahiran mikroprosesor, banyak mikroprosesor/mikrokontroler 4, 8, 16,

dan 32 bit yang dikembangkan dan bermunculan di pasaran. Intel 4004 adalah 4-bit prosesor
pertama yang muncul pada tahun 1971. Intel 4004 memiliki kapasitas 8-bit instruksi dan 4-bit
proses data, memori eksternal terpisah untuk program (4K) dan data (1K). Ada 46 instruksi
yang tereksekusi dalam satu clock (740 kHz). Lalu selama tahun 1972 intel mengembangkan
mikroprosesor 4040 yang merupakan versi advance dari 4004. 4040 memiliki 14 instruksi
lebih banyak dengan 8K memori program dan juga sudah memiliki kemampuan interupsi.
Di tahun 1974 Texas Instrument mengenalkan mikrokontroler pertama TMS 1000.
TMS 100 memiliki on-chip RAM, ROM dan I/O. Lalu di tahun 1974 Intel memperkenalkan
mikroprosesor 8080 yang merupakan versi advance dari 8008 yang telah diluncurkan
sebelumnya di tahun 1972. Yang paling populer di tahun 1976 Intel mengembangkan 8085.
Seri ini dapat beorperasi pada +5V dan frekuensi 3 MHz. Di tahun yang sama Zilog Z-80
1

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

muncul dengan kemampuan lebih baik dari 8080. Z80 beoperasi pada frekuensi 2,5 MHz dan
frekuensi dalam CMOS (Complementary Metal Oxide Semiconductor) 10 MHz
Seketika setalah Intel muncul dengan mikroprosesor 8080 di tahun 1975, Motorola
memperkenalkan mikroprosesor 6800, lalu diikuti dengan 6502 dan 6809. Berikutnya tahun
1976 Intel mengembangkan mikroprosesor 8084 yang merupakan keluarga MCS-48. Seri ini
sudah memungkinkan storage data tersimpan on-chip, tetapi code program masih tersimpan
pada memori program eksternal. Tidak lama berselang dari itu MCS-48 tergantikan dengan
mikrokontroler keluarga MCS-51 di tahun 1980. Intel MCS-51 menggunakan 2-byte instruksi
yang lebih fleksibel, tersedia on-chip memori program (RAM/ROM/EPROM) dan memori
data yang sama besar, 128 byte. Dan dapat pula terkoneksikan dengan memori eksternal. Di
tahun 1982 Motorola memperkenalkan memperkenalkan mikrokontroler 6805.
Pada tahun 1975 peripheral interface controller (PIC) terbentuk di Universitas Havard.
Keluarga mikrokontroler PIC mulai dikenalkan pada tahun 1985 oleh Microchip. PIC
menggunakan arsitektur Havard dan telah memiliki Reduce Intruction Set. Di tahun 1978 Intel
mengmbangkan 8086 yang merupakan prosesor 16-bit. Seiring dengan ini Motorola
meluncurkan

mikroprosesor

16-bit

68000,

sedangkan

Zilog

meluncurkan

16-bit

mikroprosesor Z8000.
Pada juni 1997, mikrokontroler ATMEL 8-bit AVR dikenalkan ke pasar. dan hari ini
telah banyak kluarga dari mikrokontroler yang bermunculan dari berbagai macam sumber dan
berbagai macam versi.
1.3.

Mikroprosesor, Mikro-Komputer dan Mikrokontroler

Mikroprosesor adalah Central Processing Unit (CPU) di dalam single chip.


Komponen CPU:Arithmatic and Logic Unit (ALU), instruction decoder, register,
bus control circuit, d11.

Mikro-Komputer adalah mikroprosesor yang dihubungkan dengan rangkaian


pendukung, komponen I/O dan memori (program & data) ditempatkan bersama
untuk membentuk komputer kecil khususnya untuk akuisisi data dan aplikasi
kontrol.
2

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Jika komponen yang menyusun sebuah mikro-komputer diletakan bersama di dalam


single chip silicon maka disebut mikrokontroler. Di dalam mikrokontroler berisi CPU,
memori, timer, port serial dan paralel, port input / output, ADC.

Gambar 1.1 Mikrokontroler dan Perangkat Input/Output

1.4.

CISC dan RISC

CISC (Complex Instruction Set Computer)


Mikroprosesor CISC merupakan jenis mikroprosesor yang memiliki jumlah
instruksi yang kompleks dare lengkap. Contoh: Mikrokontroler CISC: Intel 80C51
(MCS51) dan Motorola 68HCii mengikuti arsitektur CISC.
RISC (Reduce Instruction Set Computer)
Mikroprosesor RISC merupakan jenis mikroprosesor yang merniliki jumlah
instruksi yang terbatas dan sedikit. Pada arsitektur RISC jumlah instruksi lebih
sedikit, tetapi memiliki lebih banyak register dibandingkan dengan CISC. Selain itu
pada arsitektur RISC kebanyakan instruksi dieksekusi hanya dalam satu clock cycle
dan mode addressing memory yang sederhana.
mikrokontroler RISC: ATMELAVR, Microchip PIC12/1.6CXX dan National
Semiconductor COP8.
Program assembly dengan prosesor RISC menjadi lebih kompleks dibandingkan
dengan program assembly prosesor CISC. Hal ini disebabkan hampir semua instruksi
3

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

prosesor RISC adalah instruksi dasar, instruksi-instruksi ini umumnya hanya memerlukan
siklus mesin untuk menjalankannya. Sebagai contoh misalnya karena tidak ada instruksi
untuk perkalian pada arsitektur RISC sehingga harus dibuat program perkalian dengan
menggunakan instruksi-instruksi dasar seperti instruksi penjumlahan, dan lain-lain. Namun
pada arsitektur RISC tidak diperlukan hardware yang kompleks, prosesor yang tidak rurnit
akan semakin cepat dan andal. Untuk merealisasikan instruksi dasar yang jumlahnya tidak
banyak ini, mikroprosesor RISC tidak memerlukan gerbang logika yang banyak. Karena
itu dimensi IC dan konsumsi daya prosesor RISC umumnya lebih kecil dibanding prosesor
CISC.
Akan tetapi, program assembly pada prosesor CISC menjadi lebih sederhana
karena sudah ada instruksi yang kompleks. Untuk membuat instruksi yang kompleks
seperti instruksi perkalian, pembagian, dan instruksi lain yang rumit pada prosesor
CISC, diperlukan hardware yang kompleks juga. Dibutuhkan ribuan gerbang logika (logic
gates) transistor untuk membuat prosesor CISC. Instruksi yang kompleks juga membutuhkan
jumlah siklus mesin (machine cycle) yang lebih panjang untuk dapat menyelesaikan
eksekusinya.

1.5.

Mikrokontroler ATMEL AVR RISC


Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler

AVR. AVR adalah mikrokontroler RISC (Reduce Instruction Set Compute) 8 bit
berdasarkan arsitektur Harvard, yang dibuat oleh Atmel pada tahun 1996. AVR mempunyai
kepanjangan Advanced Versatile RISC atau A1f and Vegard's Rise processor yang berasal
dari nama dua mahasiswa Norwegian Institute of Technology (NTH), yaitu Alf-Egil
Bogen dan Vegard Wollan.
AVR memiliki keunggulan dibandingkan dengan mikrokontroler lain, keunggulan
mikrokontroler AVR yaitu AVR memiliki kecepatan eksekusi program yang lebih cepat
karena sebagian besar instruksi dieksekusi dalam 1 siklus clock, lebih cepat dibandingkan
dengan mikrokontroler MCS51 yang memiliki arsitektur CISC (Complex Instruction Set
Computer) di mana mikrokontroler MCS51 membutuhkan 12 siklus clock untuk
mengeksekusi 1 instruksi. Selain itu, mikrokontroler AVR memiliki fitur yang lengkap
4

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

(ADC internal, EEPROM Internal, Timer/Counter, Watchdog Timer, PWM, Port I/O,
komunikasi serial, Komparator, 12C, dll.), sehingga dengan fasilitas yang lengkap ini,
programmer dan desainer dapat menggunakannya untuk berbagai aplikasi sistem
elektronika seperti robot, otomasi industri, peralatan telekomunikasi, dan berbagai
keperluan lain. Secara umum mikrokontroler AVR dapat dikelompokkan menjadi 3
kelompok, yaitu keluarga ATgoSxx, ATMega, dan ATtiny.
Tabel 1.1 Jenis Mikrokontroller AVR
Mikrokontroler AVR
Tipe
TinyAVR
AT90Sxx
ATMega

Jumlah pin
Flash
8-32
1 - 2K
20 - 44
1 - 8K
32 - 64
8 - 128K

Memori
EEPROM
64 - 128
128 - 512
512 - 4K

SRAM
0 - 128
0- 1 K
512 - 4K

Pemograman mikrokontroler AVR dapat menggunakan low level language


(assembly) dan high level language (C, Basic, Pascal, JAVA, dll) tergantung compiler
yang digunakan. Bahasa Assembler mikrokontroler AVR memiliki kesamaan instruksi,
sehingga jika pemrograman satu jenis mikrokontroler AVR sudah dikuasai, maka akan
dengan mudah menguasai pemograman keseluruhan mikrokontroler jenis AVR, namun
bahasa assembler relatif lebih sulit dipelajari daripada bahasa C, untuk pembuatan suatu
proyek yang besar akan memakan waktu yang lama, serta penulisan programnya akan panjang.
Sedangkan Bahasa C memiliki keunggulan dibanding bahasa assembler yaitu independent
terhadap hardware serta lebih mudah untuk menangani project yang besar. Bahasa C
memiliki keuntungan-keuntungan yang dipunyai oleh bahasa mesin (assembly), hampir
semua operasi yang dapat dilakukan oleh bahasa mesin, dapat dilakukan oleh bahasa C
dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C sendiri sebenarnya
terletak di antara bahasa pemrograman tingkat tinggi dan assembly.
Pada praktik pemrograman, mikrokontroler AVR yang digunakan yaitu ATMega16
dan software compiler-nya menggunakan CodeVision. Alur pemrograman mikrokontroler
AVR menggunakan CodeVisionAVR dapat dilihat pada gambar di bawah ini:

Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggi dengan daya yang rendah

Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16 MHz


5

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Memiliki kapasitas Flash Memori 16 Kbyte, EEPROM 512 Byte, dan SAM 1 Kbyte.

Saluran I/O sebanyak 32 buah yaitu Port A, Port B, Port C, Port D

CPU yang terdiri atas 32 buah register

Unit interupsi internal dan eksternal

Port USART untuk komunikasi serial

Fitur Pheripheral
Tiga Buah Timer/Counter 8 bit dengan kemampuan membandingkan.
2 Buah Timer/ounter 8 bit dengan Prescaler terpisah dari Mode Compare.
1 buah Timer/Counter 16 bit dengan Presclaer terpisah, Mode Compare, dan
Mode Capture.

Real time counter dengan Oscillator tersendiri

4 Channel PWM

8 Channel, 10 bit ADC


8 single ended channel
7 Differential Channel hanya pada kemasan TQFP
2 Differential Channel dengan Programmable Gain 1x,10x,200x

Byte oriented Two wire serial interface

Programmable Serial USART

Antarmuka SPI

Watchdog Timer dengan Oscillator internal

On-chip Analog Comparator

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.6.

Konfigurasi Pin AVR ATMEGA 16

Gambar 1.2 Konfigurasi kaki (pin) ATMEGA 16

Konfigurasi pin ATMEGAI6 dengan kemasan 40 pin DIP (Dual Inline Package) dapat dilihat
pada Gambar 1.6. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin
ATMEGA16 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merupakan pin Ground.
3. Port A(PA0..PA7) merupakan pin input/output dua arah dan pin masukan ADC.
4. Port B(PB0..PB7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dapat dilihat pada table di bawah ini.

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Tabel 1.2 Fungsi khusus Port B

5. Port C(PCo..PC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dapat dilihat pada tabel di bawah.
Tabel 1.3 Fungsi khusus Port C

6. Port D(PDo..PD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dapat dilihat pada tabel di bawah.
8

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Tabel 1.4 Fungsi khusus Port D

7. Reset : pin ini digunakan untuk mereset ATMega 16


8. XTAL1 dan XTAL2 merupakan pin untuk input clock eksternal
9. ACC : : merupakan pin input untuk tegangan ADC
10. AREF : : merupakan pin input untuk tegangan referensi ADC

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.7.

Blok Diagram ATMEGA 16

Gambar 1.3 Blok Diagram ATMEGA 16

10

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.8.

Arsitektur Mikrokontroler AVR RISC

Gambar 1.4 Arsitektur Mikrokontroler AVR RISC

Gambar 1.5 Arsitektur Harvard

Dari gambar di atas, 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. Di

11

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

mana ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program.
Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPU terdiri dari 32x8-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 register dalam satu clock cycle. Operasi aritmatik dan
logic pada ALU akin mengubah bit-bit yang terdapat pada Status Register (SREG). Proses
pengambilan instruksi dan pengeksekusian instruksi berjalan secara parallel, dapat dilihat
pada gambar di bawah ini.

Gambar 1.6 Proses Pengambilan instruksi dan pengeksekusian instruksi secara paralel

Gambar 1.7 Prinsip Kerja Pipelining

12

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.9.

General Purpose Register AVR

Gambar 1.8 General Purpose 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
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.

1.10. Stack Pointer


Stack utamanya 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 diimplementasikan mulai dari lokasi memori tertinggi ke
lokasi memori terendah, sehingga perintah PUSH akan mengurangi Stack Pointer.

Gambar 1.9 Stack Pointer


Berikut ini program inisialisasi awal stack pointer yang ditulis dalam bahasa assembl er
13

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

MAIN:

LDI

R16,LOW(RAMEND)

OUT

SPL,R16

LDI

R16,HIGH(RAMEND) OUT SPH,R16

1.11. Peta Memori AVR ATmega 16


1.11.1. Memori Program
Arsitektur AVR mempunyai dua memori utama, yaitu memori data dan memori program.
Selain itu, ATMega16 memiliki memori EEPROM untuk menyimpan data. ATMEGAr6
memiliki 16K byte Onchip In-System Reprogrammable Flash memory untuk menyimpan
program. Karena semua instruksi AVR memiliki format i6 atau 32 bit, Flash diatur dalam 8K x
16 bit. Untuk keamanan program, memori program, flash dibagi ke dalam dua bagian, yaitu
bagian program Boot dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat skirt
up time yang dapat memasukan seluruh program aplikasi ke lalam memori prosesor.

Gambar 1.10 Peta Memori Program AVR ATMEGA 16


1.11.2. Memori Data (SRAM)
Memori data AVR ATMEGA16 terbagi menjadi 3 bagian, yaitu 32 I1uah register umum, 64 buah
register I/O dan 1 Kbyte SRAM internal. General purpose register menempati alamat data
terbawah, yaitu $oo sampai $1F. Sedangkan memori I/O menempati 64 alamat berikutnya mulai
dari $2o hingga $5F. Memori 1/O merupakan register yang khusus digunakan untuk mengatur
14

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

fungsi terhadap berbagai (peripheral mikrokontroler seperti control register, timer/counter,


I'ungsi-fungsi I/O, dan sebagainya. 1024 alamat memori berikutnya mulai alamat $6o hingga
$45F digunakan untuk SRAM internal.

Gambar 1.11 Peta Memori Data AVR ATMEGA 16

1.11.3. Memori Data EEPROM


ATmegal6 terdiri dari 512 byte memori data EEPROM 8 bit, data dapat tulis/baca dari
memori ini, ketika catu daya dimatikan, data terakhir yang ditulis pada memori EEPROM
masih tersimpan pada mernori ini, atau dengan kata lain memori EEPROM bersifat
nonvolatile. Alarnat EEPROM mulai $ooo sampai $1FF.

15

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Tabel 1.5 Pengalamatan Register I/O

16

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.12. Status Register


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 1.12 Status Register ATMEGA 16


Bit 7 : I (Global Interrupt Enable)
Bit untuk mengaktifkan interupsi, jika terjadi interupsi yang dipicu oleh hardware
bit I akan di-clear, dan akan diset 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 FOR antara flag-N (negative) dan flag-V
(komplemen dua overflow)
Bit 3 : V (Two's Complement Overflow Flag)
Bit berguna untuk mendukung operasi aritmatika
Bit 2 : N (Negative Flag)
Apabila suatu operasi menghasilkan bilangan negative, maka flag-N akan diset
Bit 1 : Z (Zero Flag)
Bit akan diset bila basil operasi yang diperoleh adalah nol
Bit 0 : C (Carry Flag)
Bit akan diset bila basil operasi menghasilkan carry

17

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

PENUNTUN PRAKTIKUM
BAB I
INPUT / OUTPUT DIGITAL PORTS
1.1. Abstrak
ATmega16 is

an

8-bit

high

performance

microcontroller

of

Atmels

Mega AVR family with low power consumption. Atmega16 is based on enhanced RISC
(Reduced Instruction Set Computing, Know more about RISC and CISC Architecture)
architecture with 131 powerful instructions. Most of the instructions execute in one machine
cycle. Atmega16 can work on a maximum frequency of 16MHz.
ATmega16 has 16 KB programmable flash memory, static RAM of 1 KB and
EEPROM of 512 Bytes. The endurance cycle of flash memory and EEPROM is 10,000 and
100,000, respectively.
ATmega16 is a 40 pin microcontroller. There are 32 I/O (input/output) lines which are
divided into four 8-bit ports designated as PORTA, PORTB, PORTC and PORTD.
ATmega16

has

various

in-built

peripherals

like USART, ADC, Analog

Comparator, SPI, JTAG etc. Each I/O pin has an alternative task related to in-built
peripherals. The following table shows the pin description of ATmega16.
1.2. Tujuan Percobaan
1.2.1. Mengetahui Prinsip kerja dari mikrokontroller sebagai pusat pengolahan data digital.
1.2.2. Mengetahui cara menginstalisasi i/o ports dalam mikrokontroller
1.2.3. Mampu menggunakan seven segment, lcd, dan berbagai i/o device yang terintegrasi
pada mikrokontroller.
1.3. Teori Dasar
Mikrokontroler adalah sebuah komputer kecil ("special purpose computers") di
dalam satu IC yang berisi CPU, memori, timer, saluran komunikasi serial dan paralel, Port
input/output, ADC. Mikrokontroler digunakan untuk suatu tugas dan menjalankan
suatu program.
Pada saat ini penggunaan mikrokontroler dapat kita tempi pada berbagai
peralatan, misalnya peralatan yang terdapat di rumah, seperti telepon digital,
microwave oven, televisi, mesin cuci, sistem keamanan rumah, PDA, dll. Mikrokontroler
dapat kita gunakan untuk berbagai aplikasi misalnya untuk pengendalian, otomasi
18

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

industri, akuisisi data, telekomunikasi dan lain-lain. Keuntungan menggunakan


mikrokontroler yaitu harganya murah, dapat diprogram berulang kali, dan dapat kita
program sesuai dengan keinginan kita. Saat ini keluarga mikrokontroler yang ada
dipasaran yaitu Intel 8048 dan 8o51(MCS51), Motorola 68HC11, Microchip PIC,
Hitachi H8, dan Atmel AVR.
1.4. Alat dan Bahan
1. Power Supply 12 Volt
2. Multimeter
3. DT combo AVR 51 Starter KIT
4. Downloader STK 500
5. LCD 16x2
6. Black Haousing
7. Software
1.5. Gambar Percobaan

19

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

1.6. Prosedur Percobaan


1.6.1.

Running LED
1. Menginstal codevision pada laptop
2. Menyiapkan alat dan bahan
3. Membuat logika yang akan diinput pada LED
4. Mendownload listing pada codevison
5. Menjalankan running LED

1.6.2.

LCD
1.

Menginstal codevision pada laptop

2.

Menyiapkan alat dan bahan

3.

Membuat logika yang akan diinput pada LCD

4.

Mendownload listing pada codevison

5.

Menjalankan LCD

20

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

BAB 2
TIMER/COUNTER

Timer/Counter adalah Seperangkat pencacah biner (binary counter) yang terhubung


langsung ke saluran data mikrokontroler, sehingga mikrokontroler bisa membaca kondisi
pencacah dan bila diperlukan mikrokontroler dapat pula merubah kondisi pencacah tersebut.
Saat sinyal clock yang diberikan sudah melebihi kapasitas pencacah, maka pencacah akan
memberikan sinyal over flow/Limpahan. Limpahan pencacah ini dicatat dalam suatu
register.
Sinyal clock yang diberikan ke pencacah dibedakan menjadi 2 macam:
-

Sinyal Clock dengan frekuensi tetap yang sudah diketahui besarnya - pencacah
bekerja sebagai Timer (Pewaktu), karena kondisi pencacah tsb setara dengan waktu
yang bisa ditentukan secara pasti.

Sinyal Clock dengan frekuensi yang bisa bervariasi - pencacah bekerja sebagai
Counter(Pencacah), kondisi pencacah tersebut menyatakan banyaknya pulsa clock
yang sudah diterima.

Mikrokontroller AVR ATmega16 memiliki tiga buah timer di ,intaranya timer/counter o


(8 bit), timer/counter 1 (16 bit), dan tinier/counter 2 (8 bit).

2.1. Timer/Counter0 8bit


Fitur utama Timer/Countero adalah sebagai berikut:
a. 8 bit Timer/Counter 1 kanal
b. Auto reload saat match compare
c. PWM dwbgan glitch-free
d. Frequence generator
e. Prescalar 10bit untuk timer
f. Mempunyai 2 sumber interupsi : Overflow and Compare Match Interrupt (TOV0 and
OCF0)
Blok diagram dari timer/counter n ditunjukkan pda gambar di bawah ini, n adalah nomor
yang mewakili timer/counter 8 bit ( n = 0,2 ).

21

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

2.2. Register Pengendali Timer/Counter0


1. Timer/Counter Control Register TCCR0
Register TCCR berfungsi untuk pengaturan mode operasi Timer/Counter

Bit 7 FOC0: Force Output Compare


Bit ini hanya akan aktif saat menggunakan non-PWM mode. Jika bit FOC0 diset maka
akan terjadi compare match saat (TCNT0==OCR0)
Bit 6, 3 WGM01:0: Waveform Generation Mode
Kedua bit ini digunakan untuk memilih mode pembanding

22

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Tabel 2.1 Pemilihan Mode Operasi

Bit 5:4 COM01:0: Compare Match Output Mode


Kedua bit ini berfungsi untuk mengatur sifat pin OC0 pada saat sebagai output timer0
atau sebagai saluran output PWM
Tabel 2.2 Compare Output Mode saat non-PWM Mode (Normal overflow & CTC)

Tabel 2.3 Compare Output Mode saat FAST PWM Mode

Tabel 2.4 Compare Output Mode saat Phase Correct PWM Mode

Bit 2:0 CS02:0: Clock Select


Ketiga bit ini berfungsi untuk memilih prescaler yang digunakan Timer/Counter
Tabel. Prescaler Timer/Counter

23

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

2. Timer/Counter Register TCNT0


Register TCNT berfungsi sebagai register pencacah dari 0 sampai nilai MAX

3. Output Compare Register OCR0


Register OCRberfungsi untuk menyimpan nilai pembanding dengan nilai pada
register TCNT

4. Timer/Counter Interrupt Mask Register TIMSK

Bit 1 OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable


Bit OCIE0 berfungsi sebagai bit pengaktif interupsi compare match Timer/Counter()
Bit 0 TOIE0: Timer/Counter0 Overflow Interrupt Enable
Bit TOIE0 berfungsi sebagai pengaktif interupsi Timer/Countera()
5. Timer/Counter Interrupt Flag Register- TIFR

Bit 1 OCF0: Output Compare Flag 0


Bit OCF0 berfungsi sebagai indicator terjadinya compare match, OCFo set saat terjadi
compare match lalu akan diclear kan oleh hardware saat eksekusi vector interpsi timer()
compare match
24

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Bit 0 TOV0: Timer/Counter0 Overflow Flag


Bit TOV0 berfungsi sebagi indicator terjadinya overflow, TOV0 akan set saat terjadi
overflow pada TCNT0 dan akan clear saat eksekusi vector interupsi
Mode Operasi Timer/Counter0, pemilihan mode operasi pada timer/counter0 ditentukan
oleh bit-WGM01 dan WGM00 pada register TCCR0
1. Normal Mode (WGM01:0 = 0)
Normal overflow, Pada mode ini register pencacah TCNT0 selalu mencacah ke atas
(counting-up) hingga mencapai nilai MAX yaitu 0xff lalu diulangi (di restart) dari BOTTOM
yaitu0x00
Dalam operasi normal overflow ini register Timer/Counter Overflowing (TOV0) akan
set saat TCNT0 restart atau disebut keadaan overflow yang menandakan terjadinya
interupsi
Nilai awal TCNT0 tidak harus 0x00 namun bisa ditentukan sesuai kebutuhan
Normal Compare match, dalam mode ini register TCNT0 bekerja seperti mode mormal
overflow, namun jika register OCR0 diisi dengan sebuah nilai, maka disaat TCNT0==OCR0
maka akan terjadi compare match, yang menyebabkan OCF0 set yang menandakan
terjadinya interupsi.
Ketika compare match dalam mode ini TCNT0 akan terus menghitung hingga overflow
dan mulai dari 0x00 lagi
2. Clear Timer on Compare match (CTC) mode (WGM01:0 = 2)
Pada mode ini, register OCR0 digunakan untuk memanipulasi resolusi nilai cacahan.
Pada mode CTC ini cacahan akan di restart (kembali ke nilai awal cacahan) ketika nilai
register TCNT0==OCR0
Sebuah Interupsi bisa dihasilkan ketika compare match terjadi atau saat TCNT0==OCR0
dengan menggunakan flag OCF0. Jika interupsi ini diaktifkan, interupsi ini bisa digunakan
unuk menghandel rutin program untuk mengupdate nilai OCR0. Berikut Timing diagram
untuk mode CTC

25

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Gambar. Timing Diagram Mode CTC


Sebuah gelombang output bisa dibangkitkan pada mode CTC ini. Seting Output mode bit
ke toogle mode (COM01:0 = 1). Setting Port pin sebagai output
Frekuensi gelombang yang dibangkitkan sesuai dengan persamaan berikut:

Ket:
F clk_i/o adalah frekuensi clock chip yang digunakan
N adalah prescaler sumber clock yang digunakan (1,8,64,256,1024)

3. Fast PWM (WGM01:0 = 3)


Mode ini memberikan pilihan membangkitkan PWM frekuensi tinggi. Mode Fast PWM
berbeda dengan mode PWM lain karena beroperasi dengan single-slope. Pada mode ini
register pencacah TCNT0 mencacah dari BOTTOM (0x00) ke MAX (0xff) kemudian di
restart atau dimulai lagi dari BOTTOM hinggs MAX, demikian seterusnya

26

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Berdasarkan timing diagram diatas dapat diketahui, Pada mode non-inverting PWM, pin
OC0 (PB3) di clear saat compare match (TCNT0==OCR0) dan di set pada saat
BOTTOM (TCNT0==0x00) dan sebaliknya pada mode inverting PWM, pin OC0 (PB3) di
set saat compare match (TCNT0==OCR0) dan di clear pada saat BOTTOM
(TCNT0==0x00)
Frekuensi PWM yang dibangkitkan pad pin OC0 (PB3) dalam mode Fast PWM dapat
dihitung dengan persamaan sebagai berikut:

Ket:
Fclk_i/o adalah frekuensi clock chip yang digunakan
N adalah prescaler sumber clock yang digunakan (1,8,64,256,1024)

4. Phase correct PWM (WGM01:0 = 1)


Mode Phase Correct PWM hampir sama dengan Fast PWM, perbedaannya hanya terletak
pada operasi cacahannya. Mode Phase Correct PWM menggunakan dual slope. Dimana
register pencacah TCNT0 mencacah secara counting-up dari BOTTOM (0x00) hingga MAX
(0xff) diteruskan mencacah secara counting-down hingga BOTTOM (0x00). Proses ini yang
akan diulang secara terus menerus.

27

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Berdasarkan timing diagram diatas dapat diketahui bahwa. Dalam mode Phase Correct
PWM dengan mode inverting dan non inverting PWM nya sama dengan Fast PWM.
Frekuensi PWM yang dibangkitkan pad pin OC0 (PB3) dalam mode Phase Correct
PWM dapat dihitung dengan persamaan sebagai berikut:

Ket:
F clk_i/o adalah frekuensi clock chip yang digunakan
N adalah prescaler sumber clock yang digunakan (1,8,64,256,1024)

28

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

PENUNTUN PRAKTIKUM
BAB II
TIMER / COUNTER

2.1. Abstrak
A timer in simplest term is a register. Timers generally have a resolution of 8 or 16
Bits. So a 8 bit timer is 8Bits wide so capable of holding value withing 0-255. But this
register has a magical property ! Its value increases/decreases automatically at a predefined
rate (supplied by user). This is the timer clock. And this operation does not need CPUs
intervention.
Since Timer works independently of CPU it can be used to measure time accurately.
Timer upon certain conditions take some action automatically or inform CPU. One of the
basic condition is the situation when timer OVERFLOWS i.e. its counted upto its maximum
value (255 for 8 BIT timers) and rolled back to 0. In this situation timer can issue an interrupt
and you must write an Interrupt Service Routine (ISR) to handle the event.
2.2. Tujuan Percobaan
2.2.1. Mengetahui prinsip kerja dari timer / counter pada mikrokontroller
2.2.2. Mengetahui register-register yang berperan dalam timer/counter
2.2.3. Mampu menggunakan timer/counter dalam aplikasi praktis
2.3. Teori Dasar
Timer/Counter adalah Seperangkat pencacah biner (binary counter) yang terhubung
langsung ke saluran data mikrokontroler, sehingga iiiikrokontroler bisa membaca kondisi
pencacah dan bila diperlukan iiiikrokontroler dapat pula merubah kondisi pencacah tersebut.
Saat sinyal clock yang diberikan sudah melebihi kapasitas pencacah, maka I )encacah akan
memberikan sinyal over flow/Lmpahan. Limpahan pencacah mi dicatat dalam suatu
register.

29

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

2.4. Alat dan Bahan


1. Modul 10 wcost system ATMEGA 16 12 MHz
2. Downloader DTH STK 500 AVR ISP
3. Jumper
4. Catu daya DC
5. Osiloskop
6. Probe
7. Black Housing
8. Laptop dengan Codevision
2.5. Gambar Percobaan

30

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

2.6. Prosedur Percobaan


1. Menyiapkan alat dan bahan yang akan digunakan
2. Merangkai rangkaian seperti pada gambar percobaan, hubungkan Port B3 ke probe
osiloskop, sebagai output timer/counter
3. Buka codevision pada PC, mulailah mensetting chip yang digunakan dengan
frekuensi clock crystal yang sesuai, kemudian enable timer/counter
4. Generated program dan simpan direktori komputer
5. Selanjutnya set pada register TCCR0 untuk mode normal overflow toogle saat
compare match dengan clock yang digunakan.
6. Build a program dan program the chip. Kemudian lihat hasilnya pada osiloskop. Catat
frekuensi output yang dihasilkan. Ulangi point 5 dan 6 dengan clock yang berbeda.
7. Set register TCCR0 untuk CTC dengan clock yang akan diamati, serta set OCR0
untuk compare match yang digunakan, lihat dan catat hasilnya. Ulangi langkah ini
untuk OCR0 dan clock yang berbeda.
8. Set kembali register TCCR0 untuk mode fast PWM dengan clock yang sesuai serta
untuk keadaan set atau clear dengan OCR0. Ton dan fout yang dihasilkan, ulangi
langkah ini untuk clock dan OCR yang berbeda.
9. Lakukan langkah 8 untuk mode, phasa correct PWM.
10. Catat hasil pembacaan pada data sementara.
11. Rapikan alat dan bahan yang telah digunakan.

31

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

BAB 3
ADC ATMEGA16
ATMEGA16 merupakan tipe AVR yang dilengkapi dengan 8 saluran ADC internal
dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATMEGA16 dapat dikonfigurasi, baik
sebagai single ended input maupun pewaktuan, tegangan referensi, mode operasi, dan
kemampuan filter derau yang amat fleksibel sehingga dapat dengan mudah disesuaikan
dengan kebutuhan dari ADC itu sendiri.

Gambar 3.1 Diagram Blok ADC


Proses inisialisasi ADC meliputi proses penentuan clock, tegangan referensi, format
output data, dan mode pembacaan. Register yang perlu diset nilainya adalah ADMUX (ADC
Multiplexer Selection Register), ADCSRA (ADC Control and Status Register A), dan SFIOR
(special Function IO Register). ADMUX merupakan register 8 bit yang berfungsi
menentukan tegangan referensi ADC, format data output, dan saluran ADC yang digunakan.
32

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Konfigurasi register ADMUX pada Gambar 2.


REF1 REF0 ADLAR MUX4 MUX3 MUX2

MUX1

MUX0

Gambar 3.2. Register ADMUX


Bit penyusunnya sebagai berikut:
a. REF[1..0] merupakan bit pengatur tegangan referensi ADC ATMega16. Memeiliki Nilai
Awal 00 sehingga referensi tegangan berasal dari pin AREF. Detail nilai yang lain dapat
dilihat pada tabel 5.1.
Tabel 3.1. Pemilihan Mode Tegangan Referensi ADC
REF1

REF0

Mode Tegangan Referensi

Berasal dari pin AREF

Berasal dari pin AVCC

Tidak dipergunakan

Berasal dari tegangan referensi internal 2,56 V

b. ADLAR merupakan bit pemilih mode data keluaran ADC. Bernilai awal / default = 0,
sehingga 2 bit tertinggi data hasil konversinya berada di register ADCH dan 8 bit sisanya
berada di register ADCL, seperti dalam gambar 3. Apabila bernilai 1, maka hasilnya pada
gambar.4.

ADC9 ADC8 ADCH

ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL


Gambar 3.3. Format Data ADC dengan ADLAR=0
ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH
ADC1 ADC0 -

ADCL

Gambar 3.4. Format Data ADC dengan ADLAR=1


33

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

c. MUX[4..0] merupakan bit pemilih saluran pembacaan ADC. Bernilai awal 00000. Untuk
mode single ended input, MUX[4..0] bernilai dari 00000 hingga 00111, konfigurasinya
dalam tabel 5.2.
Tabel 3.2. Pemilihan Bit Saluran Pembacaan ADC
MUX4..0

Single

Ended Pos

Input

Input

00000

ADC0

00001

ADC1

00010

ADC2

00011

ADC3

00100

ADC4

00101

ADC5

00110

ADC6

00111

ADC7

Differential Neg
Input

Differential

Gain

N/A

01000

ADC0

ADC0

10x

01001

ADC1

ADC0

10x

01010

ADC0

ADC0

200x

01011

ADC1

ADC0

200x

01100

ADC2

ADC2

10x

01101

ADC3

ADC2

10x

01110

ADC2

ADC2

200x

ADC3

ADC2

200x

10000

ADC0

ADC1

1x

10001

ADC1

ADC1

1x

10010

ADC2

ADC1

1x

10011

ADC3

ADC1

1x

10100

ADC4

ADC1

1x

10101

ADC5

ADC1

1x

10110

ADC6

ADC1

1x

01111

N/A

34

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

10111

ADC7

ADC1

1x

11000

ADC0

ADC2

1x

11001

ADC1

ADC2

1x

11010

ADC2

ADC2

1x

11011

ADC3

ADC2

1x

11100

ADC4

ADC2

1x

ADCSRA merupakan register 8 bit yang berfungsi melakukan manajemen sinyal kontrol dan
status dari ADC. Memiliki susunan dalam gambar.5.
ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
Gambar 3.5. Register ADCSRA
Bit penyusunnya sebagai berikut:
a.

ADEN merupakan bit pengatur aktivasi ADC. Bernilai awal 0. Jika bernilai 1, maka
ADC aktif.

b.

ADSC merupakan bit penanda mulainya konversi ADC. Bernilai awal 0 selama
konversi ADC akan bernilai 1, sedangkan jika konversi selesai, akan bernilai 0.

c.

ADATE merupakan bit pengatur aktivasi picu otomatis operasi ADC. Bernilai awal 0,
jika bernilai1 maka konversi ADC akan dimulai pada saat transisi positif dari sinyal
picu yang diplih. Pemiliha sinyal picu menggunakan bit ADTS pada register SFIOR.

d.

ADIF merupakan bit penanda akhir suatu konversi ADC. Bernilai awal 0. Jika
bernilai 1, maka konversi ADC pada saluran telah selesai dan data siap diakses.

e.

ADIE merupakan bit pengatur aktivasi interupsi yang berhubungan dengan akhir
konversi ADC. Bernilai awal 0. Jika berniali 1 dan jika konversi ADC telah selesai,
sebuah interupsi akan dieksekusi.

f.

ADPS[2..0] merupakan bit pengatur clock ADC. Bernilai awal 000. Detail nilai bit
dalam tabel .3.

35

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Tabel 3.3 Konfigurasi Prescaler ADC


ADPS2 ADPS1

ADPS0

Faktor Pembagi

16

32

64

128

SFIOR merupakan register 8 bit pengatur sumber picu konversi ADC, apakah dari
picu eksternal atau dari picu internal. Susunannya dalam gambar 6.
ADTS2 ADTS1 ADTS0 ACME PUD PSR2 PSR10 SFIOR
Gambar 3.6 Register SFIOR
ADTS[2..0] merupakan bit pengatur picu eksternal operasi ADC. Hanya berfungsi
jika bit ADATE pada register ADCSRA bernilai 1. Bernilai awal 000 sehingga ADC bekerja
pada mode free running dan tidak ada interupsi yang akan dihasilkan. Detail nilai ADTS[2..0]
dapat dilihat pada tabel 4. Untuk Operasi ADC, bit ACME, PUD, PSR2, dan PSR10 tidak
diaktifkan.

Tabel 2.4 Pemilihan Sumber Picu ADC


ADTS2

ADTS1

ADTS0

Sumber Picu

Mode Free Running

Komparator Analog

Interrupt External Request 0

Timer/Counter0 Compare Match

Timer/Counter0 Overflow

36

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Timer/Counter1 Compare Match B

Timer/Counter1 Overflow

Timer/Counter1 Capture Event

Dalam proses pembacaan hasil konversi ADC, dilakukan pengecekan terhadap bit
ADIF (ADC Interupt Flag) pada register ADCSRA. ADIF akan benilai satu jika konversi
sebuah saluran ADC telah selesai dilakukan dan data hasil konversi siap untuk diambil, dan
demikian sebaliknya. Data disimpan dalam dua buah register, yaitu ADCH dan ADCL.

37

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

PENUNTUN PRAKTIKUM
BAB III
ANALOG TO DIGITAL CONVERTER

3.1. Abstrak
The Analog to Digital Converter (ADC) is used to convert an analog voltage (a
voltage that vary continuously within a known range) to a 10-bit digital value. For instance, it
can be used to log the output of a sensor (temperature, pressure, etc) at regular intervals, or to
take some action in function of the measured variable value. There are several types of
ADCs. The one used by AVR is of the "succesive approximation ADC" kind. The following
is a simplified scheme of the ADC.
At the input of the ADC itself is an analog multiplexer, which is used to select
between eight analog inputs. That means that you can convert up to eight signals (not at the
same time of course). At the end of the conversion, the correponding value is transferred to
the registers ADCH and ADCL. As the AVR's registers are 8-bit wide, the 10-bit value can
only be held in two registers.
3.2. Tujuan Percobaan
3.2.1. Mengetahui prinsip kerja dari Analog to Digital converter pada mikrokontroller.
3.2.2. Mengetahui register-register yang berperan dalam analog to digital converter
3.2.3. Mampu menjelaskan kelebihan dan kekurangan dari ADC pada mikro dan pada
devais lainnya.
3.3. Teori Dasar
ATMEGA16 merupakan tipe AVR yang dilengkapi dengan 8 saluran ADC internal
dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATMEGA16 dapat dikonfigurasi, baik
sebagai single ended input maupun pewaktuan, tegangan referensi, mode operasi, dan
kemampuan filter derau yang amat fleksibel sehingga dapat dengan mudah disesuaikan
dengan kebutuhan dari ADC itu sendiri.

38

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

3.4. Alat dan Bahan


1. Modul 10 wcost system ATMEGA 16 12 MHz
2. Downloader DTH STK 500 AVR ISP
3. Jumper
4. Catu daya DC
5. Osiloskop
6. Probe
7. Black Housing
8. Bread Board
9. Resistor
10. Potensiometer
11. Laptop dengan Codevision

3.5. Gambar Percobaan

39

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

3.6. Prosedur Percobaan


1. Menyiapkan alat dan bahan yang akan digunakan
2. Merangkai rangkaian seperti pada rangkaian percobaan dengan menghubungkan pin Vcc
dan pin Ground pada prot Ao ke kaki potensiometer.
3. Menghubungkan LCD ke port C untuk menampilkan hasil konversi ADC.
4. Selanjutnya buka codevision AVR pada laptop dan lakukan inisialisasi dari ADC. Setelah
selesai, lakukan generated program dan lihat pada listing program, ketik instruksi sebagai
berikut :
Insigned dtadc, tegangan :
char buf
dengan instruksi
{
dtadc = read_adc (0);
tegangan = (((float)dtadc/1023)*5000);
lcd_gotoxy (0,0);
sprintf (but, hasil = %i,dtadc);
lcd_puts (but);
lcd_gotoxy (0,1);
sprintf (but 1,v=%i,tegangan);
lcd_puts(but1);
lcd_gotoxy(12,1);
lcd_puts (mv);
5. Setelah listing program selesai, maka hubungkan rangkaian dengan catu daya dan
hubungkan downloader pada laptop.
6. Build all program, kemudian click Program the chip jika program tidak ada yang error.
Tunggu hingga proses downloader selesai.
7. Kemudian lihat hasilnya pada LCD, ukurlah tegangan pada potensiometer dengan
menggunakan multimeter dan catat hasilnya yang ditunjukkan oleh LCD dan multimeter
pada lembaran data.
8. Lakukan langkah ke-tujuh dengan merubah nilai potensiometer dengan kenaikan 200 .
40

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Dimulai dari 200 - 7 k.


9. Rapihkan alat dan bahan yang telah digunakan.

41

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

BAB 4
SERIAL KOMUNIKASI
Data-data yang di transmisikan suatu device dari atau ke mikrokontroler berupa digit
dalam sistem angka biner. Satu digit data dinamakan juga satu bit data. Sebagai contoh: jika
sebuah angka memiliki nilai 1011, maka dapat dikatakan kalau data tersebut memiliki nilai 4
bit atau bisa disebut juga memiliki panjang 4 bit. Sebuah bit data hanya memiliki nilai
High atau low atau bisa dikatakan bernilai 1 atau 0. Jika sebuah angka atau data
memiliki panjang 8 bit, maka data tersebut memiliki nilai 1 byte. Jadi 1 byte data sama
dengan 8 bit data. Transmisi data-data tersebut memerlukan sebuah sistem antarmuka
yang berfungsi untuk mengatur arus pemindahan data. Sistem antarmuka yang umum
digunakan adalah sistem antarmuka serial dan parallel.

1. Antarmuka Serial
Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data
dilakukan per-bit. Tiap bit data tersebut dikirim melalui satu jalur, sehingga pada antarmuka
serial hanya membutuhkan sedikit pin. Kabel yang digunakan dalam komunikasi serial
umumnya lebih panjang dibandingkan dengan komunikasi parallel. Hal ini dikarenakan
komunikasi serial mengirimkan logika 1 dengan kisaran tegangan antara -3V hingga -25V
dan logika 0 antara +3V hingga +25V sehingga kehilangan daya karena panjangnya kabel
tidak menjadi masalah. Gambar di bawah ini adalah ilustrasi pengiriman data secara serial.

Komunikasi serial memiliki dua macam mode komunikasi, yaitu:


1. Synchronous Serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau
penerima) yang menghasilkan dan mengirimkan clock bersama-sama dengan data. Contoh
penggunaan synchronous serial terdapat pada transimisi data keyboard.
2. Asynchronous Serial adalah komunikasi dimana kedua pihak (pengirim atau penerima)
masing-masing menghasilkan clockuntuk data yang ditransmisikan. Agar data dikirim sama
42

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

dengan data yang di terima, maka kedua frekuensi clock harus sama dan harus terdapat
sinkronisasi. Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan
frekuensi clockpengirim dan penerima akan membaca data sesuai dengan frekuensi clock
penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous
Receiver Transmitter (UART) yang digunakan pada serial port (COM) komputer.
Standar komunikasi serial :
a) RS-232
RS-232 (Recommended Standard-232)merupakan salah satu dari standar yang dipakai
secara

luas

dalam

komunikasi

data

serial.

Umumnya

digunakan

untuk

menghubungkan DTE (Data Terminal Equipment) ke DCE (Data Communication


Equipment)yang berupa peralatan sistem komunikasi analog. Interfacing RS-232
menggunakan komunikasi asynchronous.
Fungsi-fungsi port pada komunikasi serial RS-232:
1. DCD (Data Carier Detect)
Dengan saluran ini DCE(Data Communication Equipment) memberitahukan
ke DTE(Data Terminal Equipment)bahwa pada terminal masukan ada data
masuk.
2. RXD (Receiver Data)
Berfungsi untuk menerima data.
3. TxD (Transmit Data)
Berfungsi untuk pengiriman data.
4. DTR (Data terminal Ready)
TR berfungsi sebagai indicator yang mengidentifikasikan bahwa DTE sudah
siap dan koneksi sudah tersambung.
5. Signal Ground
Saluran Ground
6. DSR (Data Set Ready)
Merupakan sinyal aktif yang menunjukkan bahwa DCE sudah siap
7. RTS (Request To Send)
Dengan saluran ini DCE diminta mengirim data oleh DTE.
8. CTS (Clear To Send)
43

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

Dengan saluran ini DCE memberitahukan bahwa DTE sudah dapat memulai
pengiriman data.
9. RI (Ring Indicator)
Pada saluran ini DCE memberitahu ke DTE bahwa sebuah stasiun
menghendaki hubungan dengannya.

b) RS-485
RS-485 adalah sistem komunikasi data serial yang dikembangkan pada tahun 1983.
Dengan sistem ini, komunikasi data dapat dilakukan pada jarak yang cukup jauh yaitu
1,2 Km. Selain dapat digunakan untuk jarak yang jauh sistem ini juga dapat
digunakan untuk menghubungkan 32 unit beban sekaligus hanya dengan
menggunakan dua buah kabel saja tanpa memerlukan referensi ground yang sama
antara unit yang satu dengan unit lainnya.

c) Serial Peripheral Interface Bus/ SPI


SPI adalah bus sinkron link data serial standar dinamai oleh Nokia yang beroperasi di
full-duplexmode.
Bus SPI menetapkan empat logika sinyal:
SCLK - Serial Clock (output from master)
Mosi / SIMO - Master Output, Slave Input (output from master)
Miso / Somi - Input Master, Slave Output (output from slave)
SS - Slave Select (active low; output from master)
Penamaan alternatif yang juga banyak digunakan:
SCK, CLK - Serial Clock (output frommaster)
SDI, DI, SI - Serial Data In, Data In, Serial In
SDO, DO, SO - Serial Data Out, Data Out, Serial Out
NCS, CS, CSB, NSS, STE - Chip Select, Save Transmit Enable (active; output from master)
d) Inter Integrated Circuit / I2C
I2C didesain oleh Philips pada awal tahun 1980 untuk memudahkan
komunikasi antar komponen yang tersebar pada papan rangkaian. I2C merupakan
44

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

singkatan dari Inter IC atau komunikasi antar IC. Sistem komunikasi ini sering
disebut juga IIC atau I2C. Pada awal pembuatan, kecepatan komunikasi
maksimumnya diset pada 100kbps karena pada waktu itu kecepatan tinggi belum
dibutuhkan pada transmisi data. Sedangkan untuk

transmisi

data

yang

membutuhkan kecepatan lebih tinggi, kecepatan maksimumnya di set pada


400kbps. Baru pada tahun 1998 kecepatan transmisi data I2C dapat mencapai
3,4Mbps. I2C tidak hanya digunakan pada komponen yang terletak pada satu
board, tetapi juga digunakan untuk mengkoneksikan komponen yang dihubungkan
melalui kabel.
Kesederhanaan dan fleksibilitas merupakan ciri utama dari I2C, kedua hal tersebut membuat
bus ini mampu menarik penggunaanya dalam berbagai aplikasi. Fitur-fitur signifikan dari bus
ini adalah :
- Hanya 2 jalur/kabel yang dibutuhkan
- Tidak ada aturan baud rateyang ketat seperti pada RS232, di bus ini IC yang
berperan sebagai master akan mengeluarkan bus clock.
- Hubungan master/slaveberlaku antara komponen satu dengan yang lain, setiap
perangkat yang terhubung dengan bus mempunyai alamat unik yang diset melalui
software.
- IC yang berperan sebagai master mengontrol seluruh jalur komunikasi dengan
mengatur clock dan menentukansiapa yang menggunakan jalur komunikasi. Jadi IC
yang berperan sebagai slave tidak akan mengirim data kalau tidak diperintah oleh
master.
I2C hanya membutuhkan dua jalur/kabel yaitu SDA dan SCL. SCL/Serial
clockmerupakan jalur,digunakan untuk mensinkronkan data transfer antara master dan slave
dalam I2C bus. Sedangkan SDA/Serial data merupakan jalur komunikasi data dua arah.

e) USB(Universal Serial Bus)


USB Merupakan antarmuka yang bersifat plug and play, jadi kita tidak perlu
me-restart sistem

untuk menghubungkan

device.

Kecepatan transfer USB mampu

melampaui kecepatan transfer data komunikasi serial lain dan komunikasi secara parallel,
karena sistem antarmuka USB telah menyempurnakan proses transfer tersebut. Kabel USB
45

PRAKTIKUM MIKROPROSESOR

Laboratorium Sistem Kendali dan Instrumentasi


Alamat : Lantai 3 Jurusan Teknik Elektro Fakultas Teknik
Universitas Hasanuddin
http://elvislab.com/

mengurangi derau dan distorsi selama data dikirim, sehingga data dapat diterima dengan
sedikit kesalahan. Sampai saat ini USB memiliki berbagai jenis versi. Diantaranya: USB 0.7,
USB 0.8, USB 0.9, USB 0.99, USB 1.0 , USB 1.1 , USB 2.0 , USB 3.0.
Konektor port yang umum di gunakan dalam komunikasi data serial ada tiga jenis,
diantaranya konektor USB, konektor 9 pin(DB9) dan 25 pin(DB25). DB25 memiliki bentuk
sama persis dengan portparallel.
2. Antarmuka Parallel
Suatu pengiriman data disebut parallel, jika sekelompok bit data ditransmisikan
secara bersama-sama dan melewati beberapa jalur transmisi yang terpisah. Proses pengiriman
data pada mode transmisi ini lebih cepat dan sistem ini akan lebih efektif untuk transmisi data
yang memiliki jarak tidak terlalu jauh. Gambar di bawah adalah ilustrasi pengiriman data
secara parallel.

Portyang umum digunakanuntuk komunikasi data parallel adalah portDB25.

Melalui antarmuka-antarmuka tersebut sebuah mikrokontroler dapat terhubung dengan device


lain. Device -device tersebur antara lain: Komputer, SD/MMC, Modem, PLC, Handphonedan
banyak lagi.

46

PRAKTIKUM MIKROPROSESOR