• Tidak ada hasil yang ditemukan

BAB II. DASAR TEORI

B. Hardware atau Perangkat Keras

5. Mikrokontroler

Mikrokontroler dapat dianalogikan dengan sebuah sistem komputer yang dikemas dalam sebuah chip (Agus Bejo, 2008: 1). Untuk penelitian ini digunakan ATMega32-16PU sebagai mikrokontroler. ATMega32-16PU merupakan mikrokontroler AVR keluarga RISC (Reduced Instruction Set Computing). Mikrokontroler ini memiliki RISC 8 bit, di mana semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar

instruksi dieksekusi dalam 1 siklus clock, sehingga membuat mikrokontroler ini relatif lebih cepat.

a. Fitur ATMega32-16PU

ATMega32-16PU memiliki fitur sebagai berikut (lih. Lampiran 1 hal 127):

1) 131 macam instruksi, yang hampir semuanya dieksekusi dalam 1 siklus clock.

2) 32 x 8-bit register serba guna.

3) Kecepatan mencapai 16 MIPS dengan clock 16 MHz. 4) 32 Kbytes Flash Memori jenis non-volatile, yang

memiliki fasilitas In-System Programming. 5) 1024 Bytes EEPROM.

6) 2048 Bytes Internal SRAM.

7) Programming lock, fasilitas untuk mengamankan kode program.

8) 2 buah timer/counter 8-bit dan 1 buah timer/counter 16-bit.

9) 4 channel output PWM. 10) 8 channel 10-bit ADC. 11) Serial USART.

12) Master/Slave SPI serial interface. 13) On-chip analog comparator.

b. Konfigurasi PIN ATMega32-16PU

Gmb.2.4. Konfigurasi Pin ATMega32-16PU (sumber:

Konfigurasi pin ATMega32-16PU dapat dilihat dari gambar 2.4. Dari tabel 2.2 di bawah dapat dijelaskan secara fungsional konfigurasi pin ATMega32-16PU sebagai berikut:

PIN KETERANGAN

1...8

PORT B, merupakan port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8-bit, PORT B juga dapat difungsikan secara individu sebagai berikut:

PB7 : SCK (SPI Serial Clock)

PB6 : MISO (SPI Bus Master Input/Slave Output)

PB5 : MOSI (SPI Bus Master Output/ Slave Input)

PB3 : AIN1 (Analog Comparator Negatif Input), OC0 (Timer/Counter 0 Output Compare Match Output)

PB2 : AIN0 (Analog Comparator Positif Input), INT2 (External Interrupt 2 Input)

PB1 : T1 (Timer/Counter 1 External Counter Input)

PB0 : T0 (Timer/Counter 0 External Counter Input), XCK (USART External Clock Input/Output)

9 RESET, merupakan pin reset akan bekerja bila diberi pulsa rendah (aktif low)

10 VCC, catu daya digital

11 GND, ground untuk catu daya digital

12 XTAL2, output dari penguat osilator pembalik

13

XTAL1, input ke penguat osilator pembalik dan input ke internal clock

14...21

PORT D, merupakan port I/O 8 bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai port I/O, PORT D juga dapat difungsikan sebagai berikut:

PD7 : OC2 (Timer/Counter 2 Output Compare Match Output)

PD6 : ICP1 (Timer/Counter 1 Input Capture Pin)

PD5 : OC1A (Timer/Counter Output Compare A Match Output)

PD4 : OC1B (Timer/Counter Output Compare B Match Output)

PD3 : INT1 (External Interrupt 1 Input)

PD2 : INT0 (External Interrupt 0 Input)

PD0 : RXD (USART Input Pin)

22...29

PORT C, merupakan Port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O, PORT C juga dapat difungsikan secara individu sebagai berikut: PC7 : TOSC2 (Timer Oscillator Pin2)

PC6 : TOSC1 (Timer Oscillator Pin1) PC5 : TD1 (JTAG Test Data Input) PC4 : TD0 (JTAG Test Data Output) PC3 : TMS (JTAG Test Mode Select) PC2 : TCK (JTAG Test Clock)

PC1 : SDA (Two-wire Serial Bus Data Input/Output Line) PC0 : SCL (Two-wire Serial Bus Clock Line)

30

AVCC, catu daya yang digunakan untuk masukkan analog ADC yang terhubung ke PORT A

31 GND, ground untuk catu daya analog 32 AREF, tegangan referensi analog untuk ADC

33...40

PORT A, merupakan Port I/O 8-bit dua arah (bi-directional) dengan resistor pull-up internal. Selain sebagai Port I/O 8-bit PORT A juga dapat berfungsi sebagai masukkan 8 channel ADC Tabel 2.2. Fungsional Pin ATMega32-16PU (sumber: Bejo, 2008: 11-12)

c. Arsitektur ATMega32-16PU

Mikrokontroler ATMega32-16PU memiliki arsitektur Harvard, yaitu memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan unjuk kerja. Instruksi-instruksi dalam memori program dieksekusi dalam satu alur tunggal, dimana pada saat

satu instruksi dikerjakan instruksi berikutnya sudah diambil (pre-fetched) dari memori program. Konsep inilah yang memungkinkan instruksi-instruksi dapat dieksekusi dalam setiap satu siklus clock.

32 x 8-bit register serba guna digunakan untuk mendukung operasi pada Arithmetic Logic Unit (ALU) yang dapat dilakukan dalam satu siklus. Enam dari register serba guna ini dapat digunakan sebagai 3 buah register pointer 16-bit pada mode pengalamatan tak langsung (indirect addressing) untuk mengambil data pada ruang memori data. Ketiga register pointer 16-bit ini disebut dengan register X (gabungan R26 dan R27), register Y (gabungan R28 dan R29), dan register Z (gabungan R30 dan R31).

Hampir semua instruksi memiliki format 16-bit (word). Setiap alamat memori program terdiri dari instruksi 16-bit atau 32-16-bit. Selain register serba guna di atas, terdapat register lain yang terpetakan dengan teknik memory mapped I/O selebar 64 Byte. Beberapa register ini digunakan untuk fungsi khusus antara lain sebagai register kontrol Timer/Counter, Interupsi, ADC, USART, SPI, EEPROM, dan fungsi I/O lainnya. Register ini menempati memori pada alamat 0x20h – 0x5Fh.

Mikrokontroler ATMega 32-16PU memiliki 3 jenis memori yaitu memori program, memori data, dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah.

1) Memori Program

Gmb.2.5. Peta Memori Program ATMega32-16PU (sumber:

ATMega32-16PU memiliki kapasitas memori program sebesar 32 Kbyte yang terpetakan dari alamat 0000h – 3FFFh dimana masing-masing alamat memiliki lebar data 16 bit. Sehingga organisasi memori program seperti ini sering dituliskan dengan 16K x 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi (lihat gmb 2.5). Jika tidak menggunakan fitur Boot Loader Flash maka semua kapasitas memori program di atas

dapat digunakan untuk program aplikasi. Tetapi jika kita menggunakan fitur Boat Loader Plash maka pembagian ukuran kedua bagian ini ditentukan oleh BOOTSZ fuse.

2) Memori Data

Gmb.2.6. Peta Memori Data ATMega32-16PU (sumber:

ATMega32-16PU memiliki kapasias memori data sebesar 2144 Byte yang terbagi menjadi 3 bagian yaitu register serba guna, register I/O, dan SRAM (lihat gmb 2.6). Tiga puluh dua byte alamat terendah digunakan untuk register serba guna yaitu R0 – R31. Enam puluh empat byte berikutnya digunakan untuk register I/O yang digunakan untuk mengatur

fasilitas seperti timer/counter, interupsi, ADC, USART, SPI, EEPROM, dan port I/O seperti PORT A, PORT B, PORT C, dan PORT D. Selanjutnya 2048 Byte di atasnya digunakan untuk memori data SRAM.

Jika register-register I/O diakses seperti mengakses data pada memori (menggunakan instruksi LD atau ST) maka register I/O menempati alamat 0020 – 005F. Tetapi jika register-register I/O diakses seperti mengakses I/O pada umumnya (mengunakan instruksi IN atau OUT) maka register I/O menempati alamat memori 0000h – 003Fh.

3) Memori EEPROM

ATMega32-16PU memiliki EEPROM sebesar 1024 Byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan register-register I/O yaitu register EEPROM Address (EEARH-EEARL), register EEPROM Data (EEDR), dan register EEPROM Control (EECR). Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal sehingga waktu eksekusi relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.

e. Status Register (SREG) ATMega32-16PU

Register SREG digunakan untuk menyimpan informasi dari hasil operasi aritmatika yang terakhir. Informasi-informasi dari register SREG dapat digunakn untuk mengubah alur program yang sedang dijalankan dengan menggunakan percabangan. Data SREG akan selalu berubah setiap instruksi atau operasi pada ALU dan datanya tidak otomatis tersimpan apabila terjadi instruksi percabangan baik karena interupsi maupun lompatan. Sehingga hal ini diatasi dengan software. Gambar 2.7 menunjukkan SREG ATMega32-16PU yang didefinisikan sebagai berikut:

Gmb.2.7. Status Register ATMega32-16PU(sumber:

1) Bit 7 – I : Global Interrupt Enable

Bit I digunakan untuk mengaktifkan interupsi secara umum (interupsi global). Jika bit I bernilai ‘1’ maka interupsi secara umum aktif, tetapi jika bernilai ‘0’ maka tidak ada satupun interupsi yang aktif. Pengaturan jenis-jenis interupsi apa saja yang akan aktif dilakukan dengan mengatur register kontrol yang sesuai dengan jenis interupsi tersebut dengan

terlebih dahulu mengaktifkan interupsi global, yaitu bit I diset ‘1’.

2) Bit 6 – T : Bit Copy Storage

Bit T digunakan untuk menentukan bit sumber atau bit tujuan pada instruksi Bit Copy. Pada instruksi BST, data akan dicopy dari register ke bit T (bit T sebagai tujuan) sedangkan pada instruksi BLD, bit T akan dicopy ke register (bit T sebagi sumber). 3) Bit 5 – H : Half Carry Flag

Bit H digunakan untuk menunjukkan ada tidaknya setengah carry pada operasi aritmatika BCD. Setengah carry digunakan pada operasi aritmatika BCD, yaitu membagi 1 byte data menjadi 2 bagian (masing-masing 4 bit) dan (masing-masing-(masing-masing bagian dianggap sebagai 1 digit desimal.

4) Bit 4 – S : Sign Bit (S=VN)

Bit S merupakan kombinasi antara bit V dan bit N, yaitu dengan meng-XOR-kan bit V dan bit N. 5) Bit 3 – V : Two’s Complement Overflow Flag

Bit V digunakan untuk mendukung operasi aritmatika komplemen 2. Jika terjadi luapan pada operasi aritmatika bialangan komplemen 2 akan menyebabkan bit V bernilai ‘1’.

6) Bit 2 – N : Negative Flag

Bit N digunakan untuk menunujukkan apakah hasil sebuah operasi aritmatika ataupun operasi logika bernilai negatif atau tidak. Jika hasilnya negatif maka bit N berniali ‘1’ dan jika bernilai positif maka bit N bernilai ‘0’.

7) Bit 1 – Z : Zero Flag

Bit Z digunakan untuk menunjukkan hasil operasi aritmatika ataupun operasi logika apakah bernilai nol atau tidak. Jika hasilnya nol maka bit Z berniali ‘1’ dan jika hasilnya tidak nol maka bit Z bernilai ‘0’.

8) Bit 0 – C : Carry Flag

Bit C digunakan untuk menunjukkan hasil operasi aritmatika ataupun logika apakah ada carry atau tidak. Jika ada carry maka bit C bernilai ‘1’ dan jika tidak ada carry maka bit C berniali ‘0’.

f. Special Function I/O Register (SFIOR)

Register SFIOR adalah register spesial yang berfungsi untuk mengatur beberapa fitur sekaligus dalam satu register. Jadi, isi register ini digunakan dalam menentukan mode dan cara kerja beberapa fitur antara lain pull-up port I/O, timer 0, timer 1, timer 2, analog comparator, dan ADC. Gambar 2.8 menunjukkan SFIOR.

g. Stack Pointer

Gmb.2.9. Stack Pointer ATMega32-16PU (sumber:

Stack pointer digunakan untuk menyimpan data sementara (data variabel) atau untuk menyimpan alamat program yang sedang dikerjakan pada saat terjadi instruksi percabangan atau interupsi. Stack pointer menempati alamat memori RAM paling atas dan akan turun semakin ke bawah dengan bertambahnya data yang disimpan. Instruksi PUSH digunakan untuk menyimpan data ke stack pointer kemudian secara otomatis stack pointer berkurang 1. Sebaliknya instruksi

POP digunakan untuk mengambil data dari stack pointer kemudian secara otomatis stack pointer bertambah 1. Gambar 2.9 menunjukkan register Stack Pointer.

h. Analog to Digital Coverter (ADC)

Mikrokontroler ATMega32-16PU memiliki fasilitas Analog to Digital Converter yang sudah built-in dalam chip. Fitur ADC internal inilah yang menjadi salah satu kelebihan mikrokontroler ATMega32-16PU bila dibandingkan dengan beberapa jenis mikrokontroler lainnya. Adanya ADC tidak merepotkan permasalahan kompleksitas hardware saat membutuhkan proses pengubahan sinyal dari analog ke digital seperti yang harus dilakukan jika memakai komponen IC ADC ekternal.

ATMega32-16PU memiliki resolusi ADC 10-bit dengan 8 channel input dan mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik penaksiran berturut-turut (successive approximation). Rangkaian internal ADC ini memiliki catu daya tersendiri yaitu pin AVCC. Tegangan AVCC harus sama dengan VCC ± 0.3V (lih. Lampiran 1 hal 223). Data hasil konversi ADC dirumuskan sebagai berikut :

V

V

REF IN ADC= .1024 dimana,

VIN : tegangan masukan pada pin yang dipilih VREF : tegangan referensi yang dipilih

2) Untuk konversi penguat benda :

V

V

V

REF NEG POS GAIN ADC (). .512 = dimana,

VPOS : tegangan masukan pada pin positif VNEG : tegangan masukan pada pin negatif GAIN : faktor penguatan

VREF : tegangan referensi yang dipilih

Untuk mengatur mode dan cara kerja ADC dilakukan melalui register ADMUX, ADCSRA, ADCL, ADCH, dan SFIOR.

Dokumen terkait