Langkah-Langkah Pemrograman AVR Atmega8535 USBASP di Linux

Jika kalian ingin melakukan pemrograman mikrokontroller AVR di Linux, jangan kuatir tidak bisa. Berikut akan saya berikan petunjuk langkah-langkahnya.

Spesifikasi

Downloader
Di tutorial ini saya hanya mengkover Downloader AVR dengan tipe USBASP. Jika kalian menggunakan downloader USBISP MKII atau yang lainnya, mungkin kalian perlu juga mencari referensi-referensi lain.

Berikut adalah Downloader yang saya pakai :

Sistem Minimum
Disini saya menggunakan sistem minimum seperti ini :


Prosesor
Saya menggunakan ATMEGA8535 dengan settingan clock default 12MHz. Jika kalian menggunakan tipe lain, silahkan cari juga referensi-referensi lain khususnya untuk mendapatkan nilai clock yang tepat.

Sistem Operasi
Saya menggunakan Ubuntu 14.04 dan Linux Mint 17.1.

Proses

1. Pertama-tama pastikan kalian sudah memiliki aplikasi-aplikasi yang diperlukan yaitu :

avr-gcc : untuk kompil file .c menjadi file obj/elf
avrdude : untuk upload file hex ke atmega
geany : untuk alat editor program dan alat untuk mempermudah proses kompil dan upload program hex.

Dan juga ada dependensi-dependensi lainnya.

Lakukan instalasinya dengan perintah berikut :

 sudo apt-get install gcc-avr avr-libc uisp avrdude libusb-dev binutils-avr geany  

2. Bukalah aplikasi Geany, lalu cobalah isikan script sederhana berikut :

 #include <avr/io.h>  
 #include <avr/delay.h>  
 void main (void)  
 {  
  DDRC=0xFF;  
  PORTC=0x00;  
   while(1)  
   {  
    PORTC=0xFF;  
    _delay_ms(100);  
    PORTC=0x00;  
    _delay_ms(100);  
   }  
 }  

Itu adalah kode program untuk menyala matikan LED di seluruh PORTC dengan selang waktu 100ms. Bisa kalian ganti dengan program apapun jika kalian mau.

Simpanlah program tersebut dimana saja dengan ekstensi .c. Misal saya menyimpannya dengan nama test.c di folder /home/rizal/AVRprojects.

3. Selanjutnya kita akan membuat proses pemrograman AVRnya, mulai dari proses kompilasi, proses linking, hingga proses membakar file HEX ke prosesor. Sebenarnya tahap-tahap untuk melakukan itu semua adalah sebagai berikut :

NB : Pastikan downloader sudah terpasang ke laptop.

Bukalah terminal, kemudian pindahlah ke direktori tempat kalian menyimpan file yang sudah kalian buat dengan Geany tadi.

 cd /home/rizal/AVRprojects  

Kemudian kompil file test.c menjadi file test.o. Gantilah bagian -mmcu=atmega8535 dengan nama prosesor yang kalian pakai dan -DF_CPU=12000000UL dengan clock yang kalian pakai. Disini saya memakai clock 12MHz dengan prosesor atmega8535.

 avr-gcc -w -Os -DF_CPU=12000000UL -mmcu=atmega8535 -c -o test.o test.c
 avr-gcc -w -mmcu=atmega8535 test.o -o test  

Kemudian lakukan linking menjadi file HEX.

 avr-objcopy -O ihex -R .eeprom test test.hex

Terakhir upload program HEX atmega

 sudo avrdude -F -V -c usbasp -p atmega8535 -P usb -U flash:w:test.hex

Jika berhasil seharusnya jika kalian hubungkan LED dengan salah satu port di PORTC pada Sysmin, maka kalian akan melihat LED berkedap-kedip secara cepat.

4. Berikutnya saya akan memberikan cara untuk mempermudah semua proses kompilasi dan upload diatas menggunakan Geany.

Pada layar Geany yang masih terbuka tadi, bukalah menu Build > Set Build Commands. Kemudian isikan script-script yang tadi pada kolom-kolom berikut :

Compile : avr-gcc -w -Os -DF_CPU=12000000UL -mmcu=atmega8535 -c -o %e.o %e.c && avr-gcc -w -mmcu=atmega8535 %e.o -o %e
Build : avr-objcopy -O ihex -R .eeprom %e %e.hex
Execute : sudo avrdude -F -V -c usbasp -p atmega8535 -P usb -U flash:w:%e.hex

Sebenarnya perintah-perintah yang kita isikan pada kolom-kolom itu adalah perintah yang sama dengan perintah kompilasi, linking, dan upload yang sudah kita lakukan pada langkah ke 3. Bedanya, untuk nama filenya kita menggunakan variable (%e) agar namanya dapat berubah-ubah sesuai dengan kita menyimpan nama filenya apa.

Jika sudah klik OK.

5. Selanjutnya jika kalian sudah selesai membuat program, tinggal tekan F8 untuk mengkompil, F9 untuk melink file menjadi file HEX. Dan terakhir tekan F5 untuk mengupload program ke Atmega. Pada saat menekan F5 kalian akan diminta memasukkan password, isikan saja seperti biasa.

Jika berhasil tampilannya kira-kira seperti berikut :

Saat tekan F8

Saat tekan F9

Saat tekan F5

Tambahan

Bagian ini bisa kalian lakukan jika kalian mengalami error : avrdude: usbdev_open(): did not find any USB device “usb” saat melakukan upload program ke atmega.

Saya berhasil mengatasi error ini dengan menambahkan idVendor dan idProduct dari Downloader saya ke UDEV. Mirip seperti langkah-langkah mendaftarkan idVendor dan idProduct saat instalasi modem venus fast2 di Ubuntu 12.04.

Caranya adalah sebagai berikut :

1. Pertama-tama dapatkan terlebih dahulu idVendor dan idProduct dari Downloader kalian :

 lsusb | grep libusb  
 Bus 002 Device 004: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb  

Disana terlihat bahwa idVendor saya adalah 16c0 dan idProduct saya adalah 05dc. Simpan angka-angka ini.

2. Buatlah file /etc/udev/avrisp.rules dengan isi sebagai berikut :

 sudo vim /etc/udev/avrisp.rules

 SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"  
 # Atmel Corp. JTAG ICE mkII  
 ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="660", GROUP="dialout"  
 # Atmel Corp. AVRISP mkII  
 ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="660", GROUP="dialout"  
 # Atmel Corp. Dragon  
 ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="660", GROUP="dialout"  
 LABEL="avrisp_end"  

Silahkan kalian ganti 16c0 dan 05dc dengan idVendor dan idProduct kalian masing-masing. Jika sudah, simpanlah file tersebut kemudian buatlah simbolic link ke direktori /etc/udev/rules.d.

 sudo ln /etc/udev/avrisp.rules /etc/udev/rules.d/60-avrisp.rules

3. Restartlah servis udev dengan perintah berikut :

 sudo service udev restart

Terakhir cabut dan colokkan kembali Downloader kalian. Seharusnya sekarang Downloader kalian sudah bisa digunakan.

Berikut adalah tampilan dari hasil program yang sudah diupload :

Semoga bermanfaat 🙂

SUMBER 1 : http://zepuutou.blogspot.com/2014/10/tutorial-pemrograman-avr-linux-avrdude.html
SUMBER 2 : http://zepuutou.blogspot.com/2014/11/Pemrograman-AVR-Di-Linux-dengan-Geany.html
SUMBER 3 : https://malsasa.wordpress.com/2014/01/11/pengantar-pemrograman-avr-di-linux-avrdude-hex-usbasp/
SUMBER 4 : http://steve.kargs.net/bacnet/avr-isp-mkii-on-ubuntu-hardy/

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.