pengetahuan dasar penggunaan timer dan counter microcontroller avr
TRANSCRIPT
INDUSTRIAL MICROCONTROLLERETN 504
TAJUK: Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
DIPLOMA TEKNOLOGI
ELEKTRONIKSEMESTER 5
APA MAKSUD AVR ?•Automatic Voltage
Regulator, AVR•Pengatur Voltan Automatik,
AVR
PENGENALAN TIMER & COUNTER• Timer & Counter merupakan salah satu iaitu pengawal mikro AVR
yang memiliki fungsi terhadap waktu. Fungsi pewaktu yang dimaksud disini adalah penentuan program tersebut dijalankan, tidak hanya itu saja fungsi timer yang lainnya adalah PWM, ADC, dan Oscillator. Prinsip kerja timer dengan cara membagi frekuensi (prescaler) pada clock yang terdapat pada pengawal mikro sehingga timer dapat berjalan sesuai dengan frekuensi yang di kehendaki.
• Timer merupakan fungsi waktu yang sumber clocknya berasal dari clock internal. Sedangkan counter merupakan fungsi perhitungan yang sumber clocknya berasal dari external pengawal mikro. Salah satu contoh penggunaan fungsi timer iaitu pada jam digital yang sumber clocknya boleh menggunakan crystal oscillator dan contoh penggunaan counter pada penghitung barang pada sumber clocknya berasal dari sensor tersebut.
APA MAKSUD PWM ?
• PULSE WIDE MODULATION,PWM
-PULSE WIDE MODULATION BERFUNGSI UNTUK KECEPATAN PUTARAN MOTOR DC.
• Pada pengawal mikro ATMEGA 16 memiliki 3 buah timer iaitu timer 0 (8bit), timer1 (16bit), dan timer 2 (8bit). Untuk mengenai register lengkapnya boleh dibaca pada data sheet. Namun yang akan menunjukkan pada tulisan kali ini hanya timer 0(8bit) dan timer1 (16 bit) sahaja.
PIC16F877A mempunyai 3 buah TimersTimer 0 - 8 bit
boleh digunakan sebagai Timer/counterTimer 1 – 16 bit
boleh digunakan sebagai Timer/counterTimer 2 – 8 bit Timer
boleh digunakan sebagai PWM time-base untuk memasuki PWM mode daripada CCP module.
Timers
• TIMER 0 (8 Bit)
TIMER 1 (16 BIT)
BLOCK DIAGRAM
CPU
On-chip RAM
On-chip ROM for program code
4 I/O Ports
Timer 0
Serial PortOSC
Interrupt Control
External interrupts
Timer 1
Timer/Counter
Bus Control
TxD RxDP0 P1 P2 P3
Address/Data
Counter Inputs
PIN TIMER /COUNTER PADA AVR
Pin Timer / Counter Pada Atmega8535
TUJUAN PEMBAHASAN TIMER DAN COUNTER AVR :
• 1. Melaksanakan tugas tertentu secara berulang (mode normal).• 2. Menghitung panjang pulsa (input capture)• 3. Menghitung banyaknya sebagai counter (event).• 4. Mengendalikan kecepatan motor DC (pulse wide modulation /PWM).• 5. Membuat penundaan waktu/masa (delay).• 6. Penjana isyarat (Signal generator) .• Komponen utama Timer/Counter adalah sebuah register yang
tugasnya hanya berhitung dari 0 sampai batas maximumnya, register ini pada AVR disebut register TCNT . Misalnya sebuah register TCNT pada AVR adalah 8 bit, maka nilai maksimunya adalah 255.
REGISTER YANG DIGUNAKAN UNTUK MENDUKUNG OPERASI TIMER COUNTER PADA AVR :
• Register TCNT = register pencacah dari 0 sampai nilai maximum yang kita tentukan.• Register TCCR =Untuk pengaturan mode operasi Timer/Counter• Register TIMSK =Untuk memilih Timer / Counter mana yang aktif.• Register TIFR = Untuk mengetahui adanya interupsi akibat operasi Counter dan Timer .• Register OC (output compare) = untuk menyimpan nilai pembanding dengan nilai pada
register TCNT.• TCNT 0 = Register Timer 1• TCNT 1 = Register Timer 0• Ttimer 0 = Periode Timer 0• Ttimer 1 =Periode Timer 1• Tosc = Periode Clock• Fosc = Frekuensi Crystall Clock• N = Prescaler (1, 8, 64, 256, 1024)• Jadi kalau kita ingin melakukan pengaturan (men set up ) Timer/Counter kita fokuskan ke
register TCCRn . n adalah nomer timer , misal jika kita ingin menggunakan Timer 0 maka yg kita atur adalah TCCR0,timer 1 TCCR1A dan TCCR1B.
TMOD REGISTER:
• Gate : When set, timer only runs while INT(0,1) is high.• C/T : Counter/Timer select bit.• M1 : Mode bit 1.• M0 : Mode bit 0.
TCON REGISTER:
• TF1: Timer 1 overflow flag.• TR1: Timer 1 run control bit.• TF0: Timer 0 overflag.• TR0: Timer 0 run control bit.• IE1: External interrupt 1 edge flag.• IT1: External interrupt 1 type flag.• IE0: External interrupt 0 edge flag.• IT0: External interrupt 0 type flag.
APA BERFUNGSI SEBAGAI TIMER DAN APA BERFUNGSI SEBAGAI COUNTER?
• Ketika sumber clock dari system clock (kristal) maka ialah berfungsi sebagai timer.• Ketika sumber clock dari external clock maka ialah berfungsi sebagai counter.• Pemilihan sumber clock ada pada bit CS pada register TCCR.
TIMER :
MODE TIMER O UNTUK MENENTUKAN MODE TIMER O DI LAKUKAN PADA BIT WGM-OO DAN
WGM-OI PADA REGISTER CONTROL (TCCRO) SEPERTI PADA JADUAL DIBAWAH INI.
1. MODE NORMAL MEMILIH MODE INI DENGAN CARA DIPROGRAM SEMUA BIT WGM OI =O DAN
WGMOO=O, PADA REGISTER TCCR
• Digunakan untuk melaksanakan pekerjaan yang berulang dgn interval tertentu juga boleh digunakan untuk membuat delay. Nilai TCNT akan terus menerus mengalami kenaikan tiap di clock oleh simber clok yg sudah dipilih. Jika sudah mencapai maksimumnya nilai TCNT akan kembali 0 dan mengeset bit Flag TOV0 di register TIFR. Waktu interval dapat dirubah rubah dengan merubah nilai maximum TCNT. Makin kecil nilai maximum TCNT makin kecil pula waktu intervalnya. Contoh sebagai gambaran saja , jika periode clock yg di berikan ke timer 1 detik, maka dgn nilai max TCNT diset 255 , interval timer 1 x255 = 255 detik. untuk nilai max TCNT di set 10 . Maka periode interval 1×10 = 10 detik.
Untuk mode normal penggunaanya cukup mudah, contohnya anda boleh baca disini.• Pada mode normal selain boleh diprogram sebagai timer juga sebagai counter,
dgn cara merubah sumber clocknya menggunakan triger di pin TO . Pengantian sumber clock melalui set bit CSO2:CSOl:CSOO pada register TCCRO seperti tampak pada gambar dibawah ini ( untuk lebih jelasnya lihat penjelasan no 3. mode normal sbg counter )
CARA PROGRAM PILIHAN SEBAGAI TIMER ATAU COUNTER PADA CODEWIZARD DI CODEVISION
PILIHAN SCALA CLOCK CS02:CSO1:CSOO UNTUK XTAL 11.059.200HZ PD CODEVISION SUDAH BERUPA PILIHAN
FREKWENSI CLOCK TIMER:
2. MODE INPUT CAPTURE PADA TIMER 1 .
• Input capture digunakan untuk menghitung periode pulsa yang pencetus pin ICP1. Setiap kali Pin ICP1 di mencetuskan oleh perubahan isyarat (rising ) akan penyalinan nilai register 16 bit TCNT ke register 16 bit ICR1 (ICR1H dan ICR1L). perbedaan dengan timer 0 adalah nilai TCNT \sambungan bergulir tanpa ada mula dan berhenti timer tetapi timer0 ada mula dan berhenti timer.• oleh kerana itu nilai register ICR1 harus segera dibaca
sebelum di overwrite oleh data TCNT yg baru ketika terjadi perubahan isyarat berikutnya.
3. MODE NORMAL SEBAGAI COUNTER
Digunakan untuk menghitung jumlah event yang mentriger pin T0 (portB.0) jika kita menggunakan timer0 atau T1 (portB.1) pada timer1.
4. Mode PWM , Pulse Wide Modulation.• Mode PWM ada dua iaitu PWM phase correct dan Fast PWM. perbedananya
iaitu pada PWM phase corect counter (TCNT) bergulir/mencacah naik dan turun . sedangkan pada Fast PWM counter (TCNT) hanya bergulir naik saja .• Untuk menjadikan Timer counter mode PWM phase correct iaitu dengan
Cara diprogram bit WGM01=1 dan bit WGM0 =0 , pada register TCCR.
• Salah satu kegunaan isyarat PWM antara lain untuk mengendalikan Kecepatan putaran Motor DC. Gambar berikut ini menunjukan berbagai bentuk PWM dan efek terhadap kecepatan Motor DC yang berbeda sesuai bentuk pulsa PWM.
• Cara pembentukan isyarat Fast (kelajuan) PWM • Nilai pada register Counter TCNT akan terus menerus naik sampai nilai
maximum, lalu kembali ke 0. begitu seterusnya selama isyarat clock diberikan kepada timer. Nilai OCR diprogram untuk mengatur pembentukan PWM.• saat nilai TCNT > nilai OCR maka pin OC mengeluarkan isyarat HIGH ,• saat nilai TCNT < nilai OCR maka pin OC mengeluarkan isyarat LOW.• Gambar berikut menunjukan tiga buah nilai OCR yang berbeda ,yang
menghasilkan isyarat output PWM berbeda pula pada pin OC.
CARA MEMBUAT PWM PADA CODEWIZARD DI CODEVISION SEPERTI PADA GAMBAR BERIKUT: