Bagaimana Memulai Belajar AVR



A. URUTAN PEMBUATAN PRODUK AVR

Agar bisa "menghidupkan" AVR, kita harus lakukan hal-hal berikut :
  1. Dari ide yang muncul, siapkan konsep produk akhirnya (fungsi, input-output)
  2. siapkan device (chip AVR) dan sirkuit elektroniknya (sumber tenaga DC, LED, resistor, kapasitor, breadboard, kabel, ...) agar fungsi yang diinginkan terpenuhi
  3. Siapkan programnya (menggunakan programming seperti AVR-GCC atau Atmel Studio). » programming AVR.
  4. Kirim program tersebut ke sirkuit » pengiriman data ke AVR : ISP programmer dan Avrdude
  5. Debug (cek terhadap "bug"), dan revisi
  6. » Produk "hidup" !!!
Semua akan kita lihat pada contoh-contoh Proyek di bawah.

B. PILIHAN JENIS AVR

Tipe AVR yang paling banyak digunakan oleh pemula mungkin adalah mikrokontroller 8 bit AVR ATtiny, terutama dengan ukuran 8 pin (misal ATtiny13, ATtiny85, dll) dan 20 pin (misal ATtiny2313), AVR ATmega terutama yang 28 pin (AVR 28 pin "Atmega328P" dipakai oleh Arduino Uno, sehingga sangat dikenal).
Untuk melihat perbandingan dari beberapa AVR yang mirip, baik ATtiny maupun ATmega bisa dilihat disini.
Atmel terus mengembangkan AVR sehingga didapatkan produk yang semakin efisien dalam pemakaian listrik. Juga proses pembuatan bisa semakin ekonomis sehingga muncul beberapa tipe untuk satu produk. Misal ATmega328P adalah Pico Power type (tipe energi efisien) dan ATmega328 (tanpa P). Juga ATtiny2313A yang lebih harganya lebih murah dari pada ATtiny2313 (tanpa A).

C. SIRKUIT AVR

Ditahap ini anda harus memahami pengetahuan yang paling dasar dari elektronika, seperti:
  • Arus DC, karena mikrokontroller menggunakan arus tegangan DC yang sangat kecil, umumnya 3.3 volt atau 5 volt,
  • untuk itu sudah mulai belajar menggunakan multimeter untuk mengukur voltase.
  • Anda diharapkan sudah mengerti cara kerja breadboard-tanpa-solder,
  • serta membuat kabel jumper single core wire 22 AWG (dengan diameter tembaga 0.644mm).
  • Memahami fungsi resistor dan memahami bahwa LED akan terbakar ketika langsung dihubungkan dengan sumber 5 volt
  • Sudah mengetahui dimana belanja AVR dan komponen elektronika
  • Pencarian di Google dan Youtube akan sangat membantu.

belanjanya dimana saja?

  • Jakarta: terutama di Lindeteves Trade Centre (LTC), Glodok
  • mungkin di sebagian besar ibukota provinsi ada toko komponen elektronik
  • secara online, cukup banyak toko yang menjual AVR dan komponen linnya, misal:

D. PROGRAMMING AVR

AVR sangat disukai, salah satu alasannya adalah karena tersedianya berbagai bahasa pemrograman yang gratis namun ruboust. Penulisan source code untuk AVR tersedia dalam berbagai bahasa seperti assembler, C, dan Basic.
Tabel dibawah memperlihatkan secara umum kekuatan dan kelemahan masing-masing bahasa.
        Bahasa Ukuran Code     Lama Pengembangan     Kecepatan Eksekusi
        Assembly    Kecil Paling lama Paling cepat
        C Kecil Menengah Cepat
        BASIC Paling besar Menengah Paling lambat

Pemilihan Compiler

Untuk proyek-proyek, saya menggunakan bahasa pemrograman yang sangat robust namun juga gratis dan dengan komunitas yang sangat besar, yaitu AVR C runtime library (AVR-Libc) dan Atmel Studio (untuk Windows saja). Kita akan belajar mem-program AVR secara bertahap dari yang mudah pada Proyek-1, dilanjutkan denga Proyek-2 yang sedikit lebih sulit, dan seterusnya...
AVR-Libc bahasa tanpa IDE (integrated development environment), dan untuk mempermudah perlu menginstall IDE, misal WinAVR. Ada sangat banyak tutorial untuk meng-install AVR GCC.
Atmel Studio sangat bagus, dirancang terutama untuk AVR programmer dari Atmel sendiri (namun perlu setting agar tidak bentrok dengan Avrdude.

Ke-khususan Bahasa Pemrograman untuk Embedded

Dalam membuat program untuk AVR dan mikroprosessor lainnya ada beberapa hal yang berbeda dengan programming aplikasi desktop :
  • Semua perintah bermuara pada AVR, melalui Port dan Pin nya
  • Input maupun output melalui tingkat voltase yang diterima oleh Pin (untuk aplikasi desktop: OnClick, untuk aplikasi AVR: on-voltage-high atau on-voltage-low)
  • Input umumnya berupa button switch, sensor, encoder, dll.
  • Output umumnya berupa LED, motor, layar (text atau grafis), dll.
  • Input dan output umumnya menggunakan binary dan hexadesimal, sesuai dengan alamiahnya pin mikrokontroller.
  • Pemrograman embedded seperti AVR ini sangat dimudahkan dengan adanya bit-wise operator, seperti AND (&), OR (|), EX-OR (^), inverter (~), shift-left (<<) dan shift-right (>>).
  • Programmer harus memperhatikan batasan kapasitas AVR (misal Flash memory yang tersedia, akurasi timer, speed, power source, ...).
  • Output program dalam format *.c di 'make' mejadi format yang dikenal oleh AVR, yaitu INTEL HEX (*.hex)

referensi:


E. PENYUNTIKAN PROGRAM KE AVR

Untuk mengirimkan source code ke AVR device (AVR IC), digunakan AVR PROGRAMMER (hardware) beserta softwarenya. Berikut adalah 4 dari berbagai jenis AVR Programmer yang dibuat oleh Atmel yang juga banyak dibuat clone-nya oleh berbagai fihak. Kalau anda bisa mendapatkan satu dari 3 alat pertama (STK600, atau AVRISP mkII, atau AVR Dragon) ada beberapa hal yang tidak bisa dilakukan oleh produk AVR Programmer yang lebih murah.
Catatan: di situs ini saya hanya menyinggung metoda ISP saja (karena saya belum pernah menggunakan metode JTAG, DebugWire, atau metode lainnya :) )

STK600 Starter Kit

Alat ini adalah yang tebaik untuk mulai belajar AVR, baik 8 bit maupun 32 bit. Sebelum masuk Indonesia harganya sekitar UD$90, agak mahal namun betul2 worth it, karena fitur2nya sangat bagus. Alat ini de facto standar untuk pengembangan AVR !

AVR Dragon Evaluation Tool

Dengan harga US$55 (sebelum masuk Indonesia), dengan fitur yang sangat komplit, hanya sedikit dibawah STK600, belajar AVR mwenggunakan programmer ini anda akan sangat terbantu.

AVRISP mkII In System Programmer

Dengan harga sekitar $30 (sebelum masuk Indonesia) programmer ini melakukan apa yang bisa dilakukan oleh USBtiny ISP dalam memprogram AVR 8 bit, plus pengecekan kebenaran sirkuit anda sebelum mulai uploading - hal yang sangat membantu. Tapi bagi yang tidak suka utak-atik setting, Programmer ini tidak akur dengan AVRDUDE, jadi kalau pakai Programmer ini agar sepenuhnya menggunakan Atmel Studio...

The Open Source USBtinyISP

Berbagai AVR ISP Programmer dibuat oleh berbagai fihak, umumnya dengan harga yang sangat murah (untuk ukuran dunia embedded). Di Indonesia AVR ISP Programmer dibuat oleh Depok Instrument, Innovative Electronics (lihat link di bawah), dan lain2.

Beli dimana?

  • Saya beli ISP Programmer Pocket AVR Programmer dari Sparkfun (USA) yang saya pesan online lewat distributor Jakarta Famosa Studio saat itu Rp 229.000,-
  • USBtinyISP yang juga sangat dikenal adalah produk Adafruit (USA) : USBtinyISP AVR Programmer Kit .
  • STK500 (produk Atmel pra-STK600, namun masih sangat disukai) sepertinya dijual oleh Digiware
  • AVRISP mkII sepertinya dijual oleh Digiware
  • AVRISP MK2 dari Olimex juga sangat banyak dibicarakan di internet.
  • Di Indonesia banyak toko menyediakan berbagai tipe AVR programmer, baik barang import (yang banyak disebut dibuku-buku seperti dari Sparkfun, dari Adafruit, dari Pololu dan dari Olimex) maupun lokal, seperti dari Depok Instruments , dan Innovative Electronics.
  • Bagi yang berkesempatan belanja di negara tetangga (Sg, My, Th : banyak toko besar punya cabang disana, seperti Mouser, Element14, dll)
  • Mau bikin sendiri ? Silahkan lihat disini.

F. UPLOAD HEX FILE KE AVR (FLASHING)

Kalau anda menggunakan Atmel Studio compiler dan menggunakan AVR programmer milik Atmel (seperti STK600, AVR Dragon atau AVRISP MKII) maka proses transfer hex file langsung bisa dilaksanakan.
Kalau anda menggunakan compiler AVR-GCC, maka anda memerlukan software uploader seperti Avrdude atau Atmel Studio Command Line untuk transfer HEX file ke chip AVR anda.
Avrdude merupakan software open source yang disupport oleh sebagian besar AVR Programmer, juga dipakai di Arduino IDE.
Atmel Studio Command Line tersedia saat anda install Atmel Studio.

G. APA YANG HARUS ANDA LAKUKAN SEKARANG ?

Saya telah terangkan bagaimana proses memulai proyek AVR, sekarang giliran Anda untuk mulai menerapkan pengetahuan baru Anda...
  1. Tentukan pilihan AVR anda. Kalau bingung ikut saya saja : ATtiny2313 dan ATmega328
  2. Mulai belanja :
    • AVR Programmer. Kalau bingung pilih yang mana, ikut saya saja, beli Sparkfun Pocket AVR Programmer lewat Famosa Studio. Di FamosaStudio anda juga bisa pesan ISP Programmer lain seperti Adafruit USBtinyISP
    • AVR chip beberapa buah
    • calon sirkuit pertama anda: breadboard (sebaiknya 2 atau 3 buah), kabel jumper (kalau mau praktis beli yg sudah siap pakai: male-male), beberapa jenis resistor (beberapa 330 ohm, 470 ohm, 1k ohm, 4.7k ohm), beberapa jenis kapasitor (beberapa kapasitor bipolar 0.1uF, 1uF, 100uF, dan non-polar 101, 102, 103, 104), beberapa LED (misal masing2 5 buah yang 5mm warna merah, hijau, kuning)
    • Multi-meter, pelajari cara penggunaannya
    • Power, paling sederhana mungkin adalah adaptor 5 Volt 1~2 Ampere
  3. Pelajari cara penggunaan AVR Programmer yang anda pilih. Biasanya ada tutorialnya, ikutilah dengan seksama.
  4. Lakukan upload Hex file (flashing) ke AVR chip anda (ini juga mestinya diberikan oleh tutorial AVR programmer diatas)
  5. Dan kalau OK: SELAMAT !!! Anda sudah qualified menjadi calon robotic engineer...
to top

H. REFERENSI