Subscribe! Follow me! Add me Facebook! Plus me Google!

Tuesday, April 10, 2012

Clock internal pada mikrokontroler

       Mikrokontroler didesign dengan clock yang cepat hitungan perdetik (Hertz). Pada beberapa tipe board mikrokontroler sering dipasang clock eksternal atau sering disebut xtal, dengan kata lain penambahan clock xtal adalah untuk mempercepat kerja mikrokontroler. Tapi pada keadaan tertentu seperti saat kita hanya membuat program yang tidak begitu rumit atau pin xtal pada mikrokontrolernya bergabung dengan pin input output dan bisa juga pada mikrokontrolernya tidak menyediakan pin xtal, maka kita dapat menggunakan clock internal pada mikrokontrloer tersebut.

Berikut cara untuk membangunkan clock internal pada mikrokontroler.
       Biasanya setiap mikrokontroler memiliki clock internal tersendiri dan sudah terlampir pada datasheetnya. Disini yang digunakan adalah mikrokontroler jenis Atmel ATMega16.



           Lakukan konfigurasi seperti diatas. pada option Program Fuse Bit(s) jika diberi tanda centang bernilai 0 jika tidak maka bernilai 1. Pada kasus ini yang dibutuhkan adalah bagaimana kita membangunkan clock yang ada didalam mikrokontroler. clock yang disediakan sekitar 2Mhz sampai 8Mhz.
        Perubahan nilai clock yaitu tergantung CKSEL yang kita pilih, mulai dari CKSEL0, CKSEL1, CKSEL2. Untuk bit pada CKSEL yang akan menentukan berapa clock yang dibuat semuanya terlampir pada datasheet masing-masing mikrokontroler. Untuk jenis ATtiny13 biasanya yang dirubah adalah tombol CKSEL0-2, SUT0-1, dengan CKDIV.
           Setelah pemilihan bit selesai maka lakukan lah proses downloading ke mikrokontrolernya, kemudian setelah didownload lakukan proses pengecekan fuse bit agar proses yang dilakukan memang sudah benar.





Peringatan : Hati - hati jika mikrokontroler yang dipakai jenisnya tidak memiliki pin untuk xtal terus salah memilih option fuse bit, akibatnya mikrokontroler tidak dapat dipakai lagi (misal jenis ATTiny13)!

Monday, April 9, 2012

Membuat Interupsi pada ATMega16 dengan CVAVR

              Interupsi adalah suatu kondisi dimana mikrokontroller akan berhenti sementara dari program utama untuk melayani instruksi - instruksi pada interupsi kemudian kembali mengerjakan instruksi program utama setelah instruksi - instruksi pada interupsi selesai dikerjakan.
             Sistem ini jika diibaratkan pada kehidupan nyata yaitu ketika seorang pengajar berhenti menjelaskan dikarenakan ada salah seorang muridnya mengacungkan tangan untuk pergi keluar atau mengatakan interupsi dan setelah menyelesaikan interupsi tersebut pengajar tersebut melanjutkan kembali mengajarnya tetapi bukan mengulang dari awal.
            ATMega 16 menyediakan 3 interupsi eksternal, yaitu INT0, INT1 dan INT2. Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan logika (rissing edge dan falling edge) pada pin interupsi yang bersangkutan


Jenis Interup
PIN
INT0
PORTD.2
INT1
PORTD.3
INT2
PORTB.2


Terdapat dua register yang mengatur kondisi dan cara pengaktifan interup, yaitu register MCUCR dan GICR.

Register GICR
              Register GICR untuk menentukan register eksternal yang aktif.



INT1
INT0
INT2
-
-
-
IVSEL
IVCE
Bit
7
6
5
4
3
2
1
0

Bit 5 - 7 merepresentasikan bit interupsi eksternal akan aktif jika bit yang bersangkutan diberi logika 1.

Register MCUCR


SM2
SE
SM0
ISC11
ISC10
ISC10
ISC01
ISC00
Bit
7
6
5
4
3
2
1
0

Register MCUCR adalah register yang mengatur mode, seperti low level, Any change, Falling edge, Rissing edge.

Berikut cara pembuatan interupt pada Code Vision AVR :


Langkah pertama adalah buka Code vision AVR, kemudian new project kemudian pilih Tab External IRQ seperti terlihat pada gambar diatas.
Pilih interupt mana yang akan dipakai :

Jenis Interup
PIN
INT0
PORTD.2
INT1
PORTD.3
INT2
PORTB.2
Isikan program apa saja untuk melaksanakan interupsi atau memberhentikan sejenak program utama ketika ada logika 0 atau perubahan logika pada pin interupt.
Disini isi program yang akan dilaksanakan :

#define LED PORTA.0

interrupt [EXT_INT0] void ext_int0_isr(void)
{
          LED = 1;
}

disini register yang berubah :


// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR|=0x40; //bit yang aktif INT0 01000000 Pada register GICR
MCUCR=0x02; //mode yag dipilih Falling edge
MCUCSR=0x00;
GIFR=0x40;


Sunday, April 1, 2012

USB AVR910 Downloader

             ISP(In System Programming) merupakan tools yang dipakai untuk memasukan program dari komputer ke microcontroller. Biasanya, chip pendukung ISP memiliki sirkuit internal untuk menghasilkan tegangan apapun pemrograman yang diperlukan dari tegangan suplai normal sistem, dan berkomunikasi dengan programmer melalui protokol serial.
            USB AVR 910 merupakan salah satu ISP (In System Programming) atau downloader yang menggunakan system USB yang mendukung sistem operasi Windows XP, Vista, dan Windows 7.

Berikut hasil gambar dari USB AVR 910 :


Dibawah ini ada beberapa komponen yang diperlukan dalam pembuatan USB AVR 910 :

Resistor
R1, R8 – R 15 . . . . . . . . . .  330Ω
R2, R3 . . . . . . . . . . . . . . . .  68Ω
R4 . . . . . . . . . . . . . . . . . . .  12KΩ
R5 . . . . . . . . . . . . . . . . . . .  1MΩ
R6 . . . . . . . . . . . . . . . . . . .  1K5
R7 . . . . . . . . . . . . . . . . . . .  100Ω

Capasitor
C1, C2 . . . . . . . . . . . . . . . . 15pF
C3, C4 . . . . . . . . . . . . . . . . 100nF jenis MKM

Komponen Lain
U1 . . . . . . . . . . . . . . . . . . . ATMega8
X1 . . . . . . . . . . . . . . . . . . . Xtal 12 Mhz
D1 . . . . . . . . . . . . . . . . . . . IN4148
D2, D3, D4 . . . . . . . . . . . . 3mm Led
USB con . . . . . . . . . . . . . . USB Type B
ISP  con . . . . . . . . . . . . . .  Header 2 x 5

Created By Manda Kharisman