About

Ahmad Edi Saputra

Wednesday, December 31, 2014

Akses Interupsi Eksternal AVR ATMega

Interrupt merupakan proses penyelaan proses kerja prosessor karena adanya routine yang harus di dahulukan. sebelum adanya interrupt, biasanya microprocessor akan terbebani dengan sistem polling, dimana prosessor akan memeriksa terlebih dahulu seluruh siklus rutin-rutin yang harus didahulukan. setelah adanya interrupt, seluruh proses polling dibebankan kepada hardware atau peripheral tambahan(pada AVR dan beberapa mikrokontroler) yang membutuhkan eksekusi segera. prosessor tetap menjalankan siklus secara normal tanpa memeriksa setiap routin yang membutuhkan interrupt, routine lah yang memberi informasi kepada processor bahwa routine tersebut membutuhkan prioritas eksekusi segera sehingga prosessor mengerjakan routine interrupt tersebut. setelah selesai prosesor akan mengerjakan program utama secara normal kembali.

Pada AVR ATMega32 terdiri dari interupt hardware(interrupt eksternal) dan interrupt software(polling virtual atau timer interrupt). Interrupt eksternal adalah pin eksternal yang dapat menginterrupt prosessor jika terjadi perubahan logika di pin tersebut. Interrupt ini akan dieksekusi prosessor sesuai dengan prioritas pada vektornya. Artinya, jika prosessor sedang mengeksekusi sebuah interrupt yang memiliki prioritas tinggi, maka prosessor tidak akan melayani permintaan interrupt yang memiliki prioritas lebih rendah. prioritas tertinggi berada pada nomor vektor terkecil

dari tabel diatas maka interrupsi tertinggi adalah interupsi reset.

Pin interupsi eksternal pada ATMega yaitu
1. INT0
2. INT1
3. INT2

untuk INT0 dan INT1, interupsi dapat disebabkan (dipicu) oleh rising edge(transisi logika naik, dari low menuju high) falling edge(transisi logika turun, dari high menuju low), maupun setiap terjadi perubahan logika pada pin tersebut. sedangkan untuk INT2 hanya falling dan rising edge.

berikut contoh pembuatan program interupsi eksternal dengan code wizard CVAVR
generate wizard tersebut maka akan muncul seperti beriku

ganti "//place your code here" dengan perintah yang ingin di jalankan setelah adanya interupsi. untuk lebih lengkapnya silahkan download contohnya disini

Akses LCD 16x2 dengan AVR

lcd 16x2 mimal membutuhkan 7 jalur data.

pengkaabelanya dapat dilakukan sebagai berikut



1.GND ------------------------->0VDC
2.VCC-------------------------->5VDC
3.CONTRAS------------------>pulldown 1k
4.RS---------------------------->PORTB.0
5.R/W-------------------------->PORTB.1
6.E------------------------------>PORTB.2
7.D0---------------------------->NC
8.D1---------------------------->NC
9.D2---------------------------->NC
10.D3--------------------------->NC
11.D4--------------------------->PORTB.4
12.D5--------------------------->PORTB.5
13.D6--------------------------->PORTB.6
14.D7--------------------------->PORTB.7
15.ANODA LED------------->PORTB.3---->biasanya untuk backlight LCD, bisa langsung d sambung VCC agar backlight langsung menyala, atau ground agar backlight mati
16.GND------------------------>0VDC



untuk pemrogramanya dapat menggunakan code wizard yang disediakan oleh code Vision
langsung saja pada code wizardnya pilih tab Alphanumeric LCD atur lah port yang digunakan seperti gambar berikut


setelah mengatur konfigurasi diatas, generate program seperti biasanya. maka akan muncul include library "alch.h". Library ini memiliki fungsi-fungsi yang sering digunakan diantaranya

lcd_init(jumlah_karakter);

fungsi ini digunakan untuk inisialisasi penggunaan pin atmega yang tersambung dengan pin LCD. secara otomatis CVAVR akan menggenerate pin-pin tersebut sebagai output dan membuat definisi untuk pengaksesan lebih lanjut. Isi dari fungsi ini akan terlihat jika kita membuka file assembly setelah dicompile

lcd_gotoxy(x,y);

karena lcd 16x2 memiliki 16 kolom yang di anggap berada di sumbu x dan 2 baris yang berada pada sumbu y. maka lcd memiliki koordinat x dan y sebagai representasi kolom dan baris. sumbu x dimulai dari x=0 sampai x=15, dan y=0 sampai y=1;
pencetakan karakter harus diberikan koordinat yang tepat, sehingga fungsii ini harus di panggil sebelum mencetak karakter ke LCD

lcd_puts(char *str);

fungsi ini digunakan untuk mencetak string(beberapa karakter) yang tidak tersimpan dalam flash. biasanya digunakan untuk string yang di peroleh dari perhitungan uji logika maupun operasi aritmatika lainya

lcd_putsf(constant char * str)

fungsi ini untuk mencetak string constant, bukan hasil operasi. sehingga fungsi ini cocok untuk mencetak string yang tidak perlu perubahan(tetap/konstan).

lcd_clear();

untuk menghapus seluruh karakter yang tercetak di lcd.

untuk lebih jelasnya silahkan download contoh dan simulasinya di proteus disini

Arduino dan Modul FSK nRF24l01

nRF24l01 merupakan modul wireless yang bekerja pada band 2,4GHz menggunakan modulasi FSK. modul ini mudah didapatkan dan harganya murah

untuk dapat menggunakanya. download library-nya di GITHUB.COM lalu ekstrak dan pindahkan ke folder libraries pada program IDE Arduino

Arduino dan Modul Bluetooth BTM232

BTM232 merupakan bluetooth kelas 1 yang mudah digunakan karena memiliki interface serial UART. Secara default, modul ini memiliki baudrate 19200. 

int RESET=9,LED=13;
void setup(){
      pinMode(RESET,OUTPUT);
      pinMode(LED,OUTPUT);
      digitalWrite(RESET,LOW);
      Serial.begin(19200);//pengaturan baudrate
}

void loop(){
      if(Serial.available()){
            char data = Serial.read();//membaca data serial dari bluetooth
            if(data=='M'){
                  digitalWrite(LED,LOW);//mematikan LED
            }
            if(data=='H'){
                  digitalWrite(LED,HIGH);//menyalakan LED
            }
      }
}

Pengenalan Arduino


Situs resmi Arduino (http://arduino.cc) menyebutkan bahwa Arduino merupakan sebuah sarana untuk membuat komputer yang lebih mampu merasakan dan mengendalikan unsur fisik dunia dibandingkan dengan komputer dekstop. Sebuah platform komputasi open-source dengan board mikrokontroler sederhana dan IDE untuk membuat perangkat lunak modul tersebut.

Arduino Memiliki IDE yang gratis dan dapat diunduh di sini. silakan download versi windowsnya, jika anda tidak menjadi administrator di laptop anda, maka download IDE yang arsipkan dalam format ZIP. maka IDE dapat anda simpan dimana pun, termasuk di flashdrive.

Arduino memiliki banyak jenis, mulai dari Arduino yang menggunakan mikrokontroler AVR sampai ARM. semua perintahnya sudah disesuaikan menjadi satu core Arduino itu sendiri sehingga kita tidak perlu mempelajari banyak register untuk setiap mikrokontroller. Arduino juga memiliki banyak support forum yang akan mempermudah kita mempelajari hal-hal baru didunia sistem tertanam.

Pada pemrogramanya, Arduino hanya membutuhkan dua fungsi dasar yaitu "setup" dan "loop". 
setup digunakan untuk melakukan konfigurasi arduino itu sendiri seperti deklarasi input dan output pin pada arduino yang akan digunakan. fungsi ini hanya akan dieksekusi satu kali diawal. sedangkan fungsi loop digunakan untuk melakukan pekerjaan-pekerjaan yang berulang-ulang. seperti menggerakan motor bolak-balik secara terus menerus sampai catudaya diputus.

berikut contoh program untuk menghidupkan led user yang ada pada board arduino uno yang tersambung pada pin digital nomor 13.


//definisi untuk pin digital nomor 13 yang tersambung dengan led user
#define led  13

//fungsi untuk konfigurasi arduino dan hanya dieksekusi 1kali
void setup(){
//atur pin 13 sebagai output yaitu led
pinMode(led,OUTPUT);

//fungsi loop digunakan untuk melakukan rutin terus menerus
void loop(){
//menghidupkan led user pada board
digitalWrite(led,HIGH);
}