Bab 1 Pengenalan Perangkat Keras dan Perangkat Lunak Sistem Microprocessor
Berdasarkan alasan utama ketersediaan, perangkat keras yang digunakan dalam praktikum micoprocessor ini STK500 berbasis microcontroller keluarga AVR. Sedangkan perangkat lunak yang dipilih adalah CodevisionAVR berbasis bahasa pemrograman C.
1. Sekilas Tentang Arsitektur Mikrokontroler AVR
Tidak terkait dengan jenis bahasa pemrograman yang akan digunakan (apakah bahasa aras rendah atau aras tinggi), dalam bidang mikrokontroler (baca: sistem embedded), pengetahuan arsitektur Mikrokontroler tetap masih diperlukan mengingat dalam banyak aplikasi, pengaksesan dan manipulasi register-register internal serta Port I/O baik pada level bit maupun byte/word adalah hal yang umum dilakukan. Sehingga sekalipun mikrokontroler nantinya diprogram dengan menggunakan bahasa aras tinggi, programmer biasanya akan selalu berhubungan dengan beberapa register internal serta perangkat keras lainnya secara langsung. Meskipun demikian, dibandingkan dengan bahasa assembler, pemakaian bahasa aras tinggi (misal bahasa C) dalam pemrograman mikrokontroler dapat mengurangi pengaksesan atau manipulasi langsung terhadap sejumlah register yang terdapat pada mikrokontroler tersebut. Dengan pengetahuan arsitektur mikrokontroler yang relatif minimal, programmer secara umum sudah dapat memprogram aplikasi yang direncanakan.
Gambar 1.1 berikut memperlihatkan arsitektur umum mikrokontroler AVR Atmega8515, yang digunakan dalam praktikum microprocessor ini:
Gambar 1.1 Arsitektur umum sebuah mikrokontroler Atmega8535
Memori
Secara umum memori mikrokontroler AVR berbasis pada sebuah arsitektur yang dikenal dengan istilah Harvard architecture. Pada arsitektur ini, ruang memori data dan memori program dipisah secara fisik (Hal ini berbeda dengan arsitektur Von Neumann yang umum digunakan pada sistem memori komputer – Dalam arsitektur Von Neumann, data dan program menempati memori fisik yang sama, yaitu RAM). Salah satu kelebihan dari arsitektur Harvard adalah pengambilan instruksi serta data oleh CPU dapat berjalan secara paralel, sehingga eksekusi program relatif lebih cepat.
Dalam sistem mikrokontroler AVR, Selain tersedia blok memori program dan data, juga terdapat jenis memori lain, yaitu EEPROM.
Memori Program: Memori program atau memori flash adalah lokasi tempat menyimpan program pengguna secara permanen. Memori program ini secara fisik terpisah dengan memori data. Agar penulisan kode instruksi lebih efisien, memori program pada mikrokontroler AVR ini dibuat lebih lebar dibandingkan memori data (yaitu 16 bit untuk memori program dan 8 bit pada memori data). Secara teknologi jenis yang digunakan pada memori ini adalah flash memori dengan ukuran bervariasi antara 1kbyte sampai beberapa ratus Kbyte (untuk mikrokontroler Atmega8535, jumlah flash yang tersedia adalah 8kByte). Dalam sistem mikrokontroler, memori program ini hanya dapat ditulis dari luar pada saat mikrokontroler sedang diprogram.
Memori Data: Memori data atau SRAM (Static Random Acces Memory) adalah memori yang bersifat mampu tulis dan baca, memiliki orde puluhan sampai ratusan Byte (jumlah moderatnya 256 byte) Dalam sebuah aplikasi, memori jenis ini umumnya digunakan untuk menyimpan variabel yang nilainya dimungkinkan diubah pada saat aplikasi (program) berjalan. Pada seri AVR Atmega8535 jumlah SRAM yang tersedia adalah 512 Byte.
Memori EEPROM :Electrically Erasable Programmable read only Memory (EEPROM): merupakan memori nonvolatile (tidak hilang ketika catu daya mati) yang menyerupai SRAM dalam fleksibilitas pemrogramannya. Memori jenis ini pada umumnya digunakan untuk menyimpan data–data permanen yang akan digunakan dalam program. Salah satu kerugian memori jenis ini adalah terbatas dalam kemampuan hapus-tulisnya (erase/write) yaitu sekitar 10.000 kali. Untuk mikrokontroler Atmega8535, jumlah EEPROM yang tersedia adalah 512 Byte.
General Purpose Register
General Purpose Register (Register serbaguna) atau dikenal juga dengan istilah file register adalah kumpulan register atau lokasi sementara yang terdapat pada CPU yang berfungsi untuk menampung data menuju dan dari ALU. Bergantung mikrokontroler-nya, Jumlah register yang terdapat pada blok ini dapat bervariasi sampai 32 buah –- jumlah yang relatif banyak untuk ukuran sistem mikrokontroler. Gambar 3.5 berikut ini memperlihatkan ilustrasi general purpose register dengan register 8 bit yang dimiliki sebanyak 32 buah.
Gambar 1.2 Register 8 bit
Tidak seperti pada sistem mikroprosesor, register-register yang terdapat pada CPU mikrokontroler umumnya dapat dimanipulasi dan diakses pada level bit tunggal.
I/O Paralel
Pada dasarnya I/O paralel adalah port atau gerbang yang digunakan untuk komunikasi antara CPU dengan dunia luar. Secara fungsional kita dapat memprogram port ini sebagai gerbang masukan , keluaran atau keduanya.
Tergantung pada jenisnya Port ini jumlahnya bervariasi antara 4 sampai 32 Pin. Pada umumnya instruksi-instruksi untuk mengakses port ini sama dengan instruksi-instruksi yang digunakan untuk mengakses memori data. Dengan kata lain port paralel ini dalam sistem mikrokontroler diperlakukan sebagai memori data. Port I/O pada AVR memilik fasilitas pull-up internal.
Port I/O ini diatur melalui tiga buah register: DDxn, PORTxn, dan PINxn, dengan x menyatakan port dan n menyatakan nomor pin atau port.
DDRxn (Data Direction Register) berfungsi untuk mengatur arah port. Jika DDRxn diset satu, maka Pxn berfungsi sebagai pin output, sedangkan jika dinolkan, PINxn berfungsi sebagai input.
PORTxn: Jika DDRxn diset sebagai input, maka logika high pada PORTxn akan menyebabkan resistor pull-up akan aktif. Sedangkan jika DDRxn diset sebagai output, maka nilai PORTxn berfungsi mengatur keluaran logika pin.
PINxn: berfungsi untuk pembacaan kondisi logika pin.
I/O Serial UART
Port ini dapat digunakan untuk komunikasi antara mikrokontroler dengan peralatan lainnya secara serial: bit-perbit. Protokol standar yang paling banyak ditemui adalah RS232.
Timer/Counter
Tergantung konfigurasinya, blok ini dapat digunakan sebagai timer atau counter. Jika digunakan sebagai counter maka peralatan ini dapat digunakan untuk mencacah kejadian atau frekuensi luar, jika digunakan sebagai timer, maka alat ini digunakan sebagai basis pewaktuan. Semua mikrokontroler AVR paling sedikit mempunya sebuah timer 8-bit. ATmega8535 mempunyai 2 buah timer 8-bit dan satu buah timer 16-bit. Berikut adalah struktur internal salah satu timer tersebut, yaitu timer 0 (8-bit).
Timer/Counter (TC) mempunyai kemampuan untuk mencacah maju dengan kecepatan detak sesuai pilihan prescaler untuk frekuensi clock (prosesor). TC dapat distop dan restart tiap saat dengan mengeset sumber clock – mux ke nol. Sumber clock untuk TC0 (termasuk sumber clock eksternal) dikendalikan oleh tiga bit pada TCCR0, yaitu CS0, CS01, dan CS00.
Penghitungan cacah maju oleh timer ini dapat diakses pada register TCNT0. Apabila TCNT0 mengalami overflow dari 255 ke 0, pencacahan akan diulang kembali, dan bit interupsi overflow TOV0 pada register TIFR akan set menjadi 1. Jika fasilitas interupsi overflow aktif (diatur pada register SREG dan TIMSK), maka akan terjadi interupsi overflow timer 0, dan rutin interupsi (overflow) akan dikerjakan. Pada saat itu juga bit TOV0 akan dikembalikan nilainya secara otomatis menjadi 0.
Fasilitas lain pada timer ini adalah sebuah pembanding (comparator). Nilai yang akan dibandingkan dimasukkan ke dalam register OCR0. Apabila pada saat pencacahan isi dari TCNT0 sama dengan OCR0, maka flag OCF0 pada register TIFR akan set menjadi 1. Jika fasilitas interupsi aktif, maka akan terjadi interupsi dan rutin interupsi (compare match) akan dikerjakan. Pada saat ini secara otomatis bit )CF0 akan dikembalikan nilainya menjadi 0. Bit logika pembanding pada interupsi ini dapat diteruskan ke sebuah pin keluaran yang disebut OC0. Hasilnya adalah sebuah pulsa yang lebarnya dapat diatur. Ini adalah dasar pembangkitan PWM pada timer.
Timer Watchdog
Timer ini umum digunakan untuk me-restart prosesor jika dalam operasinya mikrokontroler mengalami hang. Timer ini sangat bermanfaat untuk aplikasi-aplikasi sensor atau sistem-sistem embedded lainnya.
Sistem Interupsi
AVR menyediakan berbagai sumber interupsi. Tiap interupsi diatur tersendiri oleh bit enable register-register tertentu. Untuk mengaktifkan suatu interupsi, bit enable interupsi tersebut harus diset 1 bersama dengan bit Global Interupsi Enable pada register.
1.2. Perangkat Keras Modul STK500
Modul STK500 adalah sebuah modul pengembang berbasis sistem microprocessor (microcontroller) keluarga AVR dari Atmel.
Modul STK500 ini memiliki beberapa fitur relative lengkap yang dapat digunakan sebagai sarana melakukan praktek micocontroller (untuk lebih detail, lihat datasheet STK500).
Gambar 1.3 dan 1.4 dibawah ini berturut-turut memperlihatkan tampilan fisik serta pinout dari modul STK500
Gambar 1.3 Tampilan fisik modul STK500
Gambar 1.4. Pinout modul STK500
Terkait dengan jenis microcontroller yang dapat diprogram, tabel 1.1 berikut memperlihatkan jenis micocntroller yang didukung oleh modul STK500
Tabel1.1. jenis AVR yang didukung modul STK500
Untuk tujuan eksperimen sederhana, modul STK ini telah menyediakan (secara built in) 8 buah modul LED dan 8 buah modul tactile Switch (lihat gambar 1.5 dan 1.6).
Gambar 1.5. Rangkaian Led (active LOW) beserta konektor headernya
Gambar 1.6. Rangkaian Switch (active LOW) beserta konektor headernya
Perangkat input/output diatas dapat secara mudah dikoneksikan dengan sistem I/O microcontroller lewat konektor-konektor pinout header yang telah disediakan pada modul (lihat gambar 1.7)
Gambar 1.7. Konektor 10 pin untuk koneksi Input/output micorcontroller dengan dunia luar
1.3. Downloader AVRISPmkII
Downloader adalah sebuah perangkat yang digunakan untuk mendownload program aplikasi pada target system microcontroller.
Dalam praktikum ini, downloader yang digunakan adalah downloader tipe AVRISPmkII seperti nampak pada gambar 1.8 dibawah
Gambar 1.8. Downloader AVRISPmkII
1.4 Perangkat Lunak: CodevisonAVR
Pada dasarnya CodeVisionAVR merupakan perangkat lunak pemrograman mikrokontroler keluarga AVR berbasis bahasa C. Ada tiga komponen penting yang telah diintegrasikan dalam perangkat lunak ini: Compiler C, IDE dan Program generator.
Berdasarkan spesifikasi yang dikeluarkan oleh perusahaan pengembangnya, Compiler C yang digunakan hampir mengimplementasikan semua komponen standar yang ada pada bahasa C standar ANSI (seperti struktur program, jenis tipe data, jenis operator, dan library fungsi standar-berikut penamaannya). Meskipun demikian, dibandingkan bahasa C untuk aplikasi komputer, compiler C untuk mikrokontroler ini memiliki sedikit perbedaan yang disesuaikan dengan arsitektur AVR tempat program C tersebut ditanamkan (embedded).
Khusus untuk library fungsi, disamping library standar (seperti fungsi-fungsi matematik, manipulasi String, pengaksesan memori dan sebagainya), CodeVisionAVR juga menyediakan fungsi-fungsi tambahan yang sangat bermanfaat dalam pemrograman antarmuka AVR dengan perangkat luar. Beberapa fungsi library yang penting diantaranya adalah fungsi-fungsi untuk pengaksesan LCD, komunikasi I2C, IC RTC (Real time Clock), sensor suhu LM75, SPI (Serial Peripheral Interface) dan lain sebagainya.
Untuk memudahkan pengembangan program aplikasi, CodeVisionAVR juga dilengkapi IDE yang sangat user friendly (lihat gambar 1.1). Selain menu-menu pilihan yang umum dijumpai pada setiap perangkat lunak berbasis Windows, CodeVisionAVR ini telah mengintegrasikan perangkat lunak downloader (in system programmer) yang dapat digunakan untuk mentransfer kode mesin hasil kompilasi ke dalam sistem memori mikrokontroler AVR yang sedang diprogram.
Gambar 1.9. IDE perangkat lunak CodeVisionAVR
Selain itu, CodeVisionAVR juga menyediakan sebuah tool yang dinamakan dengan Code Generator atau CodeWizardAVR (lihat gambar 1.10). Secara praktis, tool ini sangat bermanfaat membentuk sebuah kerangka program (template), dan juga memberi kemudahan bagi programmer dalam peng-inisialisasian register-register yang terdapat pada mikrokontroler AVR yang sedang diprogram. Dinamakan Code Generator, karena perangkat lunak CodeVision ini akan membangkitkan kode-kode program secara otomatis setelah fase inisialisasi pada jendela CodeWizardAVR selesai dilakukan. Gambar 1.3 berikut memperlihatkan beberapa penggal baris kode program yang dibangkitkan secara otomatis oleh CodeWizardAVR. Secara teknis, penggunaan tool ini pada dasarnya hampir sama dengan aplikasi wizard pada bahasa-bahasa pemrograman Visual untuk komputer (seperti Visual C, Borland Delphi, dan sebagainya).
Gambar 1.10. Code Generator yang dapat digunakan untuk menginisialisasi register-register pada mikrokontroler AVR.
Disamping versi yang komersil, Perusahaan Pavel Haiduc juga mengeluarkan CodeVisionAVR versi Demo yang dapat didownload dari internet secara gratis (lihat alamat URL: http://www.hpinfotech.ro) Dalam versi ini, memori flash yang dapat diprogram dibatasi maksimal 2K, selain itu tidak semua fungsi library yang tersedia dapat dipanggil secara bebas.
Gambar 1.11. Kode-kode program yang dibangkitkan otomatis oleh code generator
Gambar 1.12. berikut memperlihatkan diagram blok yang mengilustrasikan alur pemrograman mikrokontroler AVR dengan CodevisionAVR yang dapat anda lakukan :
Gambar 1.12. Alur pemrograman mikrokontroler AVR dengan menggunakan CodevisionAVR
Setting Tipe Downloader pada Codevision
Terkait dengan penggunaan downloader, agar option downloader selalu muncul secara otomatis sesaat setelah proses compilasi dan linking (proses make), lakukan dua hal berikut ini pada perangkat lunak codevisionAVR:
1. Pada jendela utama Codevision, pilih menu settings -> Programmers, kemudian, pilih option tipe downloader yang digunakan AVRISp mkII seperti nampak pada gambar 1.13 dibawah
Gambar 1.13. Tipe downloader yang digunakan
2. Setelah langkah 1 selesai dilakukan, kemudian click menu project -> configure. Click bar after built, centang box program the chip (lihat gambar 1.14)
Gambar 1.14. Konfigurasi yang dilakukan setelah proses make
Referensi : modul praktikum teknik sistem komputer 2012
0 komentar:
Posting Komentar
Komentlah sesuai dengan Etika yang berlaku didunia maya :D