03 - A-2 - Iman Sianturi - 118130035 - EL2209 - Muhammad Masyhuda [PDF]

  • Author / Uploaded
  • Iman
  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Percobaan III Timer And Counter Iman Sianturi (118130035) Asisten : M.Masyhuda (13117077) Tanggal Percobaan : 17/04/2021 EL 2209_Praktikum Sistem Mikroprosesor Laboratorium Teknik Elektro Institut Teknologi Sumatera



macam fungsi, yaitu: Abstrak— Modul III Praktikum Sistem Mikroprosesor yaitu timer dan counter praktikan akan melakukan 2 percobaan yaitu pertama penggunaan 8 bit timer/counter0 untuk mengendalikan LED dan yang kedua yaitu penggunaan 16 bit timer/counter sebagai PWM untuki mengendalikan kecepatan putar motor DC.Mode operasi timer/counter dibedakan menjadi beberapa bagian yaitu mode normal,mode CTC,mode fast PWM dan mode phase correct PWM. Kata Kunci—Timer/Counter



I. PENDAHULUAN Mikrokontroler ATmega8535 dilengkapi timer/counter yang berfungsi sebagai pewaktuan/pencacahan.Timer/counter dibagi menjadi 3 bagian yaitu timer/counter 0,timer/counter 1,dan timer/counter 2.Secara umum fitur timer/counter dsari mikrokontroler ATmega8535 dapat digunakan sebagai timer/delay time,dan sebagai counter. Adapun tujuan dari praktikum modul III ini,yaitu : ● Praktikan mampu membuat aplikasi timer/counter pada AVR dengan menggunakan Bahasa pemograman C. II. LANDASAN TEORETIS TIMER/COUNTER Mikrokontroler AVR ATMEGA8535 memiliki dua 8-bit Timer/Counter (Timer/Counter0 dan Timer/Counter2) dan satu 16-bit Timer/Counter (Timer/Counter1). Timer/counter dalam ATmega8535 ada 3 yaitu: Timer/counter 0, Timer/counter 1,imer/counter 2 Interrupt timer berasal dari dua sumber yaitu: pertama Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai 255 untuk timer 8 bit untuk timer 8 bit dan 65535 untuk timer 16 bit. dan 65535 untuk timer 16 bit, kedua Compare match interrupt, dimana interrupt terjadi jika nilai OCR sama dengan TCNTn. Secara umum fitur Timer/Counter Timer/Counter mikrokontroler mikrokontroler ATmega8535 ATmega8535 dapat digunakan untuk berbagai



1.Timer/delay time Pada dasarnya ketika Timer/Counter difungsikan sebagai Timer, sistem hanya menghitung pulsa clock. Frekuensi pulsa cl hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung tersebut yang dihitung tersebut bisa sama dengan frekuensi frekuensi kristal kristal yang digunakan digunakan atau dapat diperlambat diperlambat menggunakan prescaler dengan faktor 8, 64, 256, atau 1024. 2.Counter Secara prinsip, memfungsikan Timer/Counter sebagai Counter sama dengan fungsi sebagai Timer akan tetapi sumber clock bukan berasal dari frekuensi kristal, tetapi input dari kaki Tn. Dengan memanfaatkan counter naik, maka bisa diberikan nilai TCNT yang sesuai dengan rumus berikut: TCNT = (1+FFH) – jumlah counter Sehingga jika diinginkan membuat counter 5, maka nilai TCNT adalah FBH Timer/Counter mengalami overflow pada saat hitungan Timer/Counter (TCNT0/TCNT1/TCNT2) mencapai maksimum (FFH untuk 8-bit atau FFFFH untuk 16-bit Timer/Counter) dan kembali ke hitungan 00H atau 0000H. Pada mode operasi normal Timer/Counter Overflow Flag (TOV0/TOV1/TOV2) akan otomatis berlogika ‘1’ pada saat Timer/Counter Register menjadi nol. Bit Timer/Counter Overflow Flag dapat dibersihkan (menjadi berlogika ‘0’) dengan memberikan nilai logika ‘1’ pada flag tersebut. Mode operasi Timer/Counter0 antara lain mode normal (sebagai timer/counter biasa), mode CTC (Clear Timer on Compare Match), mode Fast PWM (singleslope), dan mode Phase Correct PWM (dual slope). Pemilihan mode operasi Timer/Counter0 diatur pada bit WGM01:0 (bit WGM01 DAN WGM00) pada I/O register TCCR0 bit ke 3 dan 6. Untuk mode operasi normal bit WGM01 diberi logika ‘0’ dan WGM00 diberi logika ‘0’. Pemilihan mode Timer/Counter0 yang lebih lengkap terdapat pada datasheet ATMEGA8535 pada bagian 8bit Timer/Counter Register Description (Timer/Counter Control Register – TCCR0). Mode operasi Timer/Counter2 sama dengan Timer/Counter0 yaitu mode normal, mode CTC,



mode Fast PWM, dan mode Phase Correct PWM. Pemilihan mode operasi Timer/Counter2 diatur pada bit WGM21:0 (bit WGM21 DAN WGM20) pada I/O register TCCR2 bit ke 2 dan 6. Untuk mode operasi normal bit WGM21 diberi logika ‘0’ dan WGM20 diberi logika ‘0’. Pemilihan ode Timer/Counter2 yang lebih lengkap terdapat pada datasheet ATMEGA8535 pada bagian 8-bit Timer/Counter Register Description (Timer/Counter Control Register – TCCR2)



Pengaturan sumber clock



Timer/Counter Control Register



Konfigurasi mode operasi



Resolusi PWM untuk mode Phase Correct PWM dapat dipilih 8, 9, atau 10-bit, atau ditentukan nilai ICR1 atau OCR1A. Resolusi minimum yang diperbolehkan sebesar 2-bit (ICR1 atau OCR1A = 0X0003) dan resolusi maksimum sebesar 16bit (ICR1 atau OCR1A = 0XFFFF). Resolusi PWM dapat dihitung dengan menggunakan persamaan berikut, dengan nilai TOP merupakan nilai maksimum untuk hitungan Timer/Counter yaitu sebesar 0X00FF, 0X01FF, atau 0X03FF, atau nilai pada OCR1A atau ICR1. .



Frekuensi output PWM ketika menggunakan Phase Correct PWM dapat dihitung dengan menggunakan persamaan



Dimana N menggunakan nilai prescaler, bernilai 1, 8, 64, 256, atau 1024 .



III. METODOLOGI A. Alat dan Bahan 1. Labtop 2.Software proteus 3.Software CV AVR B. Langkah Kerja 1.Pengunaan 8-Bit Timer/counter0 untuk mengendalikan LED



Jalankan software CV AVR dan masukkan source code program yang terdapat di modul praktikum



Buka Software proteus pada ATmega8535 hubungkan PORTA pada LED



Input file Hex pada ATmega8535



2. Penggunaan 16-bit timer/counter sebagai PWM untuk mengendalikan kecepatan putar motor DC.



Buka software Proteus



Buat rangkaian skematik yang telah ditentukan di modul praktikum



Buka software CV AVR dan masukkan source code program yang terdapat di modul praktikum



Setelah di compile dan build all,jalankan rangkaian yang terdapat di proteus dddengan memasukkan file hex IV. HASIL DAN ANALISIS A. Tugas I : Penggunaan 8-Bit timer/counter 0 untuk mengendalikan LED.



#include unsigned char led=0xfe; void main(void) { // Please write your application code here DDRA=0xff; PORTA=led; TCNT0=0x00; TCCR0=0x05; TIMSK=0x01; TIFR=0x00; #asm ("sei"); while(1) {PORTA=led;} } interrupt [TIM0_OVF] void timer0_overflow(void) { TCNT0 = 0x00; led