Mikrokontroler AVR Berbasis C


MIKROKONTROLER AVR BERBASIS C

OVERVIEW MIKROKONTROLER AVR

Mikrokontroler AVR merupakan salah satu jenis arsitektur mikrokontroler yang menjadi andalan Atmel. Arsitektur ini dirancang memiliki berbagai kelebihan dan merupakan penyempurnaan dari arsitektur mikrokontroler-mikrokontroler yang sudah ada.

Berbagai seri mikrokontroler AVR telah diproduksi oleh Atmel dan digunakan di dunia sebagai mikrokontroler yang bersifat low cost dan high performance. Di Indonesia, mikrokontroler AVR banyak dipakai karena fiturnya yang cukup lengkap, mudah untuk didapatkan, dan harganya yang relatif terjangkau. Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak berbeda. Berikut tabel perbandingan beberapa seri mikrokontroler AVR buatan Atmel.

Keterangan:

  • Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan manusia yang harus dijalankan oleh mikrokontroler.
  • RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan data sementara dan pengolahan data ketika program sedang running.
  • EEPROM  (Electrically Erasable Programmable Read Only Memory) adalah memori untuk penyimpanan data secara permanen oleh program yang sedang running.
  • Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun masukan bagi program.
  • Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa .
  • UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus secara serial asynchronous.
  • PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa.
  • ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu.
  • SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial synchronous.
  • ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal.

ARSITEKTUR MIKROKONTROLER AVR

Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan memori dan bus untuk data dan program, serta sudah menerapkan single level pipelining. Selain itu mikrokontroler AVR juga mengimplementasikan RISC (Reduced Instruction Set Computing) sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien.

Blok sistem mikrokontroler AVR adalah sebagai berikut:

Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah tipe ATtiny2313 dan ATmega8535. Seri ATtiny2313 banyak digunakan untuk sistem yang relatif sederhana dan berukuran kecil. Berikut adalah feature-feature mikrokontroler seri ATtiny2313.

  • Kapasitas memori Flash 2 Kbytes untuk program
  • Kapasitas memori EEPROM 128 bytes untuk data
  • Maksimal 18 pin I/O
  • 8 interrupt
  • 8-bit timer
  • Analog komparator
  • On-chip oscillator
  • Fasilitas In System Programming (ISP)
  • Sedangkan ATmega8535 banyak digunakan untuk sistem yang kompleks, memiliki input sinyal analog, dan membutuhkan memori yang relatif lebih besar. Berikut adalah feature-feature mikrokontroler seri ATmega8535.
  • Memori Flash 8 Kbytes untuk program
  • Memori EEPROM 512 bytes untuk data
  • Memori SRAM 512 bytes untuk data
  • Maksimal 32 pin I/O
  • 20 interrupt
  • Satu 16-bit timer dan dua 8-bit timer
  • 8 channel ADC 10 bit
  • Komunikasi serial melalui SPI dan USART
  • Analog komparator
  • 4 I/O PWM
  • Fasilitas In System Programming (ISP)

PENJELASAN FUNGSI PIN MIKROKONTROLER AVR

IC mikrokontroler dikemas (packaging) dalam bentuk yang berbeda. Namun pada dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk IC seri mikrokontroler AVR ATmega8535 dapat dilihat berikut:

Berikut adalah penjelasan fungsi tiap kaki:

PORT A

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin port A juga digunakan untuk masukan sinyal analog bagi A/D converter.

PORT B

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

PORT C

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.

PORT D

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

RESET
RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal 2 machine cycle maka system akan di-reset.

XTAL1
XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating circuit.

XTAL2
XTAL2 adalah output dari inverting oscillator amplifier.

AVcc
Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal terhubung ke Vcc melalui lowpass filter.

AREF
AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus dibeikan ke kaki ini.

AGND
AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki anlaog ground yang terpisah.

PEMROGRAMAN BAHASA C UNTUK AVR

Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan programmer menuangkan algoritmanya. Untuk mengetahui dasar bahasa C dapat dipelajari sebagai berikut.

1. Struktur penulisan program

#include < [library1.h] > // Opsional
#include < [library2.h] > // Opsional#define [nama1] [nilai] ; // Opsional
#define [nama2] [nilai] ; // Opsional[global variables] // Opsional

[functions] // Opsional

void main(void) // Program Utama
{
[Deklarasi local variable/constant]
[Isi Program Utama]
}

2. Tipe data

char : 1 byte ( -128 s/d 127 )

unsigned char : 1 byte ( 0 s/d 255 )

int : 2 byte ( -32768 s/d 32767 )

unsigned int : 2 byte ( 0 s/d 65535 )

long : 4 byte ( -2147483648 s/d 2147483647 )

unsigned long : 4 byte ( 0 s/d 4294967295 )

float : bilangan desimal

array : kumpulan data-data yang sama tipenya.

3. Deklarasi variabel & konstanta

Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
Penulisan : [tipe data] [nama] = [nilai] ;

Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Penulisan : const [nama] = [nilai] ;

Tambahan:
Global variabel/konstanta yang dapat diakses di seluruh bagian program.
Local variabel/konstanta yang hanya dapat diakses oleh fungsi tempat dideklarasikannya.

4. Statement

Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar.

Contoh:

suhu=adc/255*100; //contoh rumus perhitungan suhu

5. Function

Function adalah bagian program yang dapat dipanggil oleh program utama.

Penulisan :

[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])
{
[statement] ;
}

6. Conditional statement dan looping

if else : digunakan untuk penyeleksian kondisi

if ( [persyaratan] ) {
[statement1];
[statement2];
}
else {
[statement3];
[statement4];
}

for : digunakan untuk looping dengan jumlah yang sudah diketahui

for ( [nilai awal] ; [persyaratan] ; [operasi nilai] ) {
[statement1];
[statement2];
}

while : digunakan untuk looping jika dan salama memenuhi syarat tertentu

while ( [persyaratan] ) {
[statement1];
[statement2];
}

do while : digunakan untuk looping jika dan salama memenuhi syarat tertentu, namun min 1 kali

do {
[statement1];
[statement2];
}
while ( [persyaratan] )

switch case : digunakan untuk seleksi dengan banyak kondisi

switch ( [nama variabel] ) {
case [nilai1]: [statement];
break;
case [nilai2]: [statement];
break;
}

7. Operasi logika dan biner

Logika
AND :&&
NOT : !
OR : ||

Biner
AND : &
OR : |
XOR : ^
Shift right: >>
Shift left : <<
Komplemen : ~

8. Operasi relasional (perbandingan)

Sama dengan : ==

Tidak sama dengan : !=

Lebih besar : >

Lebih besar sama dengan : >=

Lebih kecil : <

Lebih kecil sama dengan : <=

9. Operasi aritmatika

+ , – , * , / : tambah,kurang,kali,bagi

+= , -= , *= , /= : nilai di sebelah kiri operator di tambah/kurang/kali/bagi dengan nilai di sebelah kanan operator

% : sisa bagi

++ , — : tambah satu (increment) , kurang satu (decrement)

Contoh :
a = 5 * 6 + 2 / 2 -1 ; maka nilai a adalah 30
a *= 5 ; jika nilai awal a adalah 30, maka nilai a = 30×5 = 150.
a += 3 ; jika nilai awal a adalah 30, maka nilai a = 30+5 = 33.
a++ ; jika nilai awal a adalah 5 maka nilai a = a+1 = 6.
a– ; jika nilai awal a adalah 5 maka nilai a = a-1 = 4.

RANGKAIAN SISTEM MINIMUM AVR 8535

Sistem minimum (sismin) mikrokontroler adalah rangkaian elektronik minimum yang diperlukan untuk beroperasinya IC mikrokontroler. Sismin ini kemudian bisa dihubungkan dengan rangkaian lain untuk menjalankan fungsi tertentu. Di keluarga mikrokontroler AVR, seri 8535 adalah salah satu seri yang sangat banyak digunakan.

Untuk membuat rangkaian sismin Atmel AVR 8535 diperlukan beberapa komponen yaitu:

  • IC mikrokontroler ATmega8535
  • 1 XTAL 4 MHz atau 8 MHz (XTAL1)
  • 3 kapasitor kertas yaitu dua 22 pF (C2 dan C3) serta 100 nF (C4)
  • 1 kapasitor elektrolit 4.7 uF (C12) 2 resistor yaitu 100 ohm (R1) dan 10 Kohm (R3)
  • 1 tombol reset pushbutton (PB1)

Selain itu tentunya diperlukan power suply yang bisa memberikan tegangan 5V DC.

Rangkaian sistem minimum ini sudah siap untuk menerima sinyal analog (fasilitas ADC) di port A. Gambar rangkaiannya adalah sebagai berikut.

CARA BELAJAR

Belajar mikrokotroler pada hakikatnya adalah bermain-main dengan bilangan. Input apapun yang masuk ke dalam CPU terlebih dahulu harus diubah ke dalam bentuk bilangan biner. Bilangan biner terdiri dari angka 1 (ya/ada tegangan) dan 0 (tidak/tidak ada tegangan). Mengapa CPU yang hanya bisa membedakan angka 1 dan 0 bisa begitu canggih? Untuk ilustrasi, jika kita punya memori 1 bit maka memori tersebut mampu menyimpan 2 kemungkinan yaitu 1 dan 0. Jika kita punya memori 4 bit maka memori tersebut mampu menyimpan 4 kemungkinan yaitu 00, 01, 10, 11. Semakin banyak bit yang kita miliki maka semakin banyak kemungkinan yang ada.

Bit Kemungkinan
0 2
1
Bit Bit Kemungkinan
0 0 4
0 1
1 0

KONSEP MIKROKONTROLER

Mikrokontroler  adalah sebuah sistem microprosesor di mana di dalamnya sudah berisi CPU, ROM, RAM, I/O, Clock, dan peralatan internal lainya yang saling terhubung dan terorganisasi dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap dipakai. Sehingga kita tinggal memprogram isi ROM sesuai aturan penggunaan oleh pabrik yang membuatnya. Cara mudah mengoperasikan peralatan internal mikrokontroler adalah dengan mempelajari register-register pengendali peralatan tersebut.

Dalam menulis script program kita harus menggunakan bahasa pemprograman tersendiri agar script yang kita buat dapat dimengerti oleh CPU. Bahasa pemprograman yang sering digunakan adalah bahasa Assembler dan Bahasa C. Dibandingkan bahasa Assembler, Bahasa C adalah bahasa HLL (High Level Language) atau bahasa menengah yang mudah untuk dibaca dan dibuat.

Semoga bacaan ini bermanfaat bagi para pengunjung dan mohon commentnya ya 😀

edited by: Ade Christian Sirait

Sumber : ade.wordpress.com

2 Comments to “Mikrokontroler AVR Berbasis C”

  1. sama-sama.
    selamat mempelajari.
    Good luck.. 🙂

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.