Docstoc

leraning microcontroller avr atmega8535/16/32

Document Sample
leraning microcontroller avr atmega8535/16/32 Powered By Docstoc
					micro club dte
Sistem minimum Mikrokontroler Atmega8535/16/32




       Mikrokontroler adalah suatu keping IC dimana terdapat mikroprosesor dan memori program
(ROM) serta memori serbaguna (RAM), bahkan ada beberapa jenis mikrokontroler yang memiliki
fasilitas ADC, PLL, EEPROM dalam satu kemasan. Penggunaan mikrokontroler dalam bidang kontrol
sangat luas dan populer. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk
mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa
disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan
komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya
terpusat serta dikendalikan oleh mikrokontroler ini.

       Secara teknis hanya ada 2 jenis mikrokontroler yaitu RISC dan CISC dan masing-masing
mempunyai keturunan/keluarga        sendiri-sendiri. RISC kependekan dari Reduced Instruction Set
Computer : instruksi terbatas tapi memiliki fasilitas yang lebih banyak. CISC kependekan dari Complex
Instruction Set Computer : instruksi bisa dikatakan lebih lengkap tapi dengan fasilitas secukupnya.
       Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond,
Atmel, Philips, Xemics dan lain - lain. Dari beberapa vendor tersebut, yang paling populer digunakan
adalah mikrokontroler buatan Atmel.
       Mikrokontroler AVR (Alf and Vegard’s Risc prosesor) memiliki arsitektur RISC 8 bit, di mana
semua instruksi dikemas dalam kode 16-bit (16-bits word) dan sebagian besar instruksi dieksekusi dalam
1 (satu) siklus clock, berbeda dengan instruksi MCS 51 yang membutuhkan 12 siklus clock. Tentu saja itu
terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda. AVR berteknologi
micro club dte
RISC (Reduced Instruction Set Computing), sedangkan seri MCS 51 berteknologi CISC (Complex
Instruction Set Computing).
       Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga
AT90Sxx, keluarga ATMega dan AT86RFxx. Pada dasarnya yang membedakan masing–masing kelas
adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa
dikatakan hampir sama. Oleh karena itu, dipergunakan salah satu AVR produk Atmel, yaitu
ATMega8535/16/32.

Konfigurasi Pin ATMega8535




                                      Gambar: Pin-pin atmega8535
       Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai
berikut:
       1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.
       2. GND merupakan pin ground.
       3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC.
       4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
           Timer/Counter,komparator analog,dan SPI.
       5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,komparator
           analog dan Timer Oscillator.
       6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu komparator
           analog,interupsi eksternal,dan komunikasi serial.
       7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
       8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal.
       9. AVCC merupakan pin masukan tegangan untuk ADC.
       10. AREF merupakan pin masukan tegangan referensi ADC.
Untuk memprogram mikrokontroler dapat menggunakan bahasa assembler atau bahasa tingkat tinggi
yaitu bahasa C.
micro club dte
            Port Sebagai Input / Output Digital
        Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bi-directional dengan pilihan internal pull-up.
        Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf „x‟ mewakili
nama huruf dari port sedangkan huruf „n‟ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx.
Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1, maka
Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn
diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk
mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port
adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output
maka pin port akan berlogika 0.
        Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high
(DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0,
PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat
diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah
strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register
SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input
dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Maka harus menggunakan
kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.
Tabel Konfigurasi Pin Port




Tabel diatas menunjukkan konfigurasi pin pada port-port mikrokontroler. Bit 2 – PUD = Pull-up Disable,
bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn
dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
micro club dte
Codevision AVR

       Pemrograman mikrokontroler AVR lebih mudah dilakukan dengan bahasa pemrograman C, salah
satu software pemrograman AVR mikrokontroler adalah Codevision AVR C Compiler. Dengan C AVR
program yang telah di tulis selanjutnya di-compile agar diperoleh bentuk hexadesimal dengan bentuk file
*.hex. bentuk hexa inilah yang akan dapat di download ke mikrokontroller.

Memulai project dengan C AVR




File > New > Pilih Project > OK
Use codeWizardAVR? >NO<
Kemudian simpan project. Dan muncul jendela berikut




                                                             Pada colom C compiler, di bagian chip pilih
                                                             mikrokontroller yang digunakan (Atmega8535)
                                                             berikut juga crystal nya(12 Mhz). OK




Langkah selanjutnya yaitu, membuat file tempat penulisan source code yang ber ektensi .c. yaitu, pilih
File > New > Pilih Source > OK.
micro club dte
Kemudian, ketikkan dulu satu atau beberapa baris listing program, kemudian simpan [ File > Save ],
dengan ekstensi .c.




Langkah selanjutnya adalah meng-include file source code listing program tadi kedalam project yang kita
buat, caranya adalah.. Pilih Project > Configure




Kemudian pilih > “Add” > masukkkan/ open file ber-ekstensi .c yang tadi di save.

Menggunakan Simulator Proteus

Proteus ISIS, dapat digunakan untuk mensimulasikan program yang telah dibikin.

Tampilan awal proteus 7.6


      Memanggil
      komponen



      Start/stop
      simulation




Rangkai seperti gambar berikut. Ambil komponen, untuk mikro pilih AT90S8535 (sama dengan
atmega8535), led pilih yang aktive (warna terserah), resistor MINRES470R, dan tombol dengan button
(pilih yang aktif).
micro club dte



  Untuk mengubah value tengan
  dc, klik kanan edit properties




                                                                  Properties AT90S8535




     Untuk sumber
     tegangan, pilih
     dc




                                                                  Ubah clock frequency sesuai pada compiler
                                                                  CAVR, dan pada Program file masukkan /cari
                                                                  file .hex hasil compile program yang dibuat

Menyalakan Lampu di PORT C

Pada gambar Sistem minimum Mikrokontroler Atmega8535/16/32 diatas, PORTC dihubungkan denga
8buah led, dimana 8led tersebut terhubung common anoda (anoda bersama), sehingga saat diberikan logika
0 pada port C maka akan mendapatkan led menyala. Hal ini dikarenakan adanya beda potensial pada kaki anoda
dan katoda. Saat kita memberikan logika 1, maka Led akan padam.

Contoh Programnya:
       1. Program Menghidupkan LED di PORTC
       //Prog1: Menghidupkan LED di PortC
       #include<mega8535.h>
       void main(void)
               {
               DDRC=0xff; // inisialisasi PORTC sebagi keluaran
               PORTC=0xF0; // keluarkan data F0 di PORT C (cat:F0=11110000)
               }
micro club dte
      2. Program Menghidupkan LED
      //Prog2: Menghidupkan LED1,3,5,7
      #include<mega8535.h>
      void main(void)
             {
             DDRC=0xff; // inisialisasi PORTC sebagi keluaran
             PORTC=0xAA; // keluarkan data AA(hex) ke PORTC cat: AA=10101010
             }
      3. Program LED Berkedip (memakai delay)
      //Prog3: LED berkedip pada Port C
      #include<mega8535.h>
      #include<delay.h>
      void main(void)
             {
             DDRC=0xff; // inisialisasi PORTC sebagi keluaran
                       while(1) // perulangan yang tidak pernah terpenuhi
                       {
                       PORTC=0x00;
                       delay_ms(1000);
                       PORTC=0xff;
                       delay_ms(1000);
                       }
             }


      4. Program LED Berjalan
      //prog4: LED berjalan
      #include<mega8535.h>
      #include<delay.h>
      void main(void)
             {
             char urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
             char i;
             DDRC=0xff;
             PORTC=0Xff;
                 while(1)
                 {
                     for(i=0;i<8;i++)
                       {
micro club dte
                             PORTC=urutan[i];
                             delay_ms(500);
                             }
                       }
                   }
       Penjelasan :
            #include<mega8535.h> : Inisialisasi Mikrokontroller yang dipakai, memanggil library (
                   mempersiapkan perintah2 yang dapat digunakan saat menggunakan mikrokontroler
                   Atmega8535).
            #include<delay.h> : memanggil library delay, dimana terdapat fungsi2 delay/tunda yang
                   dapat     kita   gunakan,    seperti   delay_ms(“konstanta”)   =tunda   untuk   milisecond,
                   delay_us(“konstanta”) =tunda untuk microsecond.
            DDRn : Menyiapkan PORTn sebagai Keluaran (0xff) atau masukan (0x00)
            PORTn : Keluarkan data di PORTn
            n              : mewakili A,B,C,dan D (PORT)
       Karena common Annoda maka pada saat logika “0”, lampu LED akan menyala. Untuk
penggunaan biner, maka penulisannya adalah 0b10101010. Untuk penggunaan Hexa, maka penulisannya
adalah 0xaa.


PENEKANAN TOMBOL

       Port-port mikrokontroler dilengkapi pull up internal, sehingga kondisi default-nya adalah high.
Untuk menjadikan Port ini sebagai input, kita tinggal memberikan logika high atau membiarkannya
dalam kondisi default. Jika kita menginginkan sebuah masukan terbaca kita sebaiknya menggunakan
masukan berupa sinyal Low. Prinsip kerja Hardware ,saat kita menekan tombol SW maka signal reendah
akan dikrim ke PORTA pada mikrokontroler, Dengan demikian port ini akan mempunyai logika sesuai
dengan penekanan tombol . Kemudian akan memicu PORTC unruk mengeluarkan data.( Tergantung
Programnya bagaimana)
Contoh Programnya:
       1. Penekanan Tombol di PORTA
       #include<mega8535.h>
       void main(void)
       {
           DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
           DDRC=PORTA=PORTC=0xff;
           while(1)
               {           PORTC=PINA;
micro club dte
                };
        }
        2. Penekanan Tombol di PORTA 2
        #include<mega8535.h>
        void main(void)
        {
        DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
        DDRC=PORTA=PORTC=0xff;
        while(1)
            {
                         if (PINA.0==0) {PORTC=0x5f;}
                         else if
                           (PINA.1==0) {PORTC=0xAf;}
                         else if
                            (PINA.2==0) {PORTC=0x9f;}
                         else if
                            (PINA.3==0) {PORTC=0x6f;}
                         else
                         {PORTC=0x0f};
            }
        }
        Penjelasan:
             DDRA=0x00; // PORTA diinisialisasikan sebagai masukan
             DDRC=PORTB=PORTC=0xff;                      : PORTC sebagai keluaran. Data di PORTC dan
                 PORTB adalah tinggi semua ( 0xff ). Biner: (11111111).
             PINB.0               : Kita bisa mengakses langsung ke PIN PORTB nomor 0             ( catatan: PIN
                 dan PORT berbeda. PIN untuk satu saja kalau PORT untuk keseluruhan PIN. Satu PORT
                 ada 8 PIN )
             While (1)            : Dipakai karena agar program mengulang kembali instruksi yang berada di
                 bawahnya. Ciri perulangan while adalah dia akan terus melakukan perulangan karena
                 tidaka akan terpenuhi.
Inti penekanan Tombol adalah Membuat sebuah PORT menjadi masukan. Dan aksinya tentunya akan dilakukan di
PORT yang diset sebagai keluaran.

>>>>>>>>>>>>>>>

Tugas, buatlah program led berjalan dengan penekanan tombol, jika PINA.0 ditekan akan berjalan kekanan, jika
PINA.1 ditekan akan berjalan kekiri, jika PINA.2 ditekan akan berkedip-kedip, jika tidak di tekan kondisi led mati.

Tugas dirumah, cari artikel dan pelajari mengenai tipe data dan instruksi dalam CAVR

				
DOCUMENT INFO
Shared By:
Tags: micro
Stats:
views:3122
posted:5/1/2010
language:Indonesian
pages:9