Mikrokontroler Atmega 8535
Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis atau dihapus (Agus Bejo, 2007). Biasanya digunakan untuk pengontrolan otomatis dan manual pada perangkat elektronika.
Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan terutama dalam pengontrolan robot. Seiring perkembangan elektronika, mikrokontroler dibuat semakin kompak dengan bahasa pemrograman yang juga ikut berubah. Salah satunya adalah mikrokontroler AVR (Alf and Vegard’s Risc processor) ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction Set Computing) dimana program berjalan lebih cepat karena hanya membutuhkan satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu kelas ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.
Mikrokontroler AVR ATmega8535 memiliki fitur yang cukup lengkap. Mikrokontroler AVR ATmega8535 telah dilengkapi dengan ADC internal, EEPROM internal, Timer/Counter, PWM, analog comparator, dll (M.Ary Heryanto, 2008). Sehingga dengan fasilitas yang lengkap ini memungkinkan kita belajar mikrokontroler keluarga AVR dengan lebih mudah dan efisien, serta dapat mengembangkan kreativitas penggunaan mikrokontroler ATmega8535.
Fitur-fitur yang dimiliki oleh mikrokontroler ATmega8535 adalah sebagai berikut:
1. Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.
2. ADC internal sebanyak 8 saluran.
3. Tiga buah Timer/Counter dengan kemampuan pembandingan.
4. CPU yang terdiri atas 32 buah register.
5. SRAM sebesar 512 byte.
6. Memori Flash sebesar 8 kb dengan kemampuan Read While Write.
7. Port antarmuka SPI
8. EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
9. Antarmuka komparator analog.
10. Port USART untuk komunikasi serial.
11. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.
12. Dan lain-lainnya.
Arsitektur Atmega 8535
Konstruksi ATmega8535
Mikrokontroler ATmega8535 memiliki 3 jenis memori, yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah.
a. Memori program
ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang terpetakan dari alamat 0000h – 0FFFh dimana masing-masing alamat memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi.
b. Memori data
ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data SRAM.
c. Memori EEPROM
ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan register-register I/O yaitu register EEPROM Address, register EEPROM Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.
ATmega8535 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC internal dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATmega8535 dapat dikonfigurasi, baik secara single ended input maupun differential input. Selain itu, ADC ATmega8535 memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter derau yang amat fleksibel, sehingga dengan mudah disesuaikan dengan kebutuhan ADC itu sendiri.
ATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah timer/counter 8 bit dan 1 buah timer/counter 16 bit. Ketiga modul timer/counter ini dapat diatur dalam mode yang berbeda secara individu dan tidak saling mempengaruhi satu sama lain. Selain itu, semua timer/counter juga dapat difungsikan sebagai sumber interupsi. Masing-masing timer/counter ini memiliki register tertentu yang digunakan untuk mengatur mode dan cara kerjanya.
Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial syncrhronous kecepatan tinggi yang dimiliki oleh ATmega8535. Universal Syncrhronous and Asyncrhronous Serial Receiver and Transmitter (USART) juga merupakan salah satu mode komunikasi serial yang dimiliki oleh ATmega8535.
USART merupakan komunikasi yang memiliki fleksibilitas tinggi, yang dapat digunakan untuk melakukan transfer data baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC yang memiliki fitur UART.
USART memungkinkan transmisi data baik secara syncrhronous maupun asyncrhronous, sehingga dengan memiliki USART pasti kompatibel dengan UART. Pada ATmega8535, secara umum pengaturan mode syncrhronous maupun asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock saja. Jika pada mode asyncrhronous masing-masing peripheral memiliki sumber clock sendiri, maka pada mode syncrhronous hanya ada satu sumber clock yang digunakan secara bersama-sama. Dengan demikian, secara hardware untuk mode asyncrhronous hanya membutuhkan 2 pin yaitu TXD dan RXD, sedangkan untuk mode syncrhronous harus 3 pin yaitu TXD, RXD dan XCK.
Port I/O ATMega8535
Port I/O pada mikrokontroler ATMega8535 dapat difungsikan sebagai input ataupun dengan keluaran high atau low. Untuk mengatur fungsi port I/O sebagai input ataupun output perlu dilakukan setting pada DDR dan Port. Berikut tabel pengaturan port I/O.
Dari tabel di atas, menyeting input/output adalah :
1. Input ; DDr bit 0 dan Port bit 1
2. Output High ; DDR bit 1 dan Port bit 1
3. Output Low ; DDR bit 1 dan Port bit 0
Logika port I/O dapat berubah-ubah dalam program secara byte atau hanya
bit tertentu. Mengubah sebuah keluaran bit I/O dapat dilakukan menggunakan
perintah cbi (clear bit I/O) untuk menghasilkan output low atau perintah sbi (set bit I/O) untuk menghasilkan output high. Perubahan secara byte dilakukan dengan perintah in atau out yang menggunakan register bantu. Port I/O sebagai output hanya memberikan arus sourcing sebesar 20mA sehingga untuk menggerakkan motor atau kendali alat elektronis yang lain, perlu diberikan penguat tambahan atau dapat juga dengan konfigurasi port sebagai sinking current, seperti pada port yang digunakan untuk menyalakan LED, yang akan
menyala saat port diberikan logika low dan mati saat port logika high.
Status Register (SREG) ATMega8535
Status register adalah register berisi status yang dihasilkan pada setiap operasi yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU mikrokontroler.
1. 1. Bit 7-I : Global Interrupt Enable
Bit harus diset untuk meng-enable interupsi. Setelah itu anda dapat mengaktifkan interupsi mana yang akan digunakan dengan cara meng-enable bit kontrol register yang bersangkutan secara individu. Bit akan di-clear apabila terjadi suatu interupsi yang dipicu oleh hardware, dan bit tidak akan mengizinkan terjadinya
interupsi, serta akan diset kembali oleh instruksi RETI.
2. 2. Bit 6-T : Bit Copy Storage
Instruksi BLD dan BST menggunakan bit-T sebagai sumber atau tujuan dalam operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit T menggunakan instruksi BTS, dan sebaliknya bit-T dapat disalin kembali ke suatu bit dalam register GPR menggunakan instruksi BDL.
3. Bit 5-H : half Carry Flag
4. Bit 4-S : Sigh Bit
Bit-S merupakan hasil operasi EOR antara Flag-N (negatif) dan flag V
(komplemen dua overflow).
5. Bit 3-V : Two’s Complement Overflow Flag
Bit berguna untuk mendukung operasi aritmatika.
6. Bit 2-N : Negative Flag
Apabila suatu operasi menghasilkan bilangan negatif, maka flag-N akan di-set.
7. Bit 1-Z : Zero Flag
Bit akan di-set bila hasil operasi yang diperoleh adalah nol.
8. Bit 0-C : Carry Flag
Apabila suatu operasi menghasilkan carry, maka bit akan di-set.
Peta Memori Atmega 8535
ATMega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Memori data terbagi menjadi 3 bagian yaitu : 32 buah register umum, 64 buah register I/O, dan 512 byte SRAM internal.
Register untuk keperluan umum menempati space data pada alamat terbawah yaitu $00 sampai $1F. Sementara itu register khusus untuk menangani I/O dan kontrol terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20 sampai $5F. Register tersebut merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler, seperti kontrol register, timer/counter, fungsi fungsi I/O, dan sebagainya. Register khusus alamat memori secara lengkap dapat dilihat pada tabel dibawah . Alamat memori berikutnya digunakan untuk SRAM 512 byte, yaitu pada lokasi $60 sampai dengan $25F.
Pin-pin pada Mikrokontroler ATmega8535
Konfigurasi pin ATmega8535 dengan kemasan 40 pin DIP (Dual Inline Package) dapat dilihat pada gambar 2.1. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merukan pin Ground.
3. Port A (PortA0…PortA7) merupakan pin input/output dua arah dan pin masukan ADC.
4. Port B (PortB0…PortB7) merupakan pin input/output dua arah dan dan pin fungsi khusus, seperti dapat dilihat pada tabel di bawah ini.
Tabel 2. Fungsi Khusus Port B
Pin | Fungsi Khusus |
PB7 | SCK (SPI Bus Serial Clock) |
PB6 | MISO (SPI Bus Master Input/ Slave Output) |
PB5 | MOSI (SPI Bus Master Output/ Slave Input) |
PB4 | SS (SPI Slave Select Input) |
PB3 | AIN1 (Analog Comparator Negative Input) OC0 (Timer/Counter0 Output Compare Match Output) |
PB2 | AIN0 (Analog Comparator Positive Input) INT2 (External Interrupt 2 Input) |
PB1 | T1 (Timer/ Counter1 External Counter Input) |
PB0 | T0 T1 (Timer/Counter External Counter Input) XCK (USART External Clock Input/Output) |
5. Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti dapat dilihat pada tabel dibawah ini.
Tabel 3. Fungsi khusus Port C
Pin | Fungsi khusus |
PC7 | TOSC2 ( Timer Oscillator Pin2) |
PC6 | TOSC1 ( Timer Oscillator Pin1) |
PC5 | Input/Output |
PC4 | Input/Output |
PC3 | Input/Output |
PC2 | Input/Output |
PC1 | SDA ( Two-wire Serial Buas Data Input/Output Line) |
PC0 | SCL ( Two-wire Serial Buas Clock Line) |
6. Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti yang terlihat pada tabel dibawah ini.
Tabel 4. Fungsi khusus Port D
Pin | Fungsi khusus |
PD7 | OC2 (Timer/Counter Output Compare Match Output) |
Pin | Fungsi khusus |
PD7 | OC2 (Timer/Counter Output Compare Match Output) |
PD6 | ICP (Timer/Counter1 Input Capture Pin) |
PD5 | OC1A (Timer/Counter1 Output Compare A Match Output) |
PD4 | OC1B (Timer/Counter1 Output Compare B Match Output) |
PD3 | INT1 (External Interrupt 1 Input) |
PD2 | INT0 (External Interrupt 0 Input) |
PD1 | TXD (USART Output Pin) |
PD0 | RXD (USART Input Pin) |
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.
9. AVCC merupakan pin masukan tegangan untuk ADC.
10. AREFF merupakan pin masukan tegangan referensi ADC.
Bahasa Pemrograman ATmega8535
Pemrograman mikrokontroler ATmega8535 dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, JAVA,dll) tergantung compiler yang digunakan (Widodo Budiharto, 2006). Bahasa Assembler mikrokontroler AVR memiliki kesamaan instruksi, sehingga jika pemrograman satu jenis mikrokontroler AVR sudah dikuasai, maka akan dengan mudah menguasai pemrograman keseluruhan mikrokontroler jenis mikrokontroler AVR. Namun bahasa assembler relatif lebih sulit dipelajari dari pada bahasa C.
Untuk pembuatan suatu proyek yang besar akan memakan waktu yang lama serta penulisan programnya akan panjang. Sedangkan bahasa C memiliki keunggulan dibanding bahasa assembler yaitu independent terhadap hardware serta lebih mudah untuk menangani project yang besar. Bahasa C memiliki keuntungan-keuntungan yang dimiliki bahasa assembler (bahasa mesin), hampir semua operasi yang dapat dilakukan oleh bahasa mesin, dapat dilakukan dengan bahasa C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C terletak diantara bahasa pemrograman tingkat tinggi dan assembly (Agus Bejo,2007).
Pengisian Program pada Mikrokontroler AVR
Untuk melakukan pemrograman dalam mikrokontroler AVR, Atmel telah menyediakan software khusus yang dapat diunduh dari website resmi Atmel. Software tersebut adalah AVRStudio. Software ini menggunakan bahasa assembly sebagai bahasa perantaranya. Selain AVRStudio, ada beberapa software pihak ketiga yang dapat digunakan untuk membuat program pada AVR. Software dari pihak ketiga ini menggunakan bahasa pemrograman tingkat tinggi seperti bahasa C, Java, atau Basic seperti code vision AVR. Untuk melakukan pemindahan dari komputer ke dalam chip, dapat digunakan beberapa cara seperti menggunakan kabel JTAG atau menggunakan STNK buatan Atmel.
Melakukan download program ke mikrokontroler dapat juga menggunakan ponyprog2000. Tampilannya seperti di bawah ini:
nice info mas, salam kenal
ReplyDeleteMantap mas. Makasih infonya
ReplyDeleteMantap mas. Makasih infonya
ReplyDeleteTolong bisa dijelaskan mengenai port c baik fungsi dan cara settingnya dalam port c. Mohon bantuanya saolnya saya diberi tugas tapi untuk mencari referensinya sangat susah. 😊
ReplyDeleteMas mau tanya kalau mau akas memory dengan bascom avr gmana cara codingnya misal saya mau bikin 10 memory dan di tiap memory bisa di simpen data berupa angka freq radio misal di memory 1(88.7MHz) terus memory2 (90.9Mhz) dan seterusnya gmana coding nya mas kalau pake bascom avr terimakasih
ReplyDelete