ATMega8


Mikrokontroler ATMega8 merupakan mikrokontroler keluarga AVR 8bit. Beberapa tipe mikrokontroler yang “berkeluarga” sama dengan ATMega8 ini antara lain ATMega8535, ATMega16, ATMega32, ATmega328, dll. Yang membedakan antara mikrokontroler yang saya sebutkan tadi antara lain adalah, ukuran memori, banyaknya GPIO (pin input/output), peripherial (USART, timer, counter, dll). Dari segi ukuran fisik, ATMega8 memiliki ukuran fisik lebih kecil dibandingkan dengan beberapa mikrokontroler yang saya sebutkan diatas. Namun untuk segi memori dan periperial lainnya ATMega8 tidak kalah dengan yang lainnya karena ukuran memori dan periperialnya relatif sama dengan ATMega8535, ATMega32, dll.
Fungsi dan Kebutuhan Pin
Pinout IC mikrokontroler ATMega8 yang berpackage DIP dapat dilihat di bawah ini.

Seperti yang kita lihat ATMega8 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan sebagai input/output digital atau difungsikan sebagai periperial lainnya.
1. PORTB
PORTB merupakan jalur data 8bit yang dapat difungsikan sebagai input/output. Selain itu PORTB juga dapat memiliki fungsi alternatif seperti yang tertera pada gambar di bawah ini.

ICP1(PB0), berfungsi sebagai Timer Counter 1 input capture pin.
OC1A(PB1), OC1B(PB2) dan OC2(PB3) dapat difungsikan sebagai keluaran PWM (pulse width modulation).
MOSI(PB3), MISO(PB4), SCK(PB5), SS(PB2) merupakan jalur komunikasi SPI. Selain itu pin ini juga berfungsi sebagai jalur pemograman serial (ISP).
TOSC1(PB6) dan TOSC2(PB7) dapat difungsikan sebagai sumber clock external untuk timer.
XTAL1(PB6) dan XTAL2(PB7) merupakan sumber clock utama mikrokontroler. Perlu diketahui, jika kita menggunakan clock internal (tanpa crystal) maka PB6 dan PB7 dapat difungsikan sebagai input/output digital biasa. Namun jika kita menggunakan clock dari crystal external maka PB6 dan PB7 tidak dapat kita gunakan sebagai input/output.
2. PORTC
PORTC merupakan jalur data 7bit yang dapat difungsikan sebagai input/output digital. Fungsi alternatif PORTC antara lain sebagai berikut.
ADC 6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10bit. ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog menjadi data digital.
I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C digunakan untuk komunikasi dengan sensor atau device lain yang memiliki komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck, dll.
RESET merupakan salah satu pin penting di mikrokontroler, RESET dapat digunakan untuk merestart program. Pada ATMega8 pin RESET digabungkan dengan salah satu pin IO (PC6). Secara default PC6 ini didisable dan diganti menjadi pin RESET. Kita dapat mendisable fungsi pin RESET tersebut untuk menjadikan PC6 sebagai pin input/output. Kita dapat melakukan konfigurasi di fusebit untuk melakukan pengaturannya, namun saya sarankan untuk tidak merubahnya karena jika pin RESET di disable maka kita tidak dapat melakukan pemograman melalui jalur ISP.
3. PORTD
PORTD merupakan jalur data 8bit yang masing-masing pin-nya juga dapat difungsikan sebagai input/output. Sama seperti PORTB dan PORTC, PORTD juga memiliki fungsi alternatif seperti terlihat pada gambar dibawah ini.
USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial.
Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan pada saat program berjalan kemudian terjadi interupsi hardware/software maka program utama akan berhenti dan akan menjalankan program interupsi.
XCK dapat difungsikan sebagai sumber clock external untuk USART, namun kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan external clock.
T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.
AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.
Kebutuhan Clock
Sumber clock pada ATMega8 secara garis besar ada 2 buah, yaitu clock internal dan clock external. Untuk clock internal maksimum clock yang dapat digunakan adalah 8MHz, sedangkan untuk clock external maksimum clock yang dapat digunakan adalah sebesar 16MHz. Lebih jelasnya mengenai berbagai macam sumber clock dapat dilihat pada tabel di bawah ini.
Untuk sumber clock external kita dapat menggunakan RC osilator atau crystal osilator. Namun biasanya yang lebih banyak digunakan adalah osilator tipe crystal.
Fuse Bit
Fuse bit merupakan salah satu hal yang harus diketahui bagi anda yang baru belajar mikrokontroler. Di fuse bit ini anda dapat melakukan konfigurasi clock, fungsi pin, bootloader, dll. Namun, jika anda belum banyak mengerti tentang fuse bit ini saya sarankan untuk tidak mengutak-atik pengaturan fuse bit, karena jika salah pengaturan fuse mikrokontroler anda bisa saja tidak dapat diprogram lagi (bukan berarti rusak). ATMega8 memiliki dua buah fuse bit yaitu Fuse High Byte dan Fuse Low Byte.
Salah satunya untuk pengaturan clock source dan salah satu fuse bit yang penting yaitu RESET DISABLE. Biasanya bagi mereka yang masih baru belajar AVR, masalah yang sering dihadapai adalah delay waktu yang tidak sesuai dengan yang tertulis di program . Salah satu penyebab hal tersebut adalah anda belum mengatur fuse bit yang berfungsi sebagai pengaturan clock. Pengaturan clock ini berada pada bagian Fuse Bit Low antara lain pada bit CKSEL0, CKSEL1, CKSEL2, CKSEL3
Beberapa pilihan pengaturan clock dapat dilihat di bawah ini
CKSEL = 0000 => Ext. Clock
CKSEL = 0001 => Int. RC 1HMz
CKSEL = 0010 => Int. RC 2MHz
CKSEL = 0011 => Int. RC 4MHz
CKSEL = 0100 => Int. RC 8MHz
CKSEL = 0101 => Ext. RC 0.9MHz
CKSEL = 0110 => Ext. RC 0.9MHz – 3MHz
CKSEL = 0111 => Ext. RC 3MHz – 8MHz
CKSEL = 1000 => Ext. RC 8MHz – 12MHz
CKSEL = 1001 => Ext. Cystal Low Freq
CKSEL = 1010 => Ext. Cystal Low Freq
CKSEL = 1011 => Ext. Cystal Low Freq
CKSEL = 1100 => Ext. Cystal Medium Freq
CKSEL = 1101 => Ext. Cystal Medium Freq
CKSEL = 1110 => Ext. Cystal High Freq
CKSEL = 1111 => Ext. Cystal High Freq
Untuk pengaturan clock dengan mode crystal external dengan frekuensi  12 MHz/16MHz biasanya saya mengunakan pilihan CKSEL = 1111 . Untuk melakukan pengaturan fuse bit ini kita membutuhkan sebuah downloader. Biasanya tools untuk mendownload program sudah menyediakan fitur untuk melakukan pengaturan fuse bit ini. 
Ada satu lagi fuse bit yang paling penting di ATMega8, yaitu RSTDSBL. Bit ini digunakan untuk pemilihan PC6/RESET. Ketika saya masih baru belajar AVR dulu, saya melakukan kesalahan yg lumayan fatal, saya fikir dengan mengganti RESET menjadi PC6 saya bisa mendapatkan IO yg lebih banyak (jika tidak menggunakan reset) ternyata alhasil, mikro saya tidak bisa diprogram lagi karena pin RESET sudah didisable  . Makannya saya anjurkan untuk pemula tidak usah mengutak-atik fuse bit yang lain kecuali CKSEL (untuk pengaturan clock ), karena jika salah setting mikrokontroler anda tidak dapat diprogram kembali. Mungkin untuk fuse bit yang perlu dipahami bagi pemula hanya 2 itu, untuk yang lainnya jarang digunakan (seperti bootloader, RESET vektor, dll).



Sumber : Atmel

Baca Juga Ya...!!!:

Tidak ada komentar: