• Tidak ada hasil yang ditemukan

Mikrokontroler

N/A
N/A
Protected

Academic year: 2021

Membagikan "Mikrokontroler"

Copied!
42
0
0

Teks penuh

(1)

MICROCONTROLLER BASIC

ATMEGA16

Tim Trainer Mikrokontroler

2011

(2)

DAFTAR ISI

BAB 1 INTRODUCTION 3

BAB 2 INPUT/OUTPUT & ADC 9

BAB 3 TIMER/COUNTER 21

BAB 4 PWM 27

(3)

BAB I

INTRODUCTION

1.1. Sistem Komputer

Pada level yang paling sederhana, komputer adalah mesin yang didesain untuk mengolah, menyimpan, dan mendapatkan kembali sebuah data. Data/informasi yang menjadi bagian operasi dari sebuah komputer adalah berupa angka. Semua operasi yang bisa dilakukan komputer seperti: web browsing, printing, dan image processing tidak lebih merupakan kegiatan menahan, memindahkan dan mengubah/memanipulasi angka angka.

Sistem komputer dibagi menjadi dua kategori, yaitu:

a) Desktop komputer, mesin yang sering kita sebut sebagai “komputer”, komputer yang ada di pikiran kita. Desktop komputer bisa menjalankan beragam program dengan sistem yang diatur oleh suatu operating sistem (OS) seperti: Windows dan Linux. Dengan menjalankan aplikasi program yang berbeda, fungsi dari desktop komputer juga berubah.

b)Embedded komputer, komputer yang terintegrasi dengan sistem lain (ex: mekanika) dan digunakan untuk suatu fungsi tertentu. Seperti: microwave oven, DVD player, mainan, handphone dll. Embedded komputer pada umumnya didesain untuk satu aplikasi saja.

Sistem komputer disusun dari banyak komponen, seperti: processor, memory, input/output peripheral dll. Berikut adalah gambar skema sistem komputer sederhana.

(4)

Gambar 1.1: Sistem komputer sederhana

a) PROCESSOR

Processor/CPU (Central Processing Unit) adalah komponen dari

suatu sistem komputer yang melakukan proses manipulasi dan

pengolahan (eksekusi) data berdasarkan urutan instruksi dari memory. Instruksi yang dijalankan oleh processor disebut dengan

opcodes atau machine-code.

Opcodes merupakan bahasa mesin berupa angka-angka yang kadang sulit dimengerti oleh pengguna, untuk itu dibangun instruksi operasi processor dalam bahasa assembly yang disebut dengan

mnemonic. Urutan dari kumpulan instruksi sebuah processor disebut dengan program. Program yang dijalankan processor bisa diubah sesuai dengan kebutuhan aplikasi, sehingga komputer

bersifat programmable.

b) MEMORY

Memory merupakan komponen sistem komputer yang berfungsi untuk menyimpan data dan instruksi (program) yang dijalankan oleh processor. Ada beberapa jenis memory yang biasa digunakan oleh suatu sistem komputer,

1) RAM (Random Acces Memory), RAM adalah “Working Memory” pada sistem komputer, dimana CPU dapat menuliskan

(5)

data untuk disimpan sementara. RAM bersifat ”volatile”, yang berarti datanya akan hilang apabila catu daya dimatikan.

2) ROM (Read Only Memory), bersifat “non volatile”, yang berarti data tidak akan hilang meskipun catu daya dimatikan. Tujuan utama dari ROM adalah menyimpan kode/data yang dibutuhkan pada saat start up.

c) PERANGKAT INPUT/OUTPUT

Perangkat input/output atau peripheral i/o digunakan oleh processor untuk berkomunikasi dengan dunia luar. Contoh pemakaian perangkat i/o adalah serial komunikasi pada keyboard, dan parallel

komunikasi pada printer. Perangkat i/o merupakan piranti

pengkondisi sinyal sebelum dapat diolah oleh processor atau setelah diolah processor sehingga dapat dikeluarkan berupa output data digital. Ada 3 cara input/output untuk berkomunikasi dengan processor,:

1) Programmed i/o, processor mengirim dan menerima data pada i/o sesuai instruksi.

2) Interrupt-driven i/o, sinyal dari luar mengatur eksekusi instruksi processor. Sinyal luar akan menghentikan eksekusi program yang dijalankan saat itu, dan menjalankan fungsi program interrupt.

3) Direct Memory Acces (DMA), memungkinkan transfer data langsung antara peripheral i/o dan memory tanpa keterlibatan processor. Biasanya digunakan pada sistem yang membutuhkan transfer data cepat.

1.2. Mikrokontroller

Mikrokontroller adalah piranti elektronik berupa IC (Integrated

Circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan Page | 5

(6)

suatu urutan instruksi (program) yang dibuat oleh programmer. Mikrokontroller merupakan contoh suatu sistem komputer sederhana yang masuk dalam

kategori embedded komputer. Dalam sebuah struktur mikrokontroller akan kita temukan juga komponen-komponen seperti: processor, memory, clock dll.

Gambar 1.2: contoh beberapa bentuk mikrokontroller ATMEL Kegiatan desain otomasi merupakan kegiatan memetakan sinyal input menjadi sinyal output berdasarkan suatu fungsi kontrol agar bisa dimanfaatkan sesuai kebutuhan. Sasaran dari pelatihan ini adalah peserta mampu menggunakan mikrokontroller untuk membangun sendiri suatu sistem otomasi atau embedded system.

1.3. ATMEL AVR ATMEGA16

Sebelum belajar lebih dalam tentang aplikasi mikrokontroller, ada baiknya kita bicarakan dulu tentang mikrokontroller yang kita gunakan. Pada pelatihan ini dipilih mikrokontroller jenis ATMEL AVR RISC dengan pertimbangan sebagai berikut:

a) ATMEL AVR RISC memiliki fasilitas dan kefungsian yang lengkap dengan harga yang relatif murah.

(7)

b) Kecepatan maksimum eksekusi instruksi mikrokontroller mencapai

16 MIPS (Million Instruction per Second), yang berarti hanya dibutuhkan 1 clock untuk 1 eksekusi instruksi.

c) Konsumsi daya yang rendah jika dibandingkan dengan kecepatan eksekusi instruksi.

d) Ketersediaan kompiler C (CV AVR) yang memudahkan user memprogram menggunakan bahasa C.

Dari kemampuan dan fasilitas yang dimiliki, AVR RISC cocok dipilih sebagai mikrokontroller untuk membangun bermacam-macam aplikasi embedded sistem. Oleh karena itu, dalam pelatihan ini juga dipilih

salah satu jenis AVR RISC sebagai dasar pelatihan yaitu ATMEGA

16. Chip AVR ATMEGA16 memiliki 40 pin kaki, berikut skema kaki

ATMEGA16

Gambar 1.3: skema mikrokontroller AVR RISC ATMEGA16

(8)

ATMEGA16 memiliki 4 buah port input/output 8 bit, yaitu PORT A, PORT B, PORT C, dan PORT D. Selain sebagai input/output masing masing port juga memiliki fungsi yang lain. Misalny PORTA dapat

difungsikan sebagai ADC (Analog to Digital Converter)

.Fungsi-fungsi yang lain dapat dilihat pada datasheet ATMEGA16.

1.4. Pemrograman ATMEL AVR

Ada 2 cara untuk memprogram mikrokontroller ini, menggunakan software AVR assembler yang berbasis pada bahasa assembly, dan menggunakan software CV AVR (Code Vision AVR) yang berbasis pada bahasa C. Pada pelatihan ini akan digunakan cara yang kedua dengan pertimbangan kemudahan pembuatan program dari algoritma yang telah dibangun.

Pelatihan ini tidak menitikberatkan penggunaan bahasa C pada CV AVR, tapi lebih pada cara dan aplikasi dari mikrokontroller. Untuk itu peserta diharapkan membaca sendiri petunjuk pemakaian software ini. Berikut tampilan utama CVAVR.

(9)

Gambar 1.4: tampilan utama CV AVR

(10)

BAB 2

INPUT/OUTPUT & ADC

2.1 Input/Output

Fasilitas input/output merupakan fungsi mikrokontroller untuk dapat menerima sinyal masukan (input) dan memberikan sinyal keluaran (output). Sinyal input maupun sinyal output adalah berupa data digital 1 (high, mewakili tegangan 5 volt) dan 0 (low, mewakili tegangan 0 volt). Mikrokontroller ATMEGA16 memiliki 4 buah PORT 8 bit bidirectional yang dapat difungsikan

sebagai PORT input maupun PORT output yaitu PORTA, PORTB , PORTC,

dan PORT D. Register digunakan untuk mengatur fungsi dari pin-pin pada tiap port. Register dapat dianalogikan sebagai kumpulan switch on/off yang digunakan untuk mengaktifkan fungsi apa yang akan dipakai dari port

mikrokontroller. Pada setiap port pin terdapat 3 buah register 8 bit: DDRxn,

PORTxn, dan PINxn.

Register DDRxn digunakan untuk menentukan arah dari pin yang bersangkutan. Jika DDRxn diberikan nilai 1 (high), maka pin digunakan sebagai output. Jika DDRxn diberikan nilai 0 (low), maka pin difungsikan sebagai input.

Register PORTxn digunakan untuk mengaktifkan pull-up resistor (pada saat pin difungsikan sebagai input), dan memberikan nilai keluaran pin high/low (pada saat difungsikan sebagai output). PINxn merupakan register yang berfungsi untuk mengetahui keadaan tiap-tiap pin pada mikrokontroller.

Perangkat keras yang dibutuhkan untuk mendemonstrasikan aplikasi input/output adalah sebagai berikut:

a) Led Array (output indicator)

Gambar 1.5: skema led output indicator

(11)

Aplikasi Praktik

Berikut adalah beberapa aplikasi praktik yang nantinya dapat lebih menjelaskan fungsi dan fasilitas input/output. Peserta diharapkan mengikuti petunjuk langkah demi langkah.

Project 1: Output

Setting Hardware

a) Hubungkan PORTC dengan led array.

b) Hubungkan SPI port pada universal board dengan port USB

Laptop menggunakan downloader/ USB ASP.

Programming

a) Buka CV AVR., pilih File->New->Project.

b) Klik YES ketika terdapat option untuk meggunakan

codeWizardAVR.

c) Pilih chip yang akan digunakan ATMEGA16 dengan harga

clock 12 Mhz.

d) Klik tab Ports, pilih tab Port C seperti pada gambar, ubah setting bit 0 – bit 7 sebagai out.

Hasil setting ini berpengaruh pada nilai register DDRxn, dan PORTxn.

e) Setting selesai, untuk mengenerate program pilih File >> Generate, Save, and Exit.

f) Buat direktori dengan nama io1.

g) Save file CV AVR dengan nama io1.cwp pada direktori io1. h) Save file .C dengan nama io1.c pada direktori io1.

i) Save file project dengan nama io1.prj pada direktori io1.

(12)

Listing Program

a) Sekarang perhatikan kode bahasa C pada bagian setting register

DDRxn, dan PORTxn, tampak sebagai berikut: b)

c) DDRC = 0xFF yang berarti 8 bit port C difungsikan sebagai output.

PORTC = 0x00 berarti nilai awalan output adalah 0(low).

d) Nilai register PORTC diatas adalah nilai awalan pada saat mikrokontroller start-up, kita bisa mengubah nilai output port C dengan mengubah nilai register PORTC pada looping while.

(13)

f) PORTC = 0xCD, nilai output port C adalah CD dalam bentuk hexa atau 11001101 dalam bentuk biner.

g) Program chip dengan memilih menu Project >> Make atau dengan menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message.

h) Klik Program, jika ada kesalahan periksa kembali setting hardware.

i) Perhatikan led array, lampu led akan menyala 11001101 jika diurut dari

Port7- Port0.

j) Ulangi langkah 2 sampai 6 dengan memberikan nilai PORTC yang berbeda beda pada looping while. Perhatikan perubahan nyala led pada led array.

Project 2: Input

Setting Hardware

(14)

a) Hubungkan PORTC dengan led array.

b) Hubungkan PORTB universal board dengan push button array.

c) Hubungkan SPI port pada universal board dengan port USB

Laptop menggunakan downloader.

Programming

a) Buka CV AVR., pilih File->New->Project.

b) Klik YES ketika terdapat option untuk meggunakan

codeWizardAVR.

c) Pilih chip yang akan digunakan ATMEGA16 dengan harga clock

12Mhz.

d) Setting port C sebagai output (out).

e) Setting port B sebagai Input (in) dan aktifkan pull-up resistor. (lihat gambar)

(15)

f) Setting selesai, untuk mengenerate program pilih File >> Generate,

Save, and Exit.

g) Buat direktori dengan nama io2.

h) Save file CV AVR dengan nama io2.cwp pada direktori io2. i) Save file .C dengan nama io2.c pada direktori io2.

j) Save file project dengan nama io2.prj pada direktori io2.

Listing Program

a) Perhatikan setting register port B dan port C.

(16)

Port B difungsikan sebagai input (DDRB = 0x00) dengan 8 bit

pull-up resistor diaktifkan (PORTB=0xFF). Port C difungsikan sebagai

output (DDRC=0xFF) dengan nilai awalan pada tiap bit 1 (high).

b) Pada listing kode diatas kita telah men-set port B sebagai input dengan pull-up resistor dan port C sebagai output. Untuk dapat menunjukkan funggsi input mikrokontroller tambahkan listing kode berikut pada bagian looping while.

maksud dari listing program diatas adalah kita menscan register PINB terus menerus dari PINB.0 – PINB.7. Perhatikan bahwa untuk membaca perubahan keadaan input

dari push-button dibaca pada register PINxn bukan pada

register PORTxn maupun DDRxn.

c) Program chip dengan memilih menu project >> make atau

dengan menekan shift + F9. Jika pada kode masih terdapat

(17)

d) Klik Program, jika ada kesalahan periksa kembali setting hardware.

e) Jika langkah langkah diatas telah dilakukan dengan benar, maka led pada port C akan menyala sesuai dengan push-button yang ditekan pada port B.

2.2 ADC (Analog to Digital Converter)

ADC (Analog to Digital Converter) adalah salah satu fasilitas mikrokontroller ATMEGA16 yang berfungsi untuk mengubah data analog

menjadi data digital. ADC memiliki 2 karakter prinsip, yaitu kecepatan

sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu Page | 17

(18)

tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per second (SPS).

Gambar 4.1: ADC dengan kecepatan sampling rendah dan kecepatan sampling tinggi

Resolusi ADC menentukan ketelitian nilai hasil konversi ADC.

Sebagai contoh: ADC 8 bit akan memiliki output 8 bit data digital, ini berarti sinyal input dapat dinyatakan dalam 255 (2n – 1) nilai diskrit. ADC 12 bit memiliki 12 bit output data digital, ini berarti sinyal input dapat dinyatakan dalam 4096 nilai diskrit. Dari contoh diatas ADC 12 bit akan memberikan ketelitian nilai hasil konversi yang jauh lebih baik daripada ADC 8 bit.

Prinsip kerja ADC adalah mengkonversi sinyal analog ke dalam bentuk besaran yang merupakan rasio perbandingan sinyal input dan tegangan referensi. Sebagai contoh, bila tegangan referensi 5 volt, tegangan input 3 volt,

(19)

rasio input terhadap referensi adalah 60%. Jadi, jika menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan sinyal digital sebesar 60% x 255 = 153 (bentuk decimal) atau 10011001 (bentuk biner).

ADC pada ATMEGA16 adalah jenis 10 bit successive

approximation dengan tegangan referensi maksimum 5 volt. Register-register

yang harus di setting adalah ADMUX, ADCSRA, dan SFIOR.

Aplikasi Praktik

Setting Hardware

a) Hubungkan kaki tengah potensiometer pada channel 1 port A

(PORTA.0), dua kaki lainnya pada ground dan Vcc.

b) Hubungkan PORTB universal board dengan port OUTPUT pada

input/output board ( led array).

Programming

a) Buka CV AVR., pilih File->New->Project.

b) Klik YES ketika terdapat option untuk meggunakan

codeWizardAVR.

c) Pilih chip yang akan digunakan ATMEGA16 dengan harga clock

12 Mhz.

d) Setting port B sebagai output (out).

e) Setting port A sebagai ADC, klik tab ADC kemudian setting

seperti pada gambar.

(20)
(21)

f) Setting selesai, untuk mengenerate program pilih File >> Generate, Save, and Exit.

g) Buat direktori dengan nama adc.

h) Save file CV AVR dengan nama adc pada direktori adc.

i) Save file .C dengan nama adc.c pada direktori adc. j) Save file project dengan nama adc.prj pada direktori adc.

Listing Program

a) Perhatikan setting register port B. Kita telah men-set port B sebagai output.

b) Perhatikan bagian listing kode ADC

(22)

terlihat setting register-register yang mempengaruhi, yaitu

ADMUX, ADCSRA, SFIOR.

c) Sekarang kita mendeklarasikan variable unsigned char didalam

fungsi main. Dipilih unsigned char karena tadi pada saat setting

ADC (langkah ke 5) kita meng-enable-kan box use 8 bit, yang berarti kita memilih ADC 8 bit. Berikut pendeklarasian variabelnya.

d) Nilai hasil konversi ADC ditempatkan dengan nama variable

adc_data[n]. Berikut listing kode untuk mendapatkan nilai hasil

konversi ADC dan menampilkannya pada 8 bit output port B.

e) Program chip dengan memilih menu project >> make atau

dengan menekan shift + F9. Jika pada kode masih terdapat

(23)

f) Klik Program, jika ada kesalahan periksa kembali setting hardware.

g) Putar putar potensiometer, jika langkah langkah diatas telah benar output pada led array akan menunjukkan nilai dari ADC.

(24)
(25)

BAB 3

TIMER/COUNTER

Timer dan counter adalah dua fasilitas yang memiliki perangkat yang sama,

seperti halnya register penampungnya (TCNTx). Ketika difungsikan sebagai

timer, maka register penampung tersebut berisikan jumlah waktu yang terlampaui tiap selang waktu tertentu. Besar selang waktu tersebut dapat disetting sesuai dengan kebutuhan. Jika dipakai sebagai counter, maka register penampung tersebut digunakan untuk menyimpan data hasil perhitungan

terakhir. Saat difungsikan sebagai counter, maka masuk melewati pin TO dan

T1. Register untuk mengatur kapan timer difungsikan sebagai timer dan kapan

sebagai counter adalah TCCRx.

ATMEGA16 memiliki fasilitas 3 buah timer/counter yaitu timer/counter0 8

bit, timer/counter1 16 bit, dan timer/counter2 8 bit. 8 bit dan 16 bit adalah jumlah data yang bisa ditampung pada register penampungnya. Pada bab ini akan didemonstrasikan 2 aplikasi praktik, dengan tujuan peserta bisa membedakan fungsi dari timer dan counter pada mikrokontroller.

Register–register yang digunakan untuk mengatur timer dan counter bisa dilihat pada DATASHEET ATMEGA16.

TIMER Menghitung Timer T(timer0) = Tosc*N*(256-TCNT0) T(timer1) = Tosc*N*(65536-TCNT1) T(timer2) = Tosc*N*(256-TCNT2) Tosc = 1/fosc

T(timer) : Waktu inerval interupt timer

Tosc : Periode clock

fosc : Frekuensi clock

(26)

N : Skala clock (ada dalam datasheet)

Menghitung Timer dengan menggunakan CVAVR T(timer0 interupt) = (1/clock value)*(256 – Timer value) PROJECT 1

MEMBUAT LED BERKEDIP SETIAP 1 DETIK

Setting hardware

1. Hubungkan PORTC universal board dengan port OUTPUT pada

input/output board (led array).

2. Hubungkan SPI port pada universal board dengan port USB menggunakan

downloader.

(27)

1. Dengan menggunakan cara yang sama seperti sebelumnya pada CVAVR set timer0 seperti pada gambar. Timer0 akan mengalami overflow interupt setiap 1ms dan gunakan PORTC sebagai output. T(timer0 interupt) = (1/clock value)*(256 – Timer value)

1/46,875kHz * (256 – 209) = 1,00266 ms≈ 1ms

2. Untuk mencapai nilai 1 detik maka diperlukan 1000 kali siklus. Dengan

menambahkan program pada fungsi interrupt [TIM0_OVF] sebagai

berikut.

Program ini akan dieksekusi tiap 1ms dan setiap eksekusi nilai varibel cacah akan ditambah terus menerus sampai mencapai nilai 1000. Ketika sudah mencapai nilai 1000 maka varibel data nilainya akan berubah menjadi kebalikannya dan varibel cacah akan direset kembali menjadi nol. Proses akan terus terulang.

3. Gunakan PORTC sebagai output dengan menambahkan program berikut

(28)

Program ini adalah program utama yang mana program ini akan mengeluarkan nilai varibel data ke PORTC.

4. Program dan Jalankan pada KIT.

PROJECT 2

Dengan menggunakan cara dan ketentuan yang sama gunakan timer 1 untuk membuat LED berkedip tiap 2 detik.

Nb. Perhitungan Timer 1

T(timer1 interupt) = (1/clock value)*(65536 – Timer value) COUNTER

PROJECT 3

Setting hardware

1. Hubungkan PORTC universal board dengan port OUTPUT pada

input/output board (led array).

2. Hubungkan SPI port pada universal board dengan port USB menggunakan

downloader.

Pada project ini kita akan belajar prinsip kerja counter dengan menggunakan input dari luar.

1. Hubungkan PORTB.0/T0 dengan pushbutton.

2. Seting pada CVAVR sesuai dengan gambar dan gunakan PORTC sebagai output. Anda bisa memilih penambahan nilai akan dieksekusi pada saat tepi naik atau tepi turun.

(29)

Fungsi ini akan dieksekusi ketika tombol T0 ditekan. Ketika T0 ditekan nilai TCNT0 akan bertambah, karena nilai TCNT0 awal adalah FEh maka ketika ditambah satu akan terjadi overflow dan interupsi akan terjadi.

4. Gunakan PORTC sebagai output dan tuliskan program berikut pada fungsi utama

(30)

Program ini berfungsi mengeluarkan nilai variabel data ke PORTC. 5. Program dan jalankan pada KIT

PROJECT 4

Buatlah program dimana nilai dari PORTC akan bertambah jika tombol T1 ditekan sebanyak lima kali! Gunakan Timer1 sebagai counter.

(31)

BAB 4

PWM (Pulse Width Modulation)

PWM (Pulse Width Modulation) adalah teknik mendapatkan efek sinyal analog dari sebuah sinyal digital yang terputus-putus. PWM dapat dibangkitkan hanya dengan menggunakan digital i/o yang difungsikan sebagai output

Gambar 4.1 Contoh PWM dengan duty cycle 50%.

Pada contoh gelombang diatas, perbandingan waktu antara sinyal high (1) dan sinyal low (0) adalah sama. Gelombang diatas dikatakan memiliki duty cycle 50%. Duty cycle adalah perbandingan antara lebar sinyal high (1) dengan lebar keseluruhan siklus (cycle). Jika amplitudo gelombang PWM adalah 5 volt, maka tegangan rata rata (seolah olah analog) yang kita dapatkan adalah 2,5 volt. Berikut contoh gelombang PWM dengan duty cycle 10%, jika amplitudo gelombang 5 volt maka akan didapatkan tegangan rata rata analog 0,5 volt.

Gambar 4.2 Contoh PWM dengan duty cycle 10%

Pada ATMEGA 16 ada 2 cara membangkitkan PWM, yang pertama PWM dapat dibangkitkan dari port input/outputnya yang difungsikan sebagai output. Yang kedua adalah dengan memanfaatkan fasilitas PWM dari fungsi timer/counter yang telah disediakan. Dengan adanya fasilitas ini proses pengaturan waktu high/low sinyal digital tidak akan mengganggu urutan program lain yang sedang dieksekusi oleh processor. Selain itu, dengan menggunakan fasilitas ini kita tinggal memasukkan berapa porsi periode waktu

(32)

on dan off gelombang PWM pada sebuah register. OCR1A, OCR1B dan

OCR2 adalah register tempat mengatur duty cycle PWM.

Pada bab ini akan diperagakan bagaimana cara mendapatkan sinyal analog dari sebuah sinyal digital dengan menggunakan teknik PWM.

Aplikasi Praktik

Setting Hardware

0 1. Hubungkan PORTD.4 dan PORTD.5 pada port OUTPUT

input/output-board

1 2. Hubungkan SPI port pada universal board dengan port USB Laptop

menggunakan downloader.

Programming

0 1. Buka CV AVR., pilih File->New->Project.

1 2. Klik YES ketika terdapat option untuk meggunakan codeWizardAVR.

2 3. Pilih chip yang akan digunakan ATMEGA16 dengan harga clock 16

Mhz.

3 4. Setting PORTD.4 (OC1B) dan PORTD.5 (OC1A) sebagai output

(33)

4

5 5. Klik tab Timers, pilih tab timer1 kemudian setting seperti pada

gambar. Perhatikan setting mode non-inverted pada out A dan

mode inverted pada out B.

(34)

6

0 6. Setting selesai, untuk mengenerate program pilih File >> Generate,

Save, and Exit.

7 7. Buat direktori dengan nama pwm.

8 8. Save file CV AVR dengan nama pwm pada direktori pwm.

9 9. Save file .C dengan nama pwm.c pada direktori pwm.

10. Save file project dengan nama pwm.prj pada direktori pwm. ● Project Setting

1 1. Terlihat pada tampilan CV AVR kode yang telah digenerate. Konfigurasi

project dengan memilih menu project >> configure.

2 2. Pilih tab after make, aktifkan program the chip.

(35)

0 1. Kita telah menyetting PORTD.4 dan PORTD.5 sebagai output, dengan nilai awal 0 (low).

1

0 2. Perhatikan register yang mempengaruhi, sama seperti register pada timer/counter pada bab sebelumnya.

0 3. Untuk mengatur porsi on dan off kita berikan nilai pada register OCR1A

dan OCR1B pada looping while. Nilai maksimum dari OCR1A dan

OCR1B adalah 1023 (10bit) seperti pada setting kita sebelumnya (langkah

5). Tuliskan listing kode seperti dibawah,

1

(36)

4. Kita telah memberikan nilai 800 pada OCR1A dan 800 pada OCR1B (skala 1023).

1 5. Program chip dengan memilih menu project >> make atau dengan

menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan

terlihat pada message.

2 6. Klik Program the chip, jika ada kesalahan periksa kembali setting hardware.

3 7. Amati nyala lampu pada input/output-board.

4 8. Ulangi dengan memberikan nilai OCR1A dan OCR1B yang berbeda beda.

2

(37)

BAB 5

LCD

Pada software CodeVisionAVR telah disediakan beberapa rutin standar yang dapat langsung digunakan. Anda dapat melihat lebih detil pada manual dari CodeVisionAVR. Beberapa contoh fungsi yang telah disediakan antara lain adalah:

1) Fungsi LCD:

Berada pada header lcd.h yang harus di-include-kan sebelum

digunakan. Sebelum melakukan include terlebih dahulu disebutkan pada port

mana LCD akan diletakkan. Hal ini juga dapat dengan mudah dilakukan dengan menggunakan CodeWizardAVR.

Fungsi-fungsi untuk mengakses LCD diantaranya adalah :

unsigned char lcd_init(unsigned char lcd_columns)

Untuk menginisialisasi modul LCD, menghapus layar dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. Jumlah kolom pada LCD harus disebutkan (misal, 16). Kursor tidak ditampakkan. Nilai yang dikembalikan adalah 1 bila modul LCD terdeteksi, dan bernilai 0 bila tidak terdapat modul LCD. Fungsi ini harus dipanggil pertama kali sebelum menggunakan fungsi yang lain.

void lcd_clear(void)

Menghapus layar LCD dan meletakkan posisi karakter pada baris ke-0 kolom ke-0.

(38)

void lcd_gotoxy(unsigned char x, unsigned char y)

Meletakkan posisi karakter pada kolom ke-x baris ke-y. Nomor baris dan kolom dimulai dari nol.

void lcd_putchar(char c)

Menampilkan karakter c pada LCD.

void lcd_puts(char *str)

Menampilkan string yang disimpan pada SRAM pada LCD.

2) Fungsi Delay:

Menghasilkan delay dalam program-C. Berada pada header delay.h

yang harus di-includekan sebelum digunakan. Sebelum memanggil fungsi,

interrupsi harus dimatikan terlebih dahulu, bila tidak maka delay akan lebih lama dari yang diharapkan. Juga sangat penting untuk menyebutkan frekuensi clock chip IC AVR yang digunakan pada menu Project-Configure-C Compiler-Code Generation.

Fungsi delay yang disediakan adalah:

void delay_us(unsigned int n)

menghasilkan delay selama n μ-detik, n adalah nilai konstan

void delay_ms(unsigned int n)

menghasilkan delay selama n mili-detik, n adalah nilai konstan. Kedua fungsi tersebut secara otomatis akan me-reset watchdog-timer setiap 1 milidetik

dengan mengaktifkan instruksi wdr.

Aplikasi Praktik

Setting Hardware

a) Hubungkan PORTC universal board dengan push button

(port INPUT pada input/output-board) menggunakan kabel pita.

b) Hubungkan PORT D universal board dengan LED Array

(39)

c) Hubungkan PORTB universal board dengan LCD pin menggunakan kabel pita.

d) Hubungkan SPI port pada universal board dengan port

USB Laptop menggunakan downloader.

e) Hidupkan saklar power, led power pada universal board

harus dalam keadaan nyala.

Programming

a) Buka CV AVR., pilih File->New->Project.

b) Klik YES ketika terdapat option untuk meggunakan codeWizardAVR

c) Pilih chip yang akan digunakan ATMEGA16 dengan harga clock 4

Mhz. kemudian pilih tab Ports, secara default port merupakan pin input,

lakukan seting untuk portD sebagai output, lalu pilih tab LCD, gunakan portB karena pada board LCD terhubung dengan portB.

(40)

d) Setting selesai, untuk mengenerate program pilih File >> Generate, Save, and

Exit.

e) Simpan pada direktori e:\embedded. Beri nama source file, nama

project file, dan nama codewizard project file anda.

f) Pada header program tambahkan include berikut.

(41)

h) Sebelum melakukan kompilasi, lakukan seting berikut untuk pertama

kali saja. Pilih Project >> Configure. Pastikan pada tab C Compiler

nama chip dan clock telah sesuai dengan IC yang terpasang pada

board. Dan pada tab After Make pilih Program the Chip. Lalu tekan

tombol OK. Pilih Settings >> Programmer, pilih Kanda System

STK200+/300 untuk AVR Chip.Programmer Type. Lalu tekan tombol OK.

i) Secara bertahap anda dapat melakukan check syntax, compile, dan

make. Atau langsung pilih Project >>Make. Bila tidak ada error maka

akan muncul kotak dialog informasi. Siapkan board, nyalakan suplai

tegangannya, hubungkan kabel download dari PC ke board. Kemudian

tekan tombol Program.

j) Bila tidak ada kesalahan maka pada layar LCD akan ditampilkan tulisan

“Tekan

pushbutton”. Cobalah menekan pushbutton (sebelah kanan), maka pada layer LCD akan ditampilkan tulisan “PB1 ditekan” dan LED menyala. Apabila push-button dilepas maka tampilan layar LCD kembali seperti semula dan LED padam.

(42)

Gambar

Gambar 1.1: Sistem komputer sederhana a) PROCESSOR
Gambar 1.2: contoh beberapa bentuk mikrokontroller ATMEL Kegiatan desain otomasi merupakan kegiatan memetakan sinyal input  menjadi   sinyal   output   berdasarkan   suatu   fungsi   kontrol   agar   bisa  dimanfaatkan   sesuai   kebutuhan
Gambar 1.3: skema mikrokontroller AVR RISC ATMEGA16
Gambar 1.4: tampilan utama CV AVR
+2

Referensi

Dokumen terkait

sains sebagai satu disiplin yang berakar umbi dalam tamadun Islam, yang mempunyai latar belakang sejarah, falsafah, dan pemikiran.  Ada kritikan terhadap Islamisasi sains oleh

Beragamnya tipe ekosistem ini sangat mendukung sebagai habitat satwa maupun flora khususnya berbagai jenis tumbuhan paku-pakuan.Tujuan penelitian ini yaitu untuk

Beberapa ketentuan dalam Peraturan Bupati Kebumen Nomor 47 Tahun 2012 tentang Pelaksanaan dan Pengendalian Kegiatan Anggaran Pendapatan dan Belanja Daerah Tahun

 Komite tidak menyetujui penggunaan Tokoferol (INS. 150d) pada draft regional standard for non-fermented soybean product karena batas maksimum yang diajukan

Pada proyek akhir ini merupakan salah satu cara untuk menambah layanan suatu jaringan lokal intranet di PCR yang berbasis digital dan sebagai media pendistribusian content TV

Video juga merupakan komponen penting dalam distance learning, suatu metode pengajaran yang tidak lagi terikat oleh ruang.Dalam upaya memenuhi kebutuhan peralatan

Permintaan marjinal dan elastisitas permintaan parsial Perusahaan dg 2 produk dan biaya produksi gabungan..

Hasil penelitian menunjukkan bahwa faktor-faktor penyebab kenakalan remaja yang paling dominan di Desa Kemadang, Kecamatan Wonosari, Kabupaten Gunungkidul adalah