bab i input output

31
1. Dasar Teori 1.1. Microcontroler ATmega 16 Mikrokontroler merupakan sebuah system computer yang seluruh atau sebagian besar elemennya dikemas dalam satu chip IC, sehingga sering disebut sebagai single chip mikrokomputer. Mikrokontroler merupakan system computer yang mempunyai satu atau beberapa tugas yang spesifik, berbeda dengan PC (Personal Computer) yang memiliki beberapa fungsi. Perbedaan lainnya adalah perbandingan RAM dan ROM yang sangat berbeda antara computer dengan mikrokontroler. Mikrokontroler merupakan sebuah system mikroprosesor dimana didalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan peralatan Internal lainnya yang sudah sering terhubung dan terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap dipakai sehingga kita tinggal memprogram isi ROM sesuai aturan penggunaan sesuai dengan pabrik yang membuatnya. Teknologi yang digunakan pada mikrokontroler AVR berbeda dengan mikrokontroler seri MCS-SI. AVR berteknologi RISC ( Reduced Instruction Set Computer). Sedangkan seri MCS-SI

Upload: elozelektricalz

Post on 02-Oct-2015

260 views

Category:

Documents


0 download

DESCRIPTION

amazing

TRANSCRIPT

1. Dasar Teori1.1. Microcontroler ATmega 16Mikrokontroler merupakan sebuah system computer yang seluruh atau sebagian besar elemennya dikemas dalam satu chip IC, sehingga sering disebut sebagai single chip mikrokomputer. Mikrokontroler merupakan system computer yang mempunyai satu atau beberapa tugas yang spesifik, berbeda dengan PC (Personal Computer) yang memiliki beberapa fungsi. Perbedaan lainnya adalah perbandingan RAM dan ROM yang sangat berbeda antara computer dengan mikrokontroler. Mikrokontroler merupakan sebuah system mikroprosesor dimana didalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan peralatan Internal lainnya yang sudah sering terhubung dan terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap dipakai sehingga kita tinggal memprogram isi ROM sesuai aturan penggunaan sesuai dengan pabrik yang membuatnya.Teknologi yang digunakan pada mikrokontroler AVR berbeda dengan mikrokontroler seri MCS-SI. AVR berteknologi RISC ( Reduced Instruction Set Computer). Sedangkan seri MCS-SI berteknologi CISC (Complex Instruction Set Computer). Mikrokontroler AVR dapat dikelompokkan menjadi empat kelas yaitu keluargaa ATtiny, keluarga ATgosxx, keluarga ATmega, dan keluarga AT89RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memory. Kelengkapan pheripheral dan fungsi-fungsi tambahan yang dimiliki. AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal daneksternal, serial UART, programmable Watchdog Timer, dan mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable Flash on-chip yang mengijinkan memori program untuk deprogram ulang dalam system menggunakan hubungan serial SPI. ATMega16. ATMega16 mempunyai through put mendekati 1 MIPS per MHz membuat disainer system untuk mengoptimasi konsumsi daya versus kecepatan proses. ATMega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf xmewakili nama huruf dari port sedangkan huruf n mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin Output maka pin port akan berlogika 0. Saat mengubah kondisi port Dari kondisitri-state (DDxn=0, PORTxn=0) kekondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisipull-up enabled (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0).Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, Selama lingkungan impedansi tinggi tidak memperhatikan perbedaan Antara sebuah strong high driver dengan sebuah pull-up. Jika ini Bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari Kondisi input dengan pull-up kekondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisitri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) Sebagai kondisi transisi.

Gambar 1.1 Pin-Out ATmega16Konfigurasi Pin ATmega 16 dengan kemasan 40 pin DIP (Dual Pin Package) dapat dilihat seprti gambar diatas. Untuk lebih jelasnya berikut ini akan dijabarkan secara rinci masing-masing fungsi pin tersebut.1. VCC : sebagai inputan catu daya/power2. GND : Meruapakan Pin Ground3. Port A (PA0.PA7) : merupakan pin input/output dan pin inputan ADC4. Port B (PB0.PB7) : Merupakan pin input/output dua arah dan merupakan pin yang memiliki fungsi khusus.

Tabel 1.1. Port B dan FungsinyaPINFungsi Khusus

PB7SCK ( SPI bus serial Clock)

PB6MISO (SPI bus Master input/slave output)

PB5MOSI (SPI bus master output/slave input

PB4SS (SPI Slave select input)

PB3AIN I (Analog Comparator Negative input)

PB2AIN O (Analog comparator Posiyif Input)

PB1TI (Timer counter I external counter input)

PB0TOT I (Timer Counter external Counter Input)XCK (USART external clock input/output)

5. Port C (PC0.PC7) : merupakan pin input output dua arah dan pin fungsi khusunya Tabel 1.2. Port C dan FungsinyaPINFungsi Khusus

PC7TOSC 2 ( Timer osilator pin 2)

PC6TOSC 1 (Tomer osilator pin 1)

PC5TD I (JTAG tes data In)

PC4TD O (JTAG tes data Out)

PC3TMS (JTAG Tes Mode Select)

PC2TCK (JTAG Tes Clock)

PC1SDA ( Two Line serial bus data input/output line)

PC0SCL (Two Line serial bus Line Clock line)

6. Port D (PD0.PD7) memiliki pin input/output dua arah dan memiliki fungsi khusus.

Tabel 1.3. Port D dan FungsinyaPINFungsi Khusus

PD7OC 2 (Timer/Counter 2 output compare match output

PD6ICP (Timer/Counter 2 input capture pin)

PD5OCI A (timer/counter 1 output compare A match output)

PD4OCI B (timer/counter 1 output compare B Match output)

PD3INT I (external interrupt I input)

PD2INT O (external interrupt O input?

PD1TXD (USART Output pin)

PD0RXD (USART input pin)

7. Reset : pin ini digunakan untuk mereset ATmega 168. XTAL 1 dan XTAL 2 merupakan pin untuk input clock eksternal9. ACC merupakan pin input untuk tegangan ADC10. AREF merupakan pin input untuk tegangan referensi ADC

2. Tujuan Percobaan2.1. Percobaan Ia. Dapat memahami fungsi dari register-register untuk mengakses port AVR ATmega 16b. Dapat mengakses pada port mikrokontroler AVR ATmega 16c. Dapat menggunakan aplikasi codevisionAVR untuk mendisain programd. Dapat mendownload program ke dalam chip AVR ATmega 162.2. Percobaan IIa. Dapat memahami fungsi dari register-register untuk mengakses port AVR ATmega 16b. Dapat mengakses pada port mikrokontroler AVR ATmega 16c. Dapat menggunakan aplikasi codevisionAVR untuk mendisain programd. Dapat mendownload program ke dalam chip AVR ATmega 162.3. Percobaan IIIa. Dapat memahami fungsi dari register-register pengendali interupsi eksternalb. Dapat mengoperasikan interupsi eksternal pada mikrokontroler AVR ATmega162.4. Percobaan IVa. Dapat memahami fungsi dari register-register pengendali interupsi eksternalb. Dapat mengoperasikan interupsi eksternal pada mikrokontroler AVR ATmega162.5. Percobaan Va. Dapat memahami fungsi dari register-register pengendali timerb. Dapat menghasilkan waktu tunda menggunakan timerc. Menerapkan penggunaan Timer pada program yang dibuat2.6. Percobaan VIa. Dapat memahami fungsi dari register-register pengendali timerb. Dapat menghasilkan waktu tunda menggunakan timerc. Menerapkan penggunaan Timer pada program yang dibuat

3. Metode Percobaan3.1. Waktu Dan TempatAdapun waktu dan tempat pelaksanaan Praktikum MikroprosesorHari, Tanggal: Rabu, 15 Oktober 2014Pukul: 09.00 selesai( WITA )Tempat: Laboratorium Elektronika F. Teknik UHO

3.2. Alat Dan Bahan1. PC yang dilengkapidengan software CodevisionAVR.2. Development Board AVR ATmega16.3. Downloader.4. Adaptor 9 12 volt.

3.3. Prosedur Percobaan3.3.1. Percobaan I1. Menggambar skema rangkaian percobaan.2. Membuat sebuah project baru Menggunakan aplikasi CodevisionAVR dengan cara membuka aplikasi CodevisionAVR kemudian klik menu File | New.

3. Memilih Project, lalu klik tombol OK.

4. Kemudian klik tombol Yes untuk menggunakan fasilitas CodevisionAVR.

5. Melakukan konfigurasi berikut pada CodevisionAVR. Tab Chip: Chip : ATmega16 Clock : 11,059200 MHz Tab Port: Port C :pada kolom Data Direction bit 0 di-set sebagai output, pada kolom Pull Up/Output Value bit 0 s/d 7 di-set 1.6. Pada jendela CodewizardAVR, klik menu Program | Generate, Save and Exit untuk menyimpan project.

7. Mengetikkankode program berikutinipadabagian while (1).PORTC.0=0;8. Melakukan proses kompilasi program dengan cara mengklik tombol Compile, kemudian klik tombol Build.

9. Setelah itu akan muncul jendela konfigurasi berikut.

10. Hubungkan PC dengan Development Board menggunakan Downloader.11. Download program yang telah di compile kedalam chip.12. Lakukan pengamatan pada nyala lampu LED.

2.3.2. Percobaan 21. Menggambar skema rangkaian percobaan.2. Membuat sebuah project baru Menggunakan aplikasi CodevisionAVR dengan cara membuka aplikasi CodevisionAVR kemudian klik menu File | New.

4. Memilih Project, lalu klik tombol OK.

5. Kemudian klik tombol Yes untuk menggunakan fasilitas CodevisionAVR.

5. Melakukan konfigurasi berikut pada CodevisionAVR. Tab Chip: Chip : ATmega16 Clock : 11,059200 MHz Tab Port: Port C :pada kolom Data Direction bit 0 di-set sebagai output, pada kolom Pull Up/Output Value bit 0 s/d 7 di-set 0.5. Pada jendela CodewizardAVR, klik menu Program | Generate, Save and Exit untuk menyimpan project.

7. Pada Header program, tambahkan kode berikut:#include

8. Pada program utama, ketikkan kode berikut:

PORTC=0x00;delay_ms(500);PORTC=0xFF;delay_ms(800);

9. Melakukan proses kompilasi program dengan cara mengklik tombol Compile, kemudian klik tombol Build.10. Apabila tidak tejadi kesalahan maka akan muncul jendela konfigurasi sebagai berikut.

11. Hubungkan PC dengan Development Board menggunakan Downloader.12. Download program yang telah di compile kedalam chip.13. Lakukan pengamatan pada nyala lampu LED.14. Sebagai tugas, modifikasilah program diatas sehingga nyala lampu LED tampak bergerak/bergerak (running LED)15. Setelah itu Build program atau menekan tombol kombinasi Shift+F916. Bila tidak ada error, download program ke dalam chip.

3.3.3. Percobaan 31. Menggambar skema rangkaian percobaan.

2. Membuat sebuah project baru Menggunakan aplikasi CodevisionAVR dengan cara membuka aplikasi CodevisionAVR kemudian klik menu File | New.

6. Memilih Project, lalu klik tombol OK.

7. Kemudian klik tombol Yes untuk menggunakan fasilitas CodevisionAVR.

5. Melakukan konfigurasi berikut pada CodevisionAVR.

Tab Chip: Chip : ATmega16 Clock : 11,059200 MHz Tab Port: Port C :pada kolom Data Direction bit 0 di-set sebagai output, pada kolom Pull Up/Output Value bit 0 s/d 7 di-set 0.8. Pada jendela CodewizardAVR, klik menu Program | Generate, Save and Exit untuk menyimpan project.

7. Pada Header program, tambahkan kode berikut:

#include

8. Pada program utama, ketikkan kode berikut:

PORTD=0x00;delay_ms(500);PORTD=0xFF;9. Melakukan proses kompilasi program dengan cara mengklik tombol Compile, kemudian klik tombol Build.

10. Apabila tidak tejadi kesalahan maka akan muncul jendela konfigurasi sebagai berikut.

11. Hubungkan PC dengan Development Board menggunakan Downloader.12. Download program yang telah di compile kedalam chip.13. Lakukan pengamatan pada nyala lampu LED.

3.3.4. Percobaan 41. Membuat rangkaian seperti pada gambara berikut.

Gambar 2.1. Skema rangkaian Interupsi Eksternal2. Membuat sebuah project baru menggunakan aplikasi CodevisionAVR dengan cara membuka aplikasi CodevisionAVR kemudian mengklik menu File kemudian mengklik New.

3. Memilih project, lalu mengklik tombol OK.

4. Kemudian mengklik tombol Yes untuk menggunakan fasilitas CodewizardAVR.

5. Melakukan konfigurasi berikut pada CodewizardAVR Tab CHIP: Chip : Atmega16 Clock : 11,059200 Tab Ports: Port C : pada kolom Data Direction bit 0 s/d bit 7di-set sebagai Output, pada kolom Pull Up/Output Value bit 0 s/d bit 7 di-set 0. Tab External IRQ : Centang pada checkbox INT0 Pilih mode Rising Edge6. Pada jendela CodewizardAVR, mengklik menu Program kemudian mengkik Generate, Save and Exit untuk menyimpan project.

7. Pada header program, menambahkan kode berikut.#include 8. Menambahkan kode program berikut pada fungsi ext_int0_isr(void)PORTC=0b00000000;delay_ms(500);PORTC=0b11111111;delay_ms(500);PORTC=0b00000000;delay_ms(500);PORTC=0b11111111;

9. Melakukan proses kompilasi program dengan cara mengklik tombol Compile, kemudian mengklik tombol Build.

10. Setelah itu akan muncul jendela konfirmasi sebagai berikut.

11. menghubungkan PC dengan Deploment Board menggunakan Downloader.12. Mendownload program yang telah di Compile kedalam chip.13. Menekan tombol push-button 1 dan lakukan pengamatan.

3.3.5. Percobaan 5Adapun prosedur percobaan pada percobaan ini adalah sebagai berikut.14. Membuat rangkaian seperti padagambar berikut.

15. Mula-mula mencari terlebih dahulu nilai TCNT dengan menggunakan rumus:

Keterangan: 0FFFF (nilai maksimum timer) XTAL (nilai crystal yang digunakan) Prescaler (gunakan 1024) Waktu (waktu yang diinginkan)16. Membuat sebuah project baru menggunakan aplikasi CodevisionAVR dengan cara membuka aplikasi CodevisionAVR kemudian mengklik menu File kemudian mengklik New.

17. Memilih project, lalu mengklik tombol OK.

18. Kemudian mengklik tombol Yes untuk menggunakan fasilitas CodewizardAVR.

Melakukan konfigurasi berikut pada CodewizardAVR Tab CHIP: Chip : Atmega16 Clock : 11,059200 Tab Ports: Port C : pada kolom Data Direction bit 0 s/d bit 7di-set sebagai Output, pada kolom Pull Up/Output Value bit 0 s/d bit 7 di-set 0. Tab Timers : Pilih tab Timer 1 dan melakukan konfigurasi berikut: Clock Value: 10800 KHZ Interrupt on: Centang pada Timer 1 Overflow Value: D5D0h19. Pada jendela CodewizardAVR, mengklik menu Program kemudian mengkik Generate, Save and Exit untuk menyimpan project.

20. Pada header program, menambahkan kode berikut.bit detik;21. Menambahkan kode program berikut pada fungsi timer 1_ovf_isr(void)if(detik==1){PORTC=0b11111111;detik=0;}else{PORTC=0b00000000;detik=1;}22. Melakukan proses kompilasi program dengan cara mengklik tombol Compile, kemudian mengklik tombol Build.

23. Setelah itu akan muncul jendela konfirmasi sebagai berikut.

24. Menghubungkan PC dengan Deploment Board menggunakan Downloader.25. Mendownload program yang telah di Compile kedalam chip.26. Mekukan pengamatan pada lampu LED.