Terima kasih banyak telah berkunjung.

Selamat datang di website: www.harisprasetyo.web.id

Wednesday, April 2, 2014

Pengenalan Mikrokontroler ATMega 8535


Mikrokontroller AVR merupakan mikrokontroller berbasis arsitektur RISC (Reduced Intruction Set Computing) 8 bit. Mikrokontroller AVR didesain menggunakan arsitektur Harvard, dimana ruang dan jalur bus bagi memori program dipisahkan dengan memori data. Memori program diakses dengan single-pipelining, dimana ketika sebuah instruksi dijalankan, intruksi lain berikutnya akan di-prefetch dari program memori. AVR mempunyai kepanjangan Advanced Versatile RISCH atau Alf and Vegard’s RISC prosesor yang berasal dari dua nama mahasiswa yaitu Alf-Egil Bogel dan Vegerd Wollan.

AVR memiliki keunggulan dibandingkan dengan mikrokontroller lain, keunggulan mikrokontroller AVR yaitu AVR memiliki kecepatan eksekusi dalam 1 siklus clock, lebih cepat dibandingkan dengan mikrokontroller MSC51. Mikrokontroller AVR memiliki fasilitas yang lengkap (ADC internal, EEPROM internal, timer/Counter, watchdog timer, PWM, port I/O, komunikasi serial, komparator, 12C, dan lain-lain). Sehingga dengan fasilitas yang lengkap ini, programer dan desainer dapat menggunakannya untuk berbagai aplikasi sistem elektronika seperti robot, otomasi industri, peralatan telekomunikasi, dan berbagai keperluan lain. Secara umum mikrokontroller AVR dapat dikelompokan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATMega, dan Attiny.

Tabel jenis mikrokontroller AVR
Mikrokontroller AVR
Memori
Tipe
Jumlah pin
Flash
EEPROM
SRAM
Tiny AVR
8 – 32
1 – 2k
64 – 128
0 – 128
AT90Sxx
20 – 44
1 – 8k
128 – 512
0 – 1k
ATMega
32 – 64
8 – 128k
512 – 4k
512 – 4k
Fitur-fitur ATMega 8535
Fitur yang dimiliki ATMega 8535 sebagai berikut:
• Saluran IO sebangak 32 buah
• ADC 10 bit sebanyak 8 channel
• Tiga buah timer / counter
• Memiliki 32 register
• Watcthdog Timer dengan osicilator internal
• SRAM sebanyak 512 byte, EEPROM 512 byte, memori flash sebesar 8kb
• Mempunyai port SPI (Serial Peripheral Interface) dan port USART (Universal Shyncronous Ashyncronous Receiver Transmitter).

Konfigurasi pin AVR ATMega 8535
Konfigurasi kaki (pin) ATMega 8535

Konfigurasi pin ATMega 8535 dengan kemasan 40 pin DIP (Dual In-Line package) dapat dilihat pada gambar diatas. Dari gambar diatas dapat dijelaskan fungsi dari masing-masing pin ATMega 8535 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merupakan pin Ground
3. Port A (PA0...PA7) merupakan pin I/O dan pin ADC
4. Port B (PB0....PB7) merupakan pin I/O dan pin yang mempunyai fungsi khusus yaitu timer/counter, komparator Analog dan SPI.
5. Port C (PC0....PC7) merupakan port I/O dan pin yang mempunyai fungsi khusus yaitu komparator analog dan timer Oscillator.
6. Port D (PD0....PD7) merupakan port I/O dan pin fungsi khusus yaitu komparator analog dan interupt eksternal serta komunikasi serial.
7. RESET merupakan pin yang digunakan untuk mereset mikrokontroller.
8. XTAL 1 dan XTAL 2 merupakan pin masukan clock eksternal.
9. AVCC merupakan pin masukan tegangan untuk ADC.
10. AREF merupakan pin masukan tegangan referensi tegangan referensi untuk ADC.

Pemograman Mikrokontroler AVR ATMega 8535
Pengembangan sebuah sistem menggunakan mikrokontroller AVR buatan ATMEL menggunakan software AVR STUDIO dan Code Vision AVR. AVR STUDIO merupakan software khusus untuk bahasa assembly. Sedangkan Code Vision AVR merupakan software C-Corss Compiler, dimana program dapat ditulis dalam bahasa C, Code Vision memiliki IDE (Integrated Development Environment) yang lengkap, dimana penulisan program, compile, link, pembuatan code mesin (assembler) dan download program ke chip AVR dapat dilakukan pada code vision, selain itu ada fasilitas itu ada fasilitas terminal, yaitu untuk melakukan komunikasi serial dengan mikrokontroller yang sudah diprogram. Proses download program IC mikrokontroller AVR dapat menggunakan sistem download secara ISP (In-System Programing). In-System Programmable flash on-chip mengijinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI.

#include <mega8535.h>
#include <delay.h>
#define sensor PINA.0
#define servo PORTB.0
// variabel global
Unsigned int i,j;
Void main (void)
{
// variabel local
Char data_rx;
DDRA=0x00;
PORTA=0XFF;
DDRA=0XFF;
PORTB=0x00;
While (1)
{
.........
.........
.........
};
}
Penjelasan:
Prosessor(#): digunakan untuk memasukan (include) text dari file lain, mendefinisikan marco yang dapat mengurangi beban kerja pemograman dan meningkatkan legibility source code (mudah dibaca).
#define: digunakan untuk mendefinisikan macro
Contoh:
#define ALFA 0xff
#define SUM (a,b) a+b
#define Sensor PINA.2
#define Pompa PORTB.0
Komentar
Penulisan komentar untuk beberapa baris komentar sekaligus
/*
..........komentar
..../*
Penulisan untuk satu baris saja
//.........komentar.........
a

Input output Mikrokontroler AVR ATMega 8535

Mikrokontroller AVR ATMega 8535 terdiri dari empat buah port yaitu port A (PA), portB (PB), portC (PC) dan portD (PD) yang semuanya dapat diprogram sebagai input ataupun output. Pin I/O pada mikrokontroller VR dapat konfigurasi sebagai input atau output, dengan cara mengubah isi I/O register Data Direction Register.

Misalnya, jika ingin port B dikonfigurasikan sebagai output, maka Data Direction Register portB (DDRB) harus diset sebagai 0xFFH (sama dengan 255). Jika sebagai input maka 0x00H (sama dengan 0).
Contoh:
DDRB = 255; //portB dikonfigurasikan sebagai output. Yaitu PB0-PB7.
DDRD = 0x00; //portD dikonfigurasikan sebagai input.
VOH (Output High Voltage) ialah tegangan pada pin I/O mikrokontroller ketika ia mengeluarkan logika “1” dengan besar sekitar 4.2 V dan arus sebesar 20mA (IOH). Setiap pin I/O mikrokontroller AVR memiliki internal pull up. Misalnya portB dikonfigurasikan sebagai input dan internal pull-upnya diaktifkan maka DDRB = 00H dan PORTB = 00H.
DDRB = 0; //portB dikonfigurasikan sebagai input.
PORTB.0 = 0; //internal pull-up

Untuk mendeteksi input pada salah satu port, dapat digunakan fungsi PINx, sedangkan mendeteksi per pin pada suatu port dapat digunakan funsi pin x bit.
Contoh:
PORTB = PINC //semua data di portC dikirim ke portB
PORTB.0 = PINC.0; //data di portC.0 dikirim ke portB.0

Tegangan keluaran pada pin I/O mikrokontroller ketika logika “1” besarnya sekitar 4.2 V dan arusnya 20 mA. Port I/O sebagai output hanya memberikan arus (sourcing) sebesa 20 Ma, keluaran dari suatu port mikrokontroller hanya dapat mengemudikan perangkat output dengan arus kecil, sehingga untuk peralatan elektronik yang membutuhkan arus yang besar misalnya untuk menggerakkan motor perlu diberikan penguat tambahan, oleh karena itu biasanya dipergunakan penguat lagi berupa transistor atau IC penguat (driver) agar port tersebut tidak terbebani, atau dapat juga dengan konfigurasi port sebagai sinking current, seperti pada port untuk menyalakan LED, yang akan menyala saat port diberikan nilai logika low dan mati saat port diberikan logika high.

PROGRAM CONTROL
  • Perintah if dan Else
Perintah if dan if... else... digunakan untuk melakukan operasi percabangan bersyarat. Fungsi-fungsi untuk menetapkan kondisi dapat dilihat dalam tabel.
Sintak penulisan if dapat ditulis sebagai berikut:
If  (<expression>)
<statement>;
Else
<statement>;

Jika hasil testing expression memberikan hasil tidak nol statement 1 akan dilaksanakan. Pada keadaan sebaliknya statement 2 yang akan dilaksanakan. Sebaliknya pemanfaatan perintah if untuk beberapa kondisi dilakukan dengan menggunakan blok-blok.

  • Percabangan Switch
Perintah percabangan if .... else ..... dapat digantikan dengan perintah swicth. Dalam pernyataan switch, sebuah variabel secara berurutan diuji oleh beberapa konstanta bilangan bulat atau konstanta karakter, sintak perintah switch dapat dituliskan sebagai berikut:
Switch (variabel)
{
Case konstanta_1 : statement;
Break;
Case konstanta_2: statement;
Break;
Case konstanta_3: statement;
Break;
Default:
}

Hal-hal yang harus diperhatikan :
1. Switch hanya dapat memeriksa variabel terhadap sebuah konstanta, sedangkan if dapat memeriksa persyaratan perbandingan (lebih besar, lebih kecil, dan seterusnya).
2. Tidak ada 2 konstanta yang sama didalam sebuah switch.
3. Perintah switch jika dimanfaatkan dengan tepat dapat memberikan hasil lebih baik daripada perintah if .... else .... yang membentuk tangga dan / bersarang.

  • Looping (perulangan)
Looping adalah perulangan satu atau beberapa perintah sampai mencapai keadaan tertentu. Ada tiga perintah looping, yaitu : for .... while.... , dan do.... while....
Sintak loop dor dapat dituliskan sebagai berikut:

For
Untuk perulangan yang melakukan proses increment
For (nama_variabel = nilai_awal; syarat_loop;
Nama_variabel++)
{
Statement_yang_diulang;
}
Untuk perulangan yang melakukan proses decrement
For (nama_variabel = nilai_awal; syarat_loop;
Nama_variabel --)
{
Statement_yang_diulang;
}
Syarat loop adalah pernyataan relasional yang menyatakan syarat berhentinya perulangan, biasanya berkaitan dengan variabel control, nama_variabel++ dan nama_variabel --, menyatakan proses increment dan proses descrement pada variabel control.

While
Perintah while dapat melakukan looping apabila persyaratannya benar, sintak perintah while dapat dituliskan sebagai berikut:
Nama_variabel = nilai_awal;
While (syarat_loop)
{
Statement_yang_akan_diulang;
Nama_variabel++;
}

Do... while
Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum melakukan looping. Kadang-kadang hal ini menimbulkan kerepotan-kerepotan yang tidak perlu, misalnya inisialisasi variabel control. Salah satu solusi adalah dengan menggunakan loop do... while:
Nama_variabel = nilai_awal;
Do
{
Statement_yang_akan_diulang;
Nama_variabel++;
}
While (syarat_loop)

2 comments:

Komentar Diperlukan Untuk Bila Kurang Paham Atau Ingin Bertanya Seputar Artikel Yang Dibaca...