RSS

Category Archives: AVR

Hello World board HIJI(www.ngooprek.com), clone Arduino Duemilanove.

Alhamdulillah salah satu board HIJI, yaitu clone Arduino Duemilanove telah siap di Ngooprek. Berikut penampakan dari board HIJI:

Tanda kotak merah ialah fasilitas untuk intefacing dengan servo. Ya, anda bisa langsung mengkoneksikan motor servo ke board HIJI dan langsung mulai mengontrolnya.

Read the rest of this entry »

 
1 Comment

Posted by on July 17, 2012 in Arduino, AVR, Tutorial

 

USB to Serial menggunakan ATmega32u4 dan LUFA

Board

Setelah berhasil menjalankan bootloader CDC dari LUFA, saya mencoba salah satu project LUFA yaitu USB to Serial.

Setelah oprek sana oprek sini, ternyata ada patch yang harus diterapkan agar program berjalan dengan baik.

Setelah mengaplikasikan patch dan sedikit mengubah deskripsi usb yang digunakan ketika proses enumerasi, akhirnya muncul gambar-gambar di bawah ini.

Read the rest of this entry »

 
Leave a comment

Posted by on January 29, 2012 in AVR

 

Tags: ,

ATmega32U4 LUFA DFU CDC Bootloader Fuse Bit

Akhir-akhir ini saya bereksperimen dengan ATmega32U4. Saya iseng membuat breakout board dengan referensi board berasal dari Adafruit dan Teensy. Board ini ialah PCB pertama yang saya desain menggunakan Eagle, dan setelah lebih dari 3 tahun tidak membuat PCB lagi. Oke, saya akan sharing bagaimana cara menggunakan board sejenis ini dengan mikro AVR yang memiliki USB. Chip ini memiliki factory bootloader yang dinamakan DFU (Device Firmware Update). DFU ini dapat digunakan bersama FLIP untuk upload firmware anda ke mikro. Dengan mekanisme ini, anda tidak perlu menggunakan programmer seperti USBasp. Hati-hati ketika anda menggunakan programmer, karena bootloader ini akan langsung terhapus ketika proses chip erase. Jika anda tidak dapat menemukan file hex DFU untuk ATmega32U4 dari atmel, maka ada opsi lain yaitu menggunakan LUFA CDC Bootloader. Langkah-langkah untuk menggunakannya ialah:

Read the rest of this entry »

 
1 Comment

Posted by on January 27, 2012 in AVR, Tutorial

 

Tags: , , , ,

Compiling Freertos Menggunakan WinAVR Dan Eclipse

Pada tutorial ini, anda dapat mengikuti langkah-langkah untuk membuat project awal pada Eclipse melalui tautan ini. Goal yang ingin dicapai ialah membuat LED D1 dan D2 yang terhubung pada PA0 dan PA1 berkedip-kedip dengan interval yang tetap. D1 akan berkedip 2 kali lebih cepat daripada D2. Persiapan File-file Source Code Berilah nama freertos_blinking sebagai nama project. Anda dapat mengunduh main_config.rar yang berisi file main.c dan FreeRTOSConfig.h. Copy file main.c dari main_config.rar pada project tersebut. Nama apapun sebenarnya tidak masalah selama terdapat fungsi main() di dalamnya.

Read the rest of this entry »

 
3 Comments

Posted by on January 2, 2012 in AVR, RTOS, Tutorial

 

FreeRTOS

FreeRTOS ialah Real-Time OS yang banyak digunakan di perangkat embedded. FreeRTOS telah banyak di-port ke arsitektur-arsitektur yang terkenal. AVR pun menjadi arsitektur yang telah mendapatkan port tersebut. Selain FreeRTOS, terdapat beberapa RTOS lain yang bisa jalan di atas AVR terutama yang 8–bit. RTOS itu ialah uSmartX dan Femto OS. Ketiga RTOS ini telah saya coba jalankan dengan menggunakan simulator Proteus dan berhasil. Untuk dua RTOS terakhir belum saya eksplorasi lebih dalam. Mengapa FreeRTOS? Inilah alasan-alasan mengapa saya memilih FreeRTOS untuk dijalankan di atas AVR:

  1. Kecil dan sederhana. Hanya 3 file source code. Sehingga cocok untuk para hobiis yang masih awal terhadap RTOS.
  2. Memberikan satu solusi dan environment untuk berbagai macam arsitektur. Proses migrasi arsitektur pun bisa lebih mudah.
  3. Konsumsi ROM dan RAM yang minimal. Binary kernel RTOS tipikalnya akan menghabiskan area sebesar 4 – 9 KByte.
  4. Gratis untuk digunakan pada project komersial (lihat bagian lisensi untuk lebih detailnya).
  5. Terdapat contoh yang bisa langsung dijalankan.
  6. Dokumentasi yang dibilang lengkap.
  7. Support berupa forum yang gratis dan lengkap
  8. Telah banyak digunakan dan mapan.

Berikut adalah langkah-langkah untuk memulai dengan FreeRTOS dan AVR.

Read the rest of this entry »

 
2 Comments

Posted by on January 1, 2012 in AVR, RTOS

 

Tags: ,

AVR + RTOS

Apa yang terbayang ketika mendengar RTOS? Makhluk aneh yang terkadang muncul di sela-sela pengembaraan, teruama ketika sedang ‘googling’ dengan tema-tema tertentu.

Oke, saya mulai pembahasan mengenai RTOS ini. Kepanjangan dari RTOS ialah Real-Time Operating System. Dari kepanjangannya sendiri bisa diartikan sistem operasi yang dibuat untuk dapat melayani permintaan aplikasi yang sifatnya real-time.Aplikasi real-time memiliki karakteristik berupa garansi akan waktu respon terhadap kejadian/event yang terbatas(strict time constraint).

Menurut Wikipedia, RTOS memiliki karakteristik kunci berupa level konsistensi mengenai jumlah waktu yang dibutuhkan untuk menerima dan menyelesaikan task/tugas aplikasi. Variabilitas dari level konsistensi ini dinamakan jitter. Dari jitter ini dapat diturunkan lagi menjadi Hard RTOS dan Soft RTOS. Hard RTOS memiliki jitter yang lebih rendah daripada Soft RTOS.

Kunci utama desain RTOS bukan pada throughput yang tinggi, melainkan garansi akan kategori performa berupa soft atau hard. Sebuah RTOS yang secara umum/general dapat memenuhi deadline ialah soft RTOS, namun jika RTOS tersebut dapat memenuhi deadline secara deterministik maka dikatakan hard RTOS.

RTOS memiliki algoritma scheduling yang advance. Faktor kunci RTOS ialah interrupt latency yang rendah dan thread switching latency yang minim. Sebuah RTOS akan memiliki nilai lebih/tambah jika memiliki respon yang cepat dan terprediksi pada sejumlah kerja yang dapat dilakukan dalam periode waktu yang diberikan.

Secara umum, tujuan penggunaan RTOS ialah agar sistem bisa memberikan respon yang cepat dan terprediksi pada kejadian-kejadian(input) yang terjadi.

Sampai sini, mungkin anda masih bertanya-tanya atau semakin bingung dengan RTOS. Bagus! Artinya anda sudah selangkah lebih maju. Mari kita lanjutkan penjelasannya dengan menggunakan contoh. Pada tulisan selanjutnya saya akan menggunakan AVR tipe ATmega32 dan FreeRTOS.

Seri tulisan tentang AVR ATmega32 dan FreeRTOS:

1. FreeRTOS, download source code dan file-file utamanya.

2. Compiling Freertos Menggunakan WinAVR Dan Eclipse

Tags: ,
 
2 Comments

Posted by on January 1, 2012 in AVR, RTOS

 

Tags: ,

AVR Fuse Bit

Sebagian besar pengguna AVR masih mengalami kesulitan dalam menggunakan setting fuse bit pada AVR. Salah setting nilai bisa berakibat AVR tidak bisa diprogram lagi(memory lock), dan yang paling buruk ialah AVR tidak dapat digunakan kembali(AVR bricked).

Saat pertama kali melakukan setting fuse bit, saya juga mengalami kesulitan-kesulitan. Kesulitan itu ialah:

  1. Setting sumber clock AVR beserta pilihan-pilihan besaran clock tersebut
  2. Setting AVR compatibility (ATmega103 pada ATmega128)
  3. Setting bootloader
  4. Setting hilangkan fungsi RESET pada PC6 (ATmega8)
  5. dsb

Nilai fuse bit pada AVR disimpan pada memory yang secara default bernilai logic ‘1‘. Istilah Programmed/Enabled ialah menulis logic ‘0‘ pada fuse bit. Begitu pula sebaliknya, logic ‘1‘ pada fuse bit berarti Unprogrammed/Disabled.

Sekarang sebagian besar AVR telah diprogram di pabrik dengan menggunakan internal clock sebesar 1 MHz. Bagi beberapa programmer, kita harus menggunakan setting slow SCK agar dapat sukses membaca device signature dari AVR. Setelah sukses membaca device signature, selanjutnya umumnya dilakukan setting fuse bit untuk menggunakan kristal eksternal sebagai sumber clock AVR. Untuk mengetest apakah setting fuse bit sudah benar atau tidak, baca lagi device signature dengan setting high SCK.

Beberapa AVR dengan fitur JTAG datang dengan setting default JTAG ON/Enabled. Pin-pin JTAG yaitu TDI, TDO, TMS dan TCK tidak dapat digunakan sebagai I/O selama fuse bit JTAG Enabled/Programmed. Anda harus disable fungsi JTAG ini melalui fuse bit.

Untuk memudahkan proses kalkulasi nilai-nilai fuse bit, saya menemukan satu link yang mudah untuk digunakan yaitu AVR Fuse Calculator.

Lanjutkan Membaca

 
9 Comments

Posted by on January 1, 2012 in AVR, Tutorial

 

Tags: