Modul Praktikum Mikrokontroler– 3 Elka –D3 2013 taufiq[at]eepis[minus]its[dot]edu 1 Praktek 1 – Digital I/O TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Mengakses perangkat digital I/O 2. Mengerti struktur pemrograman C di CodeVisionAVR ver.2.03.4 Standart 3. Memprogram digital I/O sebagai Running led dengan berbagai metode 4. Mengaplikasi fungsi digital I/O pada mikrokontroler AVR TEORI Port I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau ouput dengan cara merubah isi Data Direction Register (DDRx). Pada bit DDRx menentukan arah pin pada port I/O yang akan digunakan nantinya. Jika diinginkan Port D dikonfigurasi sebagai output maka DDRC harus di-set sebagai 0xFFh. Dan jika difungsikan sebagai input maka nilainya pada DDRC adalah 0x00h Contoh : Untuk contoh kasus ini DDRC = 0 apabila konfigurasi hardware input (push button) terhubung pada VCC (bukan pada ground). Setiap pin I/O mikrokontroler AVR memiliki internal pull-up. Misalnya Port C terkonfigurasi sebagai input dimana sisi hardware input (push button) terhubung dengan ground (bukan VCC), maka internal pull-up harus diaktifkan. Contoh : Dan ketika port-port yang lainnya tidak digunakan, ada baiknya port tersebut di jadikan mode input dengan aktif internal pull-up. Namun jika projek dari pengguna mikrokontroler AVR tidak bermasalah dengan penggunan sumber daya, port yang tidak digunakan bisa dijadikan mode input yang bersifat floating point atau kondisi default. Kondisi pasif tersebut dibuat sedemikian rupa, jika ada insiden masuknya sumber daya ke salah satu port secara tidak sengaja masih bisa ditoleransi jika port tersebut pada mode input.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 1
Praktek 1 – Digital I/O
TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :
1. Mengakses perangkat digital I/O
2. Mengerti struktur pemrograman C di CodeVisionAVR ver.2.03.4 Standart
3. Memprogram digital I/O sebagai Running led dengan berbagai metode
4. Mengaplikasi fungsi digital I/O pada mikrokontroler AVR
TEORI Port I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau ouput dengan cara
merubah isi Data Direction Register (DDRx). Pada bit DDRx menentukan arah pin pada port I/O yang
akan digunakan nantinya. Jika diinginkan Port D dikonfigurasi sebagai output maka DDRC harus di-set
sebagai 0xFFh. Dan jika difungsikan sebagai input maka nilainya pada DDRC adalah 0x00h
Contoh :
Untuk contoh kasus ini DDRC = 0 apabila konfigurasi hardware input (push button) terhubung pada
VCC (bukan pada ground).
Setiap pin I/O mikrokontroler AVR memiliki internal pull-up. Misalnya Port C terkonfigurasi
sebagai input dimana sisi hardware input (push button) terhubung dengan ground (bukan VCC), maka
internal pull-up harus diaktifkan.
Contoh :
Dan ketika port-port yang lainnya tidak digunakan, ada baiknya port tersebut di jadikan mode
input dengan aktif internal pull-up. Namun jika projek dari pengguna mikrokontroler AVR tidak
bermasalah dengan penggunan sumber daya, port yang tidak digunakan bisa dijadikan mode input
yang bersifat floating point atau kondisi default. Kondisi pasif tersebut dibuat sedemikian rupa, jika
ada insiden masuknya sumber daya ke salah satu port secara tidak sengaja masih bisa ditoleransi jika
port tersebut pada mode input.
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 2
PROSEDUR PERCOBAAN
Prosedur Umum
1. Secara keseluruhan beberapa percobaan dibawah ini menggunakan wizard sehingga kode di-
generate secara otomatis.
2. Atur semua kode program yang ada kemudian diletakkan sesuai pada bagian-bagian kode hasil
generate wizard.
3. Pastikan hasil compile tidak menghasilkan error dengan menekan F9.
4. Selanjutnya download program tersebut ke MS-16 via USB dengan menekan Shift-F9 dan
tekan tombol Program the chip.
5. Amati dan analisa hasilnya kemudian catat hasil tersebut sebagai laporan sementara.
Prosedur Khusus
Rangkaian skematik Digital Input dan Output yang terdapat pada modul Interface (IF-01) adalah
sebagai berikut :
Input – DIP Switch dan Push Button
Input DIP Switch dan Push Button terhubung dengan PORTC, dimana pada skematik
setiap saklar terhubung pada GROUND. Serta sebanyak 4-bit LSB terhubung parallel
pada DIP Switch 8-bit. Sehingga ketika mendefinisikan PORTC sebagai input
menggunakan mode Input dengan Internal Pull-up.
Dengan tujuan ketika tombol tidak aktif mendapatkan kondisi yang pasti yaitu
mendapatkan logika ‘1’ dan aktif mendapatkan logika ‘0’. Syarat skematik ini tidak bisa
digunakan jika menggunakan mode input tipe Tri-state (Hi-Z) atau istilah lainnya
floating input
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 3
Output – BarLED
Dari skematik diatas, tiap BarLED terhubung dengan Resistor Pack sebesar 1K ohm.dan
tiap LED akan aktif jika diberikan keluaran logika “0’ dari PORTD. Sehingga ketika
PORTD di-inisialisasi sebagai Output yaitu DDRD=0xff dan PORTD=0x00 maka BarLED
tidak akan pernah menyala.
Berikut ini setting persiapan awal untuk mengakes AVR ATMega16 menggunakan CodeWizard AVR
dimana penggunaan Chip=ATmega16 dan Clock=11.059200, serta mengaktifkan PORTC sebagai Input
dengan Internal Pull-up dan PORTD sebagai Output, tampilan dari CodeWIzardAVR adalah sebagai
TUGAS 1. Amati kondisi LED pertama kali dan pergerakan LED.
2. Catat pemakaian memory flash yang dipakai dari masing-masing metode.
3. Kemudian jelaskan setiap baris terhadap syntax dari semua percobaan diatas kemudian
tarik kesimpulan.
4. Modifikasi program dari percobaan diatas agar bisa mendapatkan penggunaan memory
flash yang paling minimal untuk project Running LED yang baru.
5. Buat laporan resmi!
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 10
Praktek 2 – TIMER 8-bit dan 16-bit
TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :
1. Mengakses Timer dengan mode normal, compare match interrupt dan CTC
2. Memprogram timer dengan ketiga mode tersebut
3. Mengaplikasi fungsi timer pada mikrokontroler AVR
TEORI Jenis timer yang diberikan oleh AVR ada dua yaitu timer dengan resolusi 8-bit dan 16-bit.
Sedangkan fitur timer dari masing-masing resolusi tersebut adalah sebagai berikut :
1. TIMER 0 dan 2 (resolusi 8-bit)
Features a. Single Compare Unit Counter b. Clear Timer on Compare Match (Auto Reload) c. Glitch-free, Phase Correct Pulse Width Modulator (PWM) d. Frequency Generator e. External Event Counter f. 10-bit Clock Prescaler (1, 8, 64, 256, 1024) g. Overflow and Compare Match Interrupt Sources (TOV0 and OCF0)
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 11
2. TIMER 1 (resolusi 16-bit)
Features a. True 16-bit Design (i.e., Allows 16-bit PWM) b. Two Independent Output Compare Units c. Double Buffered Output Compare Registers d. One Input Capture Unit e. Input Capture Noise Canceler f. Clear Timer on Compare Match (Auto Reload) g. Glitch-free, Phase Correct Pulse Width Modulator (PWM) h. Variable PWM Period i. Frequency Generator j. External Event Counter k. Four Independent Interrupt Sources (TOV1, OCF1A, OCF1B, and ICF1)
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 12
Secara umum mode pada Timer/Counter 0, 1 dan 2, diantaranya :
a. Normal
Mode yang paling sederhana dalam penggunaan timer adalah mode Normal (WGM01:00=0).
Didalam mode normal ini arah hitungan timer bersifat hitung naik (incrementing). Pola kerja
dari timer mode normal ini menghitung hingga TOP=0xff dan kembali restart ke 0x00 (untuk
timer resolusi 8-bit). Dan nilai hitungan timer dapat diisi setiap saat pada register TCNTx
b. CTC (Clear Timer on Compare Match)
Didalam mode CTC menggunakan register OCRx untuk memanipulasi nilai hitungan timer
(WGM01:00=2). Mode CTC ini mulai menghitung naik (incrementing) dan otomatis kembali Nol
ketika nilai register TCNTx sama dengan nilai register OCRx. Fenomena ini dikatakan
mekanisme autoreload, dimana internal AVR secara otomatis memberikan isi register TCNT
bernilai 0 kembali dan berjalan hitung naik kembali dan seterusnya. Sehingga timer dengan
mode CTC ini lebih presisi dibandingkan mode normal.
Dari mode CTC ini, terdapat istilah pembagi clock (prescaller = N) yang harus diketahui dalam
menghitung waktu atau frekuensi yang akan ditentukan nantinya, rumusan tersebut yaitu :
atau
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 13
Rumusan waktu maksimum dari suatu timer adalah sebagai berikut.
Dimana : Fclk = nilai frekuensi kristal yang digunakan.
α = nilai bit timer yang digunakan, bisa 8-bit atau 16-bit.
jika 8-bit maka α = 255
jika 16-bit maka α = 65535
N = Prescaller, faktor pembagi mulai 8, 64, 256 1024.
Contoh :
Diketahui Fclk = 11.059200 Mhz dan menggunakan TIMER 0/2, maka α = 255
Hitung waktu maksimum timer tersebut dengan prescaller 1.
Jawab :
Sehingga jika ingin didapatkan waktu maksimum dari timer 1 yang memiliki resolusi 16 bit dengan
prescaller =1 didapatkan
Gunakan rumus berikut ini untuk menentukan Timer Value berdasarkan Interval Timer yang
diinginkan :
Dimana :
Interval Timer = Waktu yang diinginkan
Clock Value= Frekuensi kristal per prescaler,
Timer Value = besaran waktu yang akan ditanamkan pada mikrokontroler
α = nilai bit timer yang digunakan, bisa 8-bit atau 16-bit.
jika 8-bit maka α = 255
jika 16-bit maka α = 65535
Modul Praktikum Mikrokontroler– 3 Elka –D3 2013
taufiq[at]eepis[minus]its[dot]edu 14
PROSEDUR PERCOBAAN
Prosedur Umum
1. Secara keseluruhan beberapa percobaan dibawah ini menggunakan wizard sehingga kode di-
generate secara otomatis.
2. Atur semua kode program yang ada kemudian diletakkan sesuai pada bagian-bagian kode hasil
generate wizard.
3. Pastikan hasil compile tidak menghasilkan error dengan menekan F9.
4. Selanjutnya download program tersebut ke MS-16 via USB dengan menekan Shift-F9 dan
tekan tombol Program the chip.
5. Amati dan analisa hasilnya kemudian catat hasil tersebut sebagai laporan sementara.
Prosedur Khusus
Percobaan ke :
1. Generate delay 1 detik TIMER1 menggunakan mode normal