Eksperimen Mikrokontroler (timer)

  • Uploaded by: Zainal Abidin
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Eksperimen Mikrokontroler (timer) as PDF for free.

More details

  • Words: 1,254
  • Pages: 6
Eksperimen Mikrokontroler Timer Zainal Abidin1) 1)

Divisi Sistem Mikrokontroler, PLATOGEOSAINS Meteorologi, FITB – ITB – Indonesia

Sabtu, 14 November 2009

Eksperimen

mikrokontroler

merupakan

usaha

untuk

memahami

sistem

kerja

mikrokontroler dengan metode eksperimen. Metode eksperimen merupakan suatu metode pembelajaran yang didasarkan atas hasil-hasil percobaan (sendiri). Hal ini adalah perwujudan dari kenyataan bahwa pemahaman atas konsep/teori belum mencukupi jika belum diuji kebenarannya lewat eksperimen laboratorium hingga lapangan. Harapannya adalah pemahaman yang menyeluruh dapat dicapai sehingga kemampuan dalam merancang sistem mikrokontroler meningkat. Mikrokontroler adalah suatu rangkaian terintegrasi (chip) yang berfungsi mengendalikan masukan (input) dan keluaran (output) yang diberikan oleh seorang programmer melalui suatu skrip. Mikrokontroler adalah mikroprosesor yang digunakan khusus untuk instrumentasi dan kendali. Salah satu contohnya adalah PLC (Programmable Logic Controller) yang digunakan pada kendali motor. Suatu mikrokontroler terdiri dari beberapa piranti dengan fungsi tertentu. Piranti ini dapat diakses dari pin-pin MCU (MicroController Unit) tersebut. Salah satu piranti yang akan dibahas pada artikel ini adalah timer. Timer adalah piranti yang berfungsi untuk menghitung waktu. MCU jenis AVR (Alf and Vegard’s Risc) digunakan pada eksperimen ini, karena menggunakan teknologi terbaru sehingga lebih cepat dalam mengeksekusi setiap instruksi yang diberikan jika dibandingkan dengan jenis MCS51. Secara umum, AVR dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, AT90Sxx, ATMega dan AT86RFxx. ATMEGA 8535 memiliki tiga buah timer, yaitu Timer 0 (8 bit), Timer 1 (16 bit) dan Timer 2 (8 bit). Timer 0 dan Timer 1 dapat diakses dari pin PB0 dan PB1. Jumlah waktu yang telah terlampaui tiap selang waktu tertentu ditampung pada suatu register, yaitu TCNT0, TCNT1L, TCNT1H dan TCNT2. 8 bit dan 16 bit mewakili jumlah data yang dapat ditampung oleh register penampungnya. Timer 8 bit PLATOGEOSAINS | Eksperimen Mikrokontroler

1

akan menghasilkan output berupa bilangan desimal dari 0 - (28-1), sedangkan 16 bit dari 0 - (216-1). ATMEGA 8535 memiliki arsitektur RISC (Reduced Instruction Set Computing) 8 bit, dimana semua instruksi dikemas dalam kode 16-bit dan sebagian besar instruksi dieksekusi dalam satu siklus clock. Setiap register berukuran 8 bit. Hal ini dapat menjelaskan kenapa Timer 1 mempunyai dua buah register penampung, yaitu TCNT1L dan TCNT1H. TCNT1L menampung jumlah waktu 8 bit pertama, sedangkan TCNT1H untuk 8 bit kedua. Sehingga total jumlah waktu yang dapat ditampung oleh Timer 1 adalah 216 = 65536 data. Sebagai langkah awal dalam memahami sesuatu, sebaiknya dimulai dari sistem yang paling sederhana. Oleh karena itu, eksperimen ini dimulai dengan Timer 0 yang hanya mempunyai satu register penampung, yaitu TCNT0. Pengaturan Timer 0 diatur oleh TCCR0 (Timer/Counter Control Register 0) terutama bit 0–2 yang mengatur sumber clock (Clock Select) Timer, yaitu: CS00, CS01 da CS02. Bit 3–7 harus dalam kondisi Low (bernilai 0). Tabel 1 Konfigurasi Bit Timer 0 CS02

CS01

CS00

Deskripsi

0

0

0

Tidak ada sumber clock (timer mati)

0

0

1

Frekuensi sumber clock =

0 0 1 1

1 1 0 0

0 1 0 1

Frekuensi sumber clock = Frekuensi sumber clock = Frekuensi sumber clock = Frekuensi sumber clock =

       

    

Kompiler yang digunakan adalah Code Vision AVR 2.03.4 dengan downloader STK 200. Kompiler ini menggunakan bahasa C dan setiap pengaturan nilai register harus dalam bentuk heksadesimal. Misalkan sumber clock yang diinginkan berfrekuensi sama dengan frekuensi XTAL, maka CS02 = 0, CS01 = 0 dan CS00 = 1. Sehingga, TCCR0 = 00000001b dan dalam bentuk heksadesimal TCCR0 = 001.

PLATOGEOSAINS | Eksperimen Mikrokontroler

2

Pembagi frekuensi XTAL (1, 8, 64, 256 dan 1024) disebut dengan prescaler. Prescaler ini menentukan periode per siklus clock. Jika digunakan XTAL dengan frekuensi 4 MHz dan prescaler = 1, maka periode per siklus clock =

 .. 

s = 0.25 µs. Sehingga konversi timer

dirumuskan sebagai berikut: Waktu = (TCNT0  0.25) µs Jika diperoleh TCNT0 = 255, maka waktu yang sudah terlampui = 255  0.25 µs = 63.75 µs. Seperti yang sudah disampaikan di paragraf sebelumnya, bahwa timer 0 hanya mampu menampung 256 data, dengan rentang 0 – 255. Hal ini menyebabkan timer akan me-reset sendiri jika waktu > 63.75 µs. Sehingga 256 ditampilkan 0, 257 ditampilkan 1 dan seterusnya. Oleh karena itu, MCU AVR menyediakan fasilitas interupsi timer 0 overflow. Sesuai dengan namanya, interupsi ini dipicu oleh overflow TCNT0. Setiap TCNT0 mencapai nilai batas = 255, program utama berhenti dan melompat ke sub-rutin interrupt [TIM0_OVF] void timer0_ovf_isr(void). Setelah itu program utama akan berjalan kembali. Supaya interupsi ini dapat berjalan, sisipi konfigurasi awal dengan baris #asm ("sei"). Sedikit trik dapat membantu dalam memperoleh waktu > 63.75 µs, yaitu dengan menambah nilai suatu variabel (misalnya count) setiap terjadi interupsi timer 0 overflow. Variabel tersebut sebaiknya dapat menampung sebanyak mungkin data, mengingat batas TCNT0 = 255 yang artinya akan banyak terjadi reset untuk waktu yang lama. Tipe data yang support dengan kompiler CodeVisionAVR C adalah sebagai berikut: Tabel 2 Tipe Data

PLATOGEOSAINS | Eksperimen Mikrokontroler

3

Berdasarkan tabel diatas, unsigned long int merupakan tipe data dengan rentang terpanjang untuk keluaran bilangan bulat. Sehingga pada skrip count diatur bertipe unsigned long int. Struktur skrip yang akan diuji adalah sebagai berikut: #include <mega8535.h> #include <stdio.h> unsigned long int count = 0; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; } void main(void) { unsigned int i; ………………. ………………. TCCR0=0x01; TCNT0=0x00; OCR0=0x00; ………………. UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; ………………. #asm("sei") while (1) { for(i=0;;i++) { printf("%d_%u_%d\r\n",i,count,TCNT0); }; }; } Setelah skrip tersebut di-compile dan di-upload ke ATMEGA 8535, output dapat dipantau dengan terminal RS232, seperti: hyperterminal, terminal dari BASCOMAVR ataupun terminal dari CodeVisionAVR C. Penulis memilih menggunakan yang kedua, karena fiturnya memungkinkan penyimpanan display window ke teks (*.txt) lebih mudah dan menyenangkan.

PLATOGEOSAINS | Eksperimen Mikrokontroler

4

Display data ke terminal dikendalikan oleh perintah printf("%d_%u_%d\r\n",i,count,TCNT0);. Baris tersebut bertujuan menampilkan variabel i, count dan TCNT0 ke terminal dengan tipe data i adalah integer, count adalah unsigned int dan TCNT0 adalah integer. Penulis masih belum menemukan format untuk menampilkan variabel bertipe unsigned long int ke terminal, sehingga digunakan format yang paling mendekati yaitu unsigned int. Sehingga, sementara ini count hanya dapat menampung hingga 65536. Berikut merupakan hasil monitoring pada terminal: 0_0_106 1_72_134 ……….............. ……….............. 516_65332_133 517_65462_134 Berdasarkan hasil

518_56_135 1026_15_234 519_161_232 1027_129_230 ………………… ………………… ………………… ………………… 1024_65275_230 1504_65324_229 1025_65413_233 1505_65462_232 eksperimen ini, dapat dihitung selang waktu tiap satu siklus clock. Seperti

yang sudah disampaikan sebelumnya bahwa setiap TCNT0 melampaui nilai 255, maka secara otomatis mikrokontroler me-reset TCNT0 hingga bernilai 0 dan nilai count bertambah 1. Tabel 3 Ilustrasi Overflow Timer 0 Timer 0 0 255 256 257 511 512 513 767

count 0 0 1 1 1 2 2 2

TCNT0 0 255 0 1 255 0 1 255

Timer 0 pada tabel diatas dapat dijabarkan menjadi: 0

= (256*0) + 0

255

= (256*0) + 255

256

= (256*1) + 0

257

= (256*1) + 1

511

= (256*1) + 255 PLATOGEOSAINS | Eksperimen Mikrokontroler

5

512

= (256*2) + 0

513

= (256*2) + 1

767

= (256*2) + 255

Sehingga konversi waktu berubah menjadi: Waktu = ( [(256*count)+TCNT0]  0.25) µs Tabel 4 Periode Timer 0 Kolom 1 2 3

i 0 516 518 1024 1026 1504

ti (µs) 27 4181281 3618 4177658 1019 4180793

ti+1 (µs) 4642 4189602 10362 4186490 8314 4189626

∆t (µs) 4615 8320 6744 8833 7295 8833

Berdasarkan hasil eksperimen diperoleh informasi bahwa waktu yang diperlukan mikrokontroler untuk menyelesaikan satu siklus clock adalah 4.6 ms – 8.8 ms (dengan setting prescaler = 1). Selain itu, timer 0 hanya dapat menghitung waktu sampai dengan 4.18 s.

Antarmuka MCU-PC (Personal Computer) dapat dibuat sendiri dengan software Delphi dan komponen comport (http://pekalongan.110mb.com/data/comport.pdf).

Bersambung ……

PLATOGEOSAINS | Eksperimen Mikrokontroler

6

Related Documents


More Documents from "Himatekom Politeknik Madiun"