Sunday, March 9, 2014

Program "Hello world" dengan XMEGA

Mengapa program "Hello world"?
Biasanya jika kita belajar pemrograman maka contoh pertama yang diberikan adalah menulis "Hello world" pada I/O, Monitor atau Printer. Nah, kalo pada mikrokontroler akan sangat sulit jika harus mengeluarkan tulisan "Hello world" ke Monitor. Bahkan untuk mengeluarkan tulisan "Hello world" ke LCD  membutuhkan keahlian menengah.

Untuk mikrokontroler program "Hello world-nya" adalah program hidup matikan LED, atawa bahasa kerennya Flip-flop.
"Halah, kalo cuma bikin Flip-flop ngapain pakai xmega, Mas?!".
Itulah komentar generasi serba instan, yang maunya nyentuh mikro terus bisa bikin alat/aplikasi yang wah. Kalo memang itu maunya, yawis, beli saja modul 'made in Italy' yang versi Cinanya Rp190ribuan terus download program yang diinginkan di internet, jadi deh :) :P

Sudah deh ngocehnya, kita langsung praktek saja :D. Pada tulisan ini program ditulis dalam bahasa C menggunakan aplikasi AVR Studio 4.18 dan compiler AVR GCC.

Yang anda butuhkan untuk memulai membuat program adalah,
Sofware:

1. Program compiler (AVR Studio 4.18)
Anda dapat menggunakan BASCOM, COVIS, dll, tentu anda sudah sering menggunakan compiler-compiler tersebut untuk AVR. Compiler-compiler tersebut sudah support xmega. Dalam kesempatan ini saya menggunakan AVR Studio 4.18. AVR Studio tidak support untuk beberapa seri xmega. Untuk generasi xmega baru seperti seri E, anda dapat menggunakan ATMEL Studio. ATMEL Studio adalah aplikasi yang lengkap untuk semua produk ATMEL, tetapi membutuhkan spesifikasi hardwer PC yang lebih.

2. WINAVR atau AVR GCC. saya menggunakan WinAVR-20100110 dapat anda download di http://sourceforge.net/projects/winavr/files/WinAVR/20100110/

3. Program downloader (Univ PDI&ISP  ver.1.0)
Anda dapat menggunakan downloader xmega yang lain semisal AVRISP mkII, JTAGICE mkII dan lain-lain. Tetapi jika anda menggunakan Univ PDI&ISP anda harus menggunakan program bawaannya yaitu Program Univ PDI&ISP  ver.1.0.

Hardware:
1. Downloader Univ PDI&ISP
Anda dapat menggunakan Univ PDI&ISP atau dapat menggunakan yang lain.


2. Minimum sistem xmega
Mungkin belum banyak minimum sistem xmega dijual dinegara kita, tidak seperti minimum sistem megaAVR. Salah satu minimum sistem yang sebentar lagi dijual di Indonesia adalah mini_xmega16/32. Minimum tersebut sudah termasuk Downloader Univ PDI&ISP, jadi anda tidak butuh downloader xmega lagi jika anda menggunakan minimum ini.

Jika anda belum bisa menyediakan minimum sistem, tidak mengapa. Anda dapat membuat minimum sendiri. Xmega belum tersedia dalam packaging DIP, dan yang mungkin kita buat secara manual minimum sistenya adalah yang dalam packaging TQFP. berikut ini gambar minimum ATxmega32D4 TQFP dengan bahan-bahan yang mudah didapat.


Minimum ini dibuat dengan karton bekas bungkus susu balita, isolasi bolak-balik, kabel serat tunggal berisolasi, LED, Resistor, Capasitor, IC penurun tegangan AMS1117 -3.3V dan Header 4pin.  Tutorial membuat minimum sistem ini InsyaAlloh saya bahas tersendiri dalam blog ini.
Berikut ini gambar rangkaiannya. 



Urutan Headernya adalah:
  1. GND (Ground)
  2. VCC (Sumber tegangan 5-3.6V)
  3. RST (Reset)
  4. PDI (Program and Debug Interface) 
Selanjutnya buka AVR Studio.
pilih 'New Project'


pilih 'AVR GCC', tentukan lokasi penyimpanan, tulis Project name (dalam contoh diberi nama 'main'), lalu tekan tombol 'Next>>'


pilih 'AVR Simulator 2', lalu pilih mikrokontroler yang digunakan (dalam contoh ATxmega32D4), lalu tekan tombol 'Finish'


dan inilah tampilan AVR Studio dengan file 'main.c' yang terbuka.

Tulis potongan program di bawah ini pada editor file 'main.c'

Karena kita menggunakan I/O maka 'avr/io.h' harus di-include, dan kita juga menggunakan subrotin _delai_ms(x) maka 'delay.h' yang berada pada direktori util di-include-kan.
Memulai program kita lakukan inisialisasi terhadap DIR (direction atau arah) PortA dan PortB. dalam program di atas DIR sebagai Output. Kemudian PortA dan PortB di SET, atawa PortA dan PortB mengeluarkan logika High.
Pada loop program, dibuat PortA.0 dan PortA.1 hidup dan mati bergantian.

Xmega dari awal akan menggunakan sumber clock internal 2MHz. Kita dapat mengalihkan ke sumber clock yang lain pada inisialisasi program. Subrotin '_delai_ms(x)' dapat bekerja dengan tepat jika 'Compiler Option' untuk Frekuensi Xtal disertakan. Caranya adalah tekan tombol 'Edit Current Configuration Option', atau yang dilingkari merah pada gambar di bawah.



Isi kolom 'Frequency' dengan 2000000 hz yang berarti 2Mhz. lalu tekan tombol 'OK'
Setelah itu compile program dengan menekan tombol 'Build Active Configuration' atau tekan F7.
Pastikan tidak terdapat pesan error atau warning pada cendela 'Build'.

Sampai dengan proses ini program anda telah di-compile dan sudah dibuat file 'main.hex'. File ini yang selanjutnya dapat anda download ke xmega dengan bantuan Univ PDI&ISP.

Hubungkan minimum mikro ke Univ PDI&ISP, hubungkan Univ PDI&ISP ke PC.

Jalankan program Univ PDI&ISP, lalu Tekan tombol 'Load Flash'. Dari folder tempat anda menyimpan project buka folder 'default'. Pilih file 'main.hex' seperti gambar di bawah, lalu tekan 'Open'.

Setelah itu anda dapat menekan tombol 'Write Flash' untuk proses download program ke xmega.

Selamat, Selesai deh downloadnya :)

Anda juga dapat menggunakan fungsi 'Auto Prog' agar mempermudah proses download selanjutnya jika anda melakukan editting program.
Langkah yang diperlukan adalah mencentang fungsi-fungsi apa saja yang ingin dilakukan pada saat Auto Prog pada Tab 'Setting' kelompok 'Auto'. Default-nya adalah 'Reload FLASH', 'Erase Device', 'Program FLASH', 'Verify FLASH'. Anda dapat mencentang fungsi-fungsi lain yang anda butuhkan.
Selanjutnya setiap anda menekan tombol 'Auto Prog' maka Univ PDI&ISP akan melakukan fungsi-fungsi yang telah anda centang tadi.

Karena semua fungsi dalam proses download sudah terangkum  dalam satu tombol yaitu 'Auto Prog', maka form Univ PDI&ISP dapat anda perkecil agar tidak memenuhi layar monitor anda. Tombol 'Min' dapat anda tekan untuk memperkecil form Univ PDI&ISP.

Anda dapat mengedit program anda, meng-compile dan download program cukup dengan menekan tombol 'Auto Prog'.

berikut ini video hasil download mikro xmega dengan Univ PDI&ISP









Baca SelengkapnyaProgram "Hello world" dengan XMEGA

Saturday, March 8, 2014

PC Program Univ PDI&ISP

berikut ini link Programnya
Setelah anda berhasil mengistal hardware, selanjutnya hubungkan 
minimum -> downloader -> PC


Gambar menghubungkan minimum -> downloader -> PC. atas untuk AVR dan MCS51, bawah untuk xmega

Buka program Univ PDI&ISP.Jika mikro dapat dikenali maka ID (signatur)  akan ditampilkan pada memo. Pada contoh di bawah ID yg didapatkan ATxmega16E5. Jika tidak ditemukan coba klik tombol ‘ID micro’ untuk scanning mikro kembali. Hal yang sama dapat anda lakukan untuk mikro AVR dan MCS51. Downloader ini akan secara otomatis berpindah dari mode PDI ke mode SPI tanpa khawatir masalah tegangan kerja yg berbeda. xmega bekerja pada tegangan 1.6-3.6V sedangkan AVR dan MCS51 hingga 5V.



Gambar form sofware Univ ISP&PDI


Anda dapat menulis, membaca, menghapus Flash, EEPROM, User Signatur, Lock&Fuse secara individu lewat tombol-tombol yang berada ‘page control’ masing-masing.
Contoh jika ingin menulis Flash tombol yang harus di klik adalah;
‘Load Flash’ -> load hex file -> ‘Write Flash’
Jika ingin menghapus Flash;
‘Erase Chip’
(yang juga akan menghapus EEPROM tapi tidak menghapus User Signatur)
Jika ingin membaca Flash;
‘Read Flash’
'Clear Bu F..' untuk menghapus buffer file Hex pada buffer PC dan
'ReLoad F..' untuk Load ulang file Hex dengan nama yang sama dengan file Hex terakhir yang di ‘Load Flash’.
Hal yang sama dapat anda lakukan untuk EEPROM dan User Signatur.
Lock&Fuse dapat dibaca dan di tulis pada page control Lock&Fuse1 dan Lock&Fuse2. Anda tinggal mengatur check box tempat Lock&Fuse yang diinginkan. Selain check box juga disertai hexsa Lock&Fuse yang akan ditulis ke mikro jika check box di ubah, sehingga mempermudah setting Lock&Fuse.

Selain dapat melakukan proses download secara manual, dari Load Flash, Write Flash, Load EEPROM dan lain-lain, juga dapat dilakukan secara otomatis. Cara ini akan melakukan proses dari check ID (Signatur), reload Flash dan EEPROM, hapus, tulis, verify hingga menulis Lock&Fuse dan auto insert.
Pertama-tama kita harus melakukan Load file hex Flash dan file hex EEPROM, sehingga jika terjadi proses reload program akan melakukan loading ulang file hexa dengan nama yang sama. Tombol ‘Auto Prog’ akan melakukan proses download secara otomatis terhadap langkah-langkah di atas sesuai dengan check box pada kelompok Auto yang tercentang.

Group ‘Micro’ pada page control setting digunakan untuk setting mikrokontroler baru jika belum didukung program ini, baik MCS51, AVR atau Xmega.

Auto insert digunakan untuk memberikan nomor serial pada Flash atau EEPROM. Auto insert akan melakukan incremen atau decremen otomatis yg berguna dalam pemrograman mass product. Fungsi ini akan dibahas pada bab tersendiri.

Tombol ‘Min’ digunakan untuk minimize program. Form minimize akan menyisakan memo, tombol Clear Report dan Auto Prog. Form program yang minimize akan membuat program tidak memenuhi tampilan monitor PC, dan jika Auto telah anda setting maka proses download mulai Load Flash, Program Flash dan lain-lain dapat dilakukan hanya dengan menekan tombol AutoProg.



Baca SelengkapnyaPC Program Univ PDI&ISP

Driver Univ PDI&ISP

Link download driver 
Univ ISP&PDI menggunakan driver libusb USB yang sama digunakan oleh USBASP, sehingga jika USBASP sudah terinstal pada PC maka Univ ISP&PDI akan dikenali sebagai USBASP. Jadi jika USBASP sudah terinstal pada PC maka proses instal tidak perlu dilakukan. Anda tinggal tancap Univ ISP&PDI ke PC dan jalankan programnya. Driver ‘libusb’ digunakan karena libusb ini adalah driver yang telah disertifikasi sehingga dapat digunakan pada window 64bit, baik win7 maupun win8.
Berikut ini langkah-langkah instalasi:
  1. Hubungkan Univ ISP&PDI ke port USB dan tunggu hingga terdapat pesan: 



Pesan tidak sukses menginstal kita hiraukan saja dan lanjutkan ke langkah selanjutnya.
Kalo pada windows XP
Cancel proses instalasinya
 

  1. Buka Aplikasi ‘Zadig’


Karena ‘Univ ISP&PDI’ dikembangkan dari ‘USB Simple I/O’ maka pastikan ada pilihan ‘USB Simple I/O’ dan ‘libusb-win32(v1.2.6.0)’, lalu tekan “Install Driver”.

Selesai sudah proses instalasi driver. Langkah ini sama untuk semua Windows













Baca SelengkapnyaDriver Univ PDI&ISP

Friday, March 7, 2014

Universal PDI dan ISP (Univ PDI&ISP)

Univ PDI&ISP adalah downloader yang diproduksi oleh ADP Product. Univ PDI&ISP ini dapat digunakan untuk download program ke ATxmega, AVR dan MCS51 produksi dari ATMEL. Univ PDI&ISP merupakan downloader mikrokontroler xmega paling murah hingga saat tulisan ini dibuat. Xmega adalah mikro keluarga baru dari AVR. mikro ini menawarkan kecepatan dan fitur yang lebih dibanding anggota keluarga AVR yang lain. Dari sisi harga, xmega juga menawarkan harga yang lebih murah dari megaAVR ataupun tinyAVR.

Kendala selama ini adalah masalah download program ke mikro xmega. Mikro xmega menggunakan interface PDI (Program and Debug Interface) sedangkan anggota keluarga AVR yang lain menggunakan interface SPI (Serial Peripheral Interface). Untuk downloader SPI cukup banyak tersedia semisal UnivISP, USBASP, dll. Bahkan bikin sendiri juga bisa. Sedangkan untuk downloader PDI sampai hari ini harus menggunakan minimal Atmel AVRISP mkII (asli dari ATMEL), yang harganya di Indonesia Rp510.000,-.

Mengapa harus ganti dari SPI ke PDI?
Teknologi baru tentu menawarkan lebih, begitu juga PDI. PDI menawarkan kecepatan download program ke mikro yang lebih cepat dari SPI. SPI memerlukan 5 kabel interface, yaitu; MISO, MOSI, SCK, RST dan GND, sedangkan PDI hanya memerlukan 3 kabel interface, yaitu; PDI, RST dan GND. Untuk keuntungan tersebut ATMEL merubah interface download pada keluarga AVR ke PDI.

PIN Univ PDI&ISP 
Univ PDI&ISP menyediakan 5 PIN untuk interface programmer ke mikro kontroler, satu konektor USB dan 2 PIN kelengapan jika dibutuhkan. 2 PIN tersebut adalah Vcc dan xtal1.


Univ PDI&ISP beserta PIN-PIN yang disediakan

5 PIN digunakan jika Univ PDI&ISP sebagai downloader megaAVR, tinyAVR, classicAVR atau MCS51, seperti gambar berikut


 Univ PDI&ISP sebagai downloader megaAVR, tinyAVR, classicAVR atau MCS51

sedangkan 3PIN digunakan jika Univ PDI&ISP sebagai downloader xmega, seperti gambar berikut




Univ PDI&ISP sebagai downloader xmega


2PIN yang lain adalah PIN-PIN kelengkapan, artinya jika anda membutuhkan dapat digunakan. PIN-PIN tersebut dari perakitan memang tidak disertakan header untuk mempertahankan kepraktisan. Univ PDI&ISP dapat masuk ke kantong baju anda dengan mudah, tetapi jika PIN-PIN tersebut dipasang maka Univ PDI&ISP akan tersangkut dikantong anda :).

PIN Vcc adalah PIN yang menyediakan tegangan VCC 5.25V-4.4V yang terhubung langsung dari sumber Vcc USB. PIN xtal1 adalah PIN yang menyediakan external clock 2.5MHz. External clock ini dapat digunakan jika fuse mikrokontroler AVR tersetting untuk external clock. Dengan kata lain sumber clock ini dapat digunakan sebagai napas buatan jika mikrokontroler mati suri :). Caranya adalah dengan menghubungkan PIN ini dengan PIN xtal1 pada mikrokontroler.


Jangan lupa xmega mempunyai tegangan kerja 1.6V-3.6V. 









Baca SelengkapnyaUniversal PDI dan ISP (Univ PDI&ISP)