Proses pemrograman AVR pada Linux


ATmega328p
AVR adalah salah satu produk mikrokontroller dari Atmel. AVR merupakan singkatan dari Alf and Vegard’s Risc processor. Jadi AVR termasuk mikrokontroller yang menggunakan instruction set RISC (Reduced Instruction Set Computing) tidak seperti seri MCS51 yang menggunakan instruction set CISC (Complex Instruction Set Computing).

Ada beberapa jenis AVR yaitu ATMEGA, ATTINY, AT902XX dan AT86RFXX. Diantara beberapa jenis AVR tersebut, ATMEGA adalah yang paling populer dan paling banyak dipakai oleh para pemula yang mulai belajar pemrograman AVR. ATMEGA sendiri dibagi menjadi beberapa jenis yaitu ATMEGA8, ATMEGA16 dan ATMEGA32.

Pemrograman mikrokontroler AVR pada dasarnya menggunakan Bahasa Assembler, yaitu bahasa pemrograman tingkat rendah yang mendekati bahasa mesin (binary-hexadesimal). Namun kemudian muncul pemrograman dengan bahasa yang lebih tinggi seperti Bahasa C dan Bahasa BASIC yang mendekati bahasa manusia. Khusus untuk bahasa C memang lebih banyak digunakan karena luas komunitasnya, dan khusus untuk saya sendiri alasan menggunakan bahasa c karena mirip dengan bahasa pemrograman PHP.

Untuk pemrograman mikrokontroller di Linux kita membutuhkan beberapa software dan hardware penunjang. Software penunjang yang dibutuhkan adalah Code Editor, Maker, Compiler dan Downloader. Untuk bahasa C bisa menggunakan compiler AVR-GCC. Sedangkan Hardware yang dibutuhkan adalah koneksi downloader dan modul sistem minimum mikrokontroller AVR.

Koneksi downloader yang termudah adalah melalui Port paralel yang dikenal dengan koneksi DAPA (Direct AVR Paraller Access). Pada dasarnya proses download file HEX melalui Linux lebih mudah karena beberapa downloader tidak kompatibel dengan versi Windows terbaru seperti Windows 7 dan Windows 8.

Berikut ini proses pemrograman mikrokontroler AVR di linux :

  1. Sebagai contoh disini saya menggunakan ATMEGA328P-PU.
  2. Pastikan sudah menginstal AVR-GCC, AVR-LIBC, UISP dan AVRDUDE. Cara instal bisa dilihat pada artikel sebelumnya.
  3. Pastikan sudah membuat sistem minimum AVR dan kabel downloadernya. Disini saya menggunakan koneksi downloader melalui port paralel (DAPA).
  4. Buka sembarang teks editor, misal: Pluma, Kate, Geany, Nano atau Gedit.
  5. Tulis kode program sederhana pada text editor sebagai berikut :
    #include <avr/io.h>
    #include <util/delay.h>
    
    int main (void)
    {
     DDRD = 0xFF;            // Buat semua Port D menjadi output, 0xFF= 1111 1111
    
     while(1)                //perulangan
     {
      PORTD = 0xFF;          // Port D high
      _delay_ms(1000);       // Tunda 1 detik
      PORTD = 0;             // Port D low
      _delay_ms(100);        // Tunda 1 detik
     }
    
     return 0;
    }
    
  6. Kode program diatas akan menyalakan semua Port D selama 1 detik dan mematikan Port D selama 1 detik secara berulang.
  7. Simpan kode program tersebut sebagai file C, misal: main.c
  8. Compile file main.c untuk mendapatkan file HEX dengan AVR-GCC, jalankan perintah berikut ini pada terminal :

    avr-gcc -w -Os -DF_CPU=1000000UL -mmcu=atmega328p -c -o main.o main.c
    avr-gcc -w -mmcu=atmega328p main.o -o main
    avr-objcopy -O ihex -R .eeprom main main.hex

    Note:

    • Sistem minimum AVR menggunakan crystal internal 1 MHz (setting default pabrik dan belum disetting fuse bitnya)
    • Sebelumnya tambahkan config ATMEGA32P pada AVRDUDE.CONF
  9. Pastikan komputer sudah terhubung ke AVR melalui kabel downloader DAPA.
  10. Download File HEX ke mikrokontroler dengan AVRDUDE, jalankan perintah berikut ini pada terminal :

    sudo avrdude -F -V -c dapa -p ATmega8 -P /dev/parport0 -U flash:w:main.hex

    Note: jika ada masalah permission, ketik sudo chmod 777 /dev/parport0 pada terminal

  11. Jika berhasil akan tampil notifikasi sukses pada terminal seperti berikut ini:

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x1e950F
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
    To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file “main.hex”
    avrdude: input file main.hex auto detected as Intel Hex
    avrdude: writing flash (94 bytes):

    Writing | ################################################## | 100% 0.04s

    avrdude: 94 bytes of flash written

  12. Selanjutnya kita lihat led yang terhubung ke Port D akan akan menyala berkedip dengan interval nyala dan mati selama 1 detik.
Advertisements

One Response to Proses pemrograman AVR pada Linux

  1. Pingback: Membuat Lingkungan Program AVR Terintegrasi (IDE) di Linux | Abi Sabrina

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: