Note for English Readers

If I write the articles in Indonesian, I will write a summary in English so that you can read my articles too. After you read the summary and you feel that you need more information about that, please do not hesitate to contact me via e-mail that can be found in my profile.

Thank you for reading my blogs.

Wednesday, October 14, 2009

USBasp

USBasp adalah sebuah USB In-circuit programmer untuk mikrokontroler AVR yang didesain oleh Thomas Fischl. Penggunaannya cukup mudah dan dapat dijalankan pada platform Linux, Mac OS X, maupun Windows. USBasp dapat men-download firmware ke internal flash dari mikrokontroler AVR yang menjadi targetnya dengan kecepatan maksimal 5 kB/s dan tersedia jumper untuk men-set USBasp agar support mikrokontroler AVR target yang mempunyai low clock speed (< 1.5MHz); biasanya, jika kita membeli mikrokontroler AVR yang baru, by default, kebanyakan AVR tersebut di-set menggunakan internal clock frekuensi 1MHz (untuk mengubah setting clock ini, Anda harus memprogram LFUSE, HFUSE, dan/atau EFUSE; silakan lihat datasheet dari mikrokontroler AVR yang digunakan untuk lebih rincinya).

Berdasarkan skema rangkaian dari Thomas Fischl, saya membuat artwork PCB untuk USBasp yang nantinya saya, beserta Laboratorium Otomasi dan Sistem Embedded, Jurusan Teknik Elektro, Universitas Surabaya, gunakan untuk men-download firmware ke internal flash dari mikrokontroler AVR, seperti untuk praktikum mata kuliah Mikrokontroler dan proyek pembuatan intelligent robot. (hardware robot yang digunakan pada Ubaya Robosoccer Competition 2009 dikembangkan menggunakan mikrokontroler AVR). Program yang saya gunakan untuk menggambar ulang skema rangkaian serta membuat artwork PCB-nya adalah gEDA dan pcb, suatu GPL'ed Electronic Design Automation Suite yang sangat layak diandalkan, dan terlebih lagi (dan yang paling penting), program ini berjalan di atas platform Linux. Gambar berikut ini menunjukkan tampilan gEDA dan pcb untuk pembuatan USBasp.



Setelah dicetak dan disolder seluruh komponennya, serta, firmware USBasp telah di-download-kan ke ATmega8 yang digunakan pada USBasp ini, maka hasil akhirnya dapat dilihat pada gambar berikut ini:



USBasp in action menggunakan AVRDude sebagai ISP Software:



Jika Anda tertarik untuk memperoleh USBasp yang siap pakai atau masih dalam bentuk belum disolder, silakan menghubungi saya via e-mail untuk informasi lebih lanjut. Alamat e-mail saya dapat dilihat pada Profile saya.

Solusi jika USBasp tidak dapat digunakan oleh user biasa di Linux
Jika pada saat Anda menggunakan USBasp sebagai user biasa di Linux, ternyata USBasp Anda tidak dapat digunakan, tetapi saat Anda sebagai root atau superuser, ternyata USBasp tersebut dapat digunakan, berarti Anda sebagai user biasa tidak mempunyai hak akses ke USBasp. Solusi untuk masalah ini cukup mudah. Anda harus membuat file baru dengan nama 99-usbasp-rules pada direktori /lib/udev/rules.d yang isinya sebagai berikut:

# allow users to claim the device
ACTION=="add" SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE="0664", GROUP="plugdev"

untuk idVendor dan idProduct dapat Anda ketahui melalui command: lsusb (dengan catatan Anda sebagai root atau superuser dan USBasp Anda terhubung ke PC/Laptop). Setelah file tersebut di-save, re-plug USBasp Anda dan Anda akan mempunyai hak akses ke USBasp. Jangan lupa, pastikan user biasa tersebut telah menjadi group member dari plugdev.

Referensi:


Summary:
This article shows USBasp, a USB in-circuit programmer for Atmel AVR Controllers, designed by Thomas Fischl. I have created PCB artwork for USBasp using gEDA and pcb, a GPL'ed Electronic Design Automation Suite that is running on Linux, then have applied it to all activities/projects related to AVR microcontroller in my laboratory,  such as laboratory session for my students and intelligent robot developments.

If your USBasp cannot be used by user, but it can be detected and used by root, you have to add an udev rule in directory /lib/udev/rules.d through these steps (as a superuser or root):
  • create new file: 99-usbasp-rules 
  • add these lines below to the file (you can obtain idVendor and idProduct by lsusb command as root and make sure your USBasp connected to your PC/laptop):
ACTION=="add" SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE="0664", GROUP="plugdev"
  • save the file
  • copy it to /lib/udev/rules.d (note: you must be a root to do this)
  • re-plug your USBasp
Now, you can use your USBasp in user mode.

No comments: